我想在Android上使用本地Android存储库服务器进行开发。我需要添加几个新的git存储库到gits的层次结构中,并且我需要修改现有的Android源代码,以便定制android。
克隆git存储库的整个Android源代码树的“正确”方法是什么,这样我就可以推送/拉入/拉出公共本地存储库服务器,并且仍然可以轻松地从Android上游拉出新的更改?
我特别在寻找关于如何使用repo
脚本与我自己的服务器进行交互的建议,以及如何设置manifest
git存储库和管理其中的分支。
发布于 2012-07-20 11:44:33
在你的git服务器上
镜像同步存储库初始化镜像--
因为您指定了-- mirror,所以创建的所有repos都将是“空的”repos,这是git正确的创建镜像的方式,除非您是git超级主子。
在您的客户端上:
<remote fetch=""
...它可能指向android.googlesource.com。但如果上面写着“..”我想这意味着“回到我的服务器”,所以你可以跳到步骤6)。但如果它确实指向另一台服务器(不是您的服务器),则转到步骤3.<remote fetch="CHANGE ME"
,指向你的git servergit commit; git push
),这样团队中的其他成员在从您的服务器执行repo init; repo sync
时将具有‘no-default.xml-edit’体验。一旦你看到一个‘无清单编辑’的repo init; repo sync
工作,然后再次转到你的default.xml,只需开始添加新的XML元素以及大量其他已有的Android项目元素;这些新元素将指向你的自定义项目。对于这些新项目,只需像往常一样对它们进行git初始化,并确保它们有一个与相同<default revision="whatever_branch_you_see_here"
匹配的分支,这样repo sync
在遇到这些新项目时就会成功。
如果您确实在清单<default revision=""
元素中设置了默认分支,那么只需让everyone设置一个本地分支,以遵循修订属性中指定的远程分支。因此,例如,如果<default revision="branch_a"
在您的清单中,在您执行repo同步之后,当您cd到感兴趣的子项目时,请执行以下操作:
git checkout -b branch_a origin/branch_a
然后,如果用户的分支(据我所知,没有repo命令可以推送),如果其他人在推送之后执行./repo sync
,他们将从原始用户那里获得这些更改...只要您使用相同的清单并实际推送到该清单指定的默认修订(分支)。
这是最简单的方法。如果你想创建真正的功能分支,那么如果你想让'repo sync‘正常工作,你就必须更有规律地编辑你的清单……当你这样做时,你必须与团队的其他成员沟通,以获取你的清单版本。或者,如果只有一个或两个git repos你正在接触,那么你可以放弃repo sync和git push/pull,就像那些repos上的正常情况一样,忽略你大量迭代的安静树的其余部分。最终,对我来说,这听起来像是一条更简单的道路。我会尽可能忽略repo;只将其用于“所有项目”同步,并在专注于1到2个项目时将其留在一边。
关于从上游获取更新。我认为这样做的方法是改变你的default.xml指向你的原始git位置(如android.googlesource.com),做一个回购同步,以使所有新的东西合并在一起,一旦完成同步,提交回你的回购。我还没有做到这一点;所以我不能太具体,但这是我计划如何做到的。
我忽略了上面的服务器管理细节。例如,您需要调用git服务器上某个目录中的repo init,以使其成为可用的git存储库;我假设您知道如何管理git服务器。
https://stackoverflow.com/questions/6136789
复制相似问题