Bja*_*sen 20 git android repository android-manifest
我想使用本地Android存储库服务器在Android上开发.我需要在gits的层次结构中添加几个新的git存储库,我需要修改现有的android源代码来定制Android的定制.
克隆git存储库的整个Android源代码树的"正确"方法是什么,这样我可以推送/拉出公共本地存储库服务器,并且仍然可以轻松地从Android上游提取新的更改?
我特意寻找有关如何使用repo
脚本与我自己的服务器进行交互的建议,以及如何设置manifest
git存储库和管理其中的分支.
set*_*all 15
在你的git服务器上
因为你指定了--mirror,所有创建的repos都将是'bare'repos,这是创建镜像的git-correct方法,除非你是一个git uberlord.
在您的客户端:
repo init -u git@git.yourserver.com:platform/manifest.git#您可以使用不同的方式访问您的git服务器; 我必须为这个例子假设一些东西.
还没有回购同步. 你的清单可能是错的.看看符号链接的.repo/manifest.xml ... cat it并在顶部读取<remote fetch=""
...它可能指向android.googlesource.com.但如果它说'..'我认为这意味着'回到我的服务器',所以你可以跳到第6步).但如果它确实指向另一台服务器(不是你的),那么转到第3步.
<remote fetch="CHANGE ME"
以指向您的git服务器git commit; git push
)中提交default.xml ,以便团队中的其他人在repo init; repo sync
您的服务器上获得"no-manifest-edit"体验.一旦看到"无清单编辑" repo init; repo sync
工作,再次转到default.xml,然后开始添加新的XML元素以及大量其他现有的Android项目元素; 这些新元素将指向您的自定义项目.对于这些新项目,只需像往常一样git init它们,并确保它们具有匹配相同的分支,<default revision="whatever_branch_you_see_here"
以便repo sync
在遇到这些新项目时成功.
如果确实在清单<default revision=""
元素中设置了默认分支,那么只需让每个人都将本地分支设置为遵循revision属性中指定的远程分支.因此,例如,如果<default revision="branch_a"
在您的清单中,在进行回购同步后,当您进入感兴趣的子项目时,请执行以下操作:
git checkout -b branch_a origin/branch_a
然后,如果用户git push
的(没有回购命令推,据我所知),如果别人做了./repo sync
那个推后,他们将得到从原来的用户这些变化......只要您使用相同的清单并实际推送到该清单指定的默认修订版(分支).
这是最简单的食谱.如果你想实际特征的分支,那么你就必须更经常地,如果你想"回购同步",只是工作...编辑清单和你将不得不传达给团队的其他成员抓住你的版本当你这样做时的清单.或者,如果它只是一个或两个git repos你正在触摸,那么你可以放弃repo sync和git push/pull就像那些repos上的正常情况一样,并且在你重复迭代时忽略其余的安静树.这听起来最终对我来说就像一条更简单的道路.我会尽可能地忽略回购; 仅将它用于"所有项目"同步,并在您专注于1或2个项目的时候单独使用它.
关于从上游获取更新.我认为这样做的方法是将default.xml更改为指向原始git位置(如android.googlesource.com),执行repo sync以使所有新东西合并,并且一旦完成同步,提交回您的回购.我还没有这样做; 所以我不能太具体,但这就是我打算这样做的方式.
我忽略了上面的服务器管理细节.例如,您需要在git服务器上的某个目录中调用repo init,以使其成为可用的git存储库; 我假设您知道如何管理您的git服务器.