Android source是 large hierarchy of git repositories .它们由名为 repo 的自定义脚本管理。 . Repo 使用 manifest.xml 确定要管理的 git 存储库。 manifest.xml of Android与所有其他 git 存储库一起托管在 git 存储库中。
如何在 Android 中管理此存储库?具体来说,不同的分支和托管在每个分支中的不同文件是如何组织的?
最佳答案
首先repo init创建.repo
目录,克隆git仓库https://android.googlesource.com/tools/repo到 .repo/repo
,以及使用 -u
选项指定的 git 存储库到 .repo/manifests.git
的裸存储库。之后,它创建 .repo/manifests
目录,通过创建从 .repo/manifests/.git
到 .repo 的符号链接(symbolic link)将其转换为 git 存储库/manifests.git
。然后它检查 -b
中指定的分支,并创建一个符号链接(symbolic link) .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 为 manifest.xml
和 local_manifest.xml
中的每个项目将 git 存储库克隆到 .repo/projects
,创建工作.git
的目录具有指向相应裸存储库的符号链接(symbolic link), check out list 中指定的分支,并更新 .repo/project.list
。项目已经存在的情况略有不同,本质上是执行 git pull --rebase
。
关于android - Android repo list 存储库如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6149725/