Поработав какое-то время с системой манифеста репозитория Android, я думаю, что теперь понимаю назначение голых репозиториев в каталоге .repo/projects/
.
Как уже ответил @Fredrik, в проектах нет другой копии репозиториев, представленных непосредственно в «клоне», созданном repo
. На самом деле содержимое всех каталогов .git
в клоне — это просто символические ссылки, например:
$ ll development/.git/
total 452
drwxr-xr-x 2 bfh bfh 4096 2011-08-15 13:55 ./
drwxr-xr-x 20 bfh bfh 4096 2011-08-15 13:55 ../
lrwxrwxrwx 1 bfh bfh 43 2011-08-15 13:55 config -> ../../.repo/projects/development.git/config
lrwxrwxrwx 1 bfh bfh 48 2011-08-15 13:55 description -> ../../.repo/projects/development.git/description
-rw-r--r-- 1 bfh bfh 41 2011-08-15 13:55 HEAD
lrwxrwxrwx 1 bfh bfh 42 2011-08-15 13:55 hooks -> ../../.repo/projects/development.git/hooks/
-rw-r--r-- 1 bfh bfh 449008 2011-08-15 13:55 index
lrwxrwxrwx 1 bfh bfh 41 2011-08-15 13:55 info -> ../../.repo/projects/development.git/info/
lrwxrwxrwx 1 bfh bfh 41 2011-08-15 13:55 logs -> ../../.repo/projects/development.git/logs/
lrwxrwxrwx 1 bfh bfh 44 2011-08-15 13:55 objects -> ../../.repo/projects/development.git/objects/
lrwxrwxrwx 1 bfh bfh 48 2011-08-15 13:55 packed-refs -> ../../.repo/projects/development.git/packed-refs
lrwxrwxrwx 1 bfh bfh 41 2011-08-15 13:55 refs -> ../../.repo/projects/development.git/refs/
lrwxrwxrwx 1 bfh bfh 45 2011-08-15 13:55 rr-cache -> ../../.repo/projects/development.git/rr-cache/
lrwxrwxrwx 1 bfh bfh 40 2011-08-15 13:55 svn -> ../../.repo/projects/development.git/svn
Таким образом, фактические репозитории git представлены только один раз в клоне.
Причина сохранения голого и обычного git заключается в том, как работает система манифеста. Система манифестов — это способ указать набор git, которые будут извлечены, и в какой версии они будут извлечены. Файл манифеста сам поддерживается в git, а команда репо позволяет изменять ветку этого манифеста git по своему усмотрению.
Таким образом, чтобы обеспечить (быстрый) способ удаления и добавления git в зависимости от того, что в данный момент выбрано в файле манифеста, репо может просто хранить все git, которые вы когда-либо клонировали, в папке .repo/projects
, а затем копировать их только в «обычный» область клонирования, если они выбраны в текущей ветке файла манифеста.
person
Bjarke Freund-Hansen
schedule
30.08.2011
.git
в компоненте содержит символические ссылки на соответствующий компонент в./repo/projects
- person Fredrik Pihl   schedule 27.05.2011