Перейти к содержимому

Добавить репозитории в рабочее пространство

В этом руководстве показано, как зарегистрировать рабочую копию Git в рабочем пространстве, переиндексировать её и снова удалить.

Репозитории привязаны к рабочему пространству. Глобального реестра нет, и отдельного шага привязки тоже: добавить репозиторий и поместить его в рабочее пространство — одно и то же действие. Одна и та же рабочая копия, зарегистрированная в двух рабочих пространствах, становится двумя независимыми строками с разными идентификаторами: за пределами одного рабочего пространства идентичность репозитория определяется путём в файловой системе и никогда — идентификатором.

Папку можно зарегистрировать, только если выполняются все три условия:

  1. Она находится внутри рабочего дерева git.
  2. В этом рабочем дереве настроен удалённый репозиторий origin.
  3. Удалённый репозиторий origin указывает на поддерживаемую платформу: github.com, gitlab.com или bitbucket.org.

Во всех остальных случаях регистрация отклоняется с явным сообщением: «Folder is not inside a git work tree.», «No origin remote configured for this repository.» или «The origin remote is not hosted on a supported forge (github.com, gitlab.com, bitbucket.org).». Режима «только локально» не существует.

Платформа определяется по удалённому репозиторию и сохраняется в репозитории — вы её никогда не выбираете. В одном рабочем пространстве могут одновременно находиться репозитории со всех трёх платформ, и с каждой взаимодействие идёт через её собственный API с её собственными учётными данными. Вложенные пространства имён GitLab сохраняются, поэтому gitlab.com/group/subgroup/project регистрируется с владельцем group/subgroup и именем project.

Кроме того, папка должна находиться на машине, где работает cc_server, внутри одного из каталогов из его --repo-roots. По умолчанию этот список разрешённых каталогов — домашний каталог пользователя сервера, а переход выше корневого каталога отклоняется.

  1. Откройте Настройки → Рабочее пространство → Репозитории (/workspaces/<id>/settings/workspace/repositories).
  2. Нажмите Добавить репозиторий.

В диалоге открывается браузер по файловой системе сервера, а не вашей. На компьютере, в веб-версии и на телефоне это один и тот же сценарий: системный выбор папки указал бы папку не на той машине.

  1. Перейдите в нужное место среди настроенных корневых каталогов сервера. Папки, которые являются рабочими копиями git, помечаются.
  2. Отметьте любое количество папок. Выбор сохраняется при переходах, поэтому можно собрать рабочие копии из нескольких папок.
  3. Зарегистрируйте их одним пакетом.

Одна неудачная отметка никогда не отменяет остальной пакет: вы получаете идентификаторы созданных репозиториев и отдельную ошибку по каждому отклонённому пути. Повторная регистрация пути, который уже есть в этом рабочем пространстве, возвращает существующий репозиторий, а не создаёт дубликат.

Каждый зарегистрированный репозиторий появляется в списке со своим owner/name, значком с названием платформы и путём на сервере. У репозиториев GitHub также показывается аватар владельца; у остальных платформ URL аватара владельца не выводится из данных, поэтому вместо него показываются инициалы.

Значок платформы важен в смешанном рабочем пространстве: два репозитория на разных платформах могут называться одинаково — acme/web, — а ведут себя по-разному: и в том, что может сделать ревью, и в том, куда ведёт ссылка.

При регистрации возникает событие RepoAdded в рамках этого рабочего пространства, которое запускает конвейер index_code для этой рабочей копии. Именно он наполняет граф кода, чтобы поиску и анализу влияния было с чем работать.

Индексируются только файлы, для языка которых есть поставляемая грамматика (Dart, JavaScript, TypeScript, TSX, PHP, Python, Rust, Zig, C, C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB и Ada). См. Искать код через граф кода.

В каждой строке есть кнопка Индексировать код. Нажмите её, чтобы заново запустить индексатор для этой рабочей копии; пока он работает, кнопка превращается в индикатор хода выполнения, показывающий число обработанных файлов из общего, с элементом отмены. По завершении он сменяется отметкой с количеством символов или предупреждением, если запуск не удался.

Перетащите маркер в строке. Заданный порядок — это порядок, в котором читаются все списки репозиториев в приложении.

Значок ссылки в строке открывает редактор владельца GitHub и имени репозитория — пригодится, если удалённый репозиторий переименовали или перенесли.

  1. Откройте Настройки → Рабочее пространство → Репозитории.
  2. Нажмите значок корзины в строке.
  3. Подтвердите «Удалить репозиторий из рабочего пространства?»

В диалоге сказано, что именно произойдёт: «name будет удалён из этого рабочего пространства. Локальные файлы на диске не затрагиваются».

Удаление убирает строку репозитория из этого рабочего пространства и каскадно удаляет его строки в графе кода — символы, рёбра, файлы и контрольные точки индексации, — а также все права на репозиторий, выданные отдельным участникам, его связи с пространствами и записи об изолированных рабочих копиях. Та же рабочая копия, зарегистрированная в другом рабочем пространстве, — независимая строка, и удаление её не затрагивает. Рабочие деревья на диске, на которые указывали эти записи, при удалении не сносятся.