首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Android源代码克隆到本地存储库服务器

将Android源代码克隆到本地存储库服务器
EN

Stack Overflow用户
提问于 2011-05-26 18:00:34
回答 1查看 9.6K关注 0票数 21

我想在Android上使用本地Android存储库服务器进行开发。我需要添加几个新的git存储库到gits的层次结构中,并且我需要修改现有的Android源代码,以便定制android。

克隆git存储库的整个Android源代码树的“正确”方法是什么,这样我就可以推送/拉入/拉出公共本地存储库服务器,并且仍然可以轻松地从Android上游拉出新的更改?

我特别在寻找关于如何使用repo脚本与我自己的服务器进行交互的建议,以及如何设置manifest git存储库和管理其中的分支。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-20 11:44:33

在你的git服务器上

镜像同步存储库初始化镜像--

  • repo

因为您指定了-- mirror,所以创建的所有repos都将是“空的”repos,这是git正确的创建镜像的方式,除非您是git超级主子。

在您的客户端上:

  1. repo init -u git @git.yourserver.com:/manifest.git#你可以使用不同的方式访问你的git服务器;我必须为这个例子做一些假设。
    1. 还没有repo同步。你的货单可能是错的。看一下符号链接的.repo/manifest.xml...点击并阅读顶部的<remote fetch=""...它可能指向android.googlesource.com。但如果上面写着“..”我想这意味着“回到我的服务器”,所以你可以跳到步骤6)。但如果它确实指向另一台服务器(不是您的服务器),则转到步骤3.
    2. cd .repo/manifests
    3. vim .repo/manifests/default.xml (或您的active manifest.xml是什么)。修复default.xml的<remote fetch="CHANGE ME",指向你的git server
    4. attempt a repo sync。它应该只从你的存储库中拉出。如果没有,请停止存储库同步,然后再次尝试修复default.xml。
    5. 一旦您看到存储库同步在您的测试计算机上工作,然后提交default.xml back in (git 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服务器。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6136789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档