我想使用本地Android存储库服务器在Android之上进行开发。我需要将几个新的git存储库添加到git的层次结构中,并且需要修改现有的android源,以定制Android。
克隆git存储库的整个Android源代码树的“正确”方法是什么,以便我可以将其 push/拖出到公共(public)本地存储库服务器,还是可以轻松地从Android上游获取新更改?
我特别在寻找有关如何使用repo
脚本与我自己的服务器进行交互以及如何设置manifest
git存储库和管理其中的分支的建议。
最佳答案
在您的git服务器上
因为您指定了--mirror,所以所有创建的存储库都将是“裸机”存储库,这是创建镜像的git-correct方法,除非您是git uberlord。
在您的客户上:
<remote fetch=""
...,它可能指向android.googlesource.com。但是如果显示“..”,则表示“返回到我的服务器”,因此您可以跳到步骤6)。但是,如果确实指向其他服务器(而不是您的服务器),请转到步骤3。<remote fetch="CHANGE ME"
以指向您的git服务器git commit; git push
),以便团队中的其他人从服务器上获得repo init; repo sync
时将具有“无 list 编辑”的经验。 一旦看到“无需 list 编辑”
repo init; repo sync
的工作,然后再次转到default.xml,然后开始添加新的XML元素以及大量其他现有的Android项目元素;这些新元素将指向您的自定义项目。对于这些新项目,只需像往常一样git初始化它们,并确保它们具有匹配相同<default revision="whatever_branch_you_see_here"
的分支,以便repo sync
在遇到这些新项目时将成功。如果确实在 list
<default revision=""
元素中设置了默认分支,则只需让每个人都设置一个本地分支,以遵循修订属性中指定的远程分支即可。因此,例如,如果 list 中包含<default revision="branch_a"
,则在执行 repo 同步之后,当您将CD放入感兴趣的子项目中时,请执行以下操作:git checkout -b branch_a origin/branch_a
然后,如果用户
git push
(据我所知,没有要推送的repo命令),并且如果其他人在该推送后执行了./repo sync
,则他们将从原始用户那里获得这些更改...只要您使用相同的 list ,并实际推送到该 list 指定的默认修订版(分支)。那是最简单的食谱。如果您想创建实际的功能分支,那么如果您想使“repo sync”正常工作,则必须更定期地编辑 list ...,并且您必须与团队的其他成员进行交流,以获取您的版本。这样做时的 list 。或者,如果您只是触摸一个或两个git仓库,则可以像在这些仓库上一样正常地放弃repo sync和git push/pull,而在进行大量迭代时忽略其余的静默树。最终,对我来说,这听起来像一条更简单的道路。我会尽可能地忽略 repo ;仅将其用于“所有项目”同步,而在您专注于1或2个项目时则不使用它。
关于从上游获取更新。我认为这样做的方法是将default.xml更改为指向原始git位置(例如android.googlesource.com),进行 repo 同步以使所有新内容 merge ,并在完成后同步,提交回您的仓库。我还没做所以我不能太具体,但这就是我打算这样做的方式。
我忽略了上面的服务器管理详细信息。例如,您需要在git服务器上的某个目录中调用repo init,以使其成为可用的git信息库;我假设您知道如何管理git服务器。
关于android - 将Android源克隆到本地存储库服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6136789/