Поработав некоторое время с системой манифеста репо 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, а команда repo позволяет по желанию изменять ветку этого манифеста git.
Таким образом, можно (быстрый) способ удаления и добавления gits в зависимости от текущего состояния.выбранный в файле манифеста, репозиторий может просто сохранить все файлы, которые вы когда-либо клонировали, в папке .repo/projects
, а затем скопировать их только в «обычную» область клонирования, если они выбраны в текущей ветви файла манифеста.