Подтвердить что ты не робот

Как работает репозиторий манифеста репозитория Android?

Android-источник является большой иерархией репозиториев git. Им управляет пользовательский script вызов . Repo определяет, с какими git репозиториями управлять с помощью manifest.xml. manifest.xml для Android размещается в репозитории git вместе со всеми остальными репозиториями git.

Как этот репозиторий управляется в Android? В частности, как организованы разные ветки и разные файлы, размещенные в каждой ветки?

4b9b3361

Ответ 1

Во-первых, repo init создает каталог .repo, клонирует репозиторий git https://android.googlesource.com/tools/repo до .repo/repo, а git, указанный с опцией -u для голого репозитория в .repo/manifests.git. После этого он создает каталог .repo/manifests, преобразует его в репозиторий git, создавая символические ссылки от .repo/manifests/.git до .repo/manifests.git. Затем он проверяет ветвь, указанную в -b, и создает символическую ссылку .repo/manifest.xml, указывающую на указанный файл (-m) в .repo/manifests, по умолчанию .repo/manifests/default.xml.

Примерно следующим образом:

  repo init -u $URL -b $BRANCH -m $MANIFEST
  --------------------
  mkdir .repo; cd .repo
  git clone https://android.googlesource.com/tools/repo
  git clone --bare $URL manifests.git
  mkdir -p manifests/.git; cd manifests/.git
  for i in ../../manifests.git/*; do ln -s $ı .; done
  cd ..
  git checkout $BRANCH -- .
  cd ..
  ln -s manifests/$MANIFEST manifest.xml  

Вы можете проследить, что действительно происходит с repo --trace init ...

Затем repo sync клонирует репозитории git в .repo/projects для каждого проекта в manifest.xml и local_manifest.xml, создает рабочие каталоги с .git, имеющие символические ссылки в соответствующий голый репозиторий, проверяет ветвь, указанную в манифест и обновления .repo/project.list. Случай, когда проекты уже существуют, несколько отличается, по существу выполняя git pull --rebase.

Ответ 2

В корне repo находится скрытый каталог с именем ".repo", внутри вы найдете проект git с именем "manifestests", который обычно содержит файл с именем "default.xml". Этот файл содержит информацию обо всех проектах и ​​где расположены их репозитории git. Этот файл также версируется таким образом, когда вы используете команду "repo init -b XYZ", она будет возвращена, и вы сможете вернуться к более старым веткам, которые могли бы добавить/удалить проекты git по сравнению с головой.

Вот ссылка на документ repo git repo, описывающий формат манифеста:

https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.txt