android - Android repo list 存储库如何工作?

标签 android git android-manifest android-source git-repo

Android sourcelarge 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.xmllocal_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/

相关文章:

android - v.getTag() 返回 null 而不是 ViewHolder

Git 克隆 : Redirect stderr to stdout but keep errors being written to stderr

git:添加、提交和推送并发安全吗?

android - 我正在将我的启动 Activity 从 "MainActivity"更改为 "RealMain"我在 list 中声明了这个但可惜 MainActivity

android - AndroidManifest.xml 中是否可以使用相对包名称?

Android list 使用权限与 Android 设备规范

android - 自定义 Android 键盘中的建议

android - Google map 未在 Firebase 测试实验室中显示

当 CollapsingToolbarLayout 的子项时,不会调用 Android 布局行为

git - VS代码: git fatal error: file is outside directory