2

我为我的组织推出了一个 Gerrit 实例,进行了 LDAP 身份验证,并手动导入了一些 Android 的工作副本。凉爽的。

但是,工作副本不包括对上游(远程)分支的引用。对于给定的项目,比如框架/基础,我希望实现的是:

git branch -r  
# See Google branches
git rebase # to a Google branch.
git push # back to my Gerrit instance.

如上所述,如何确保我的本地 git 存储库知道上游项目?我是否需要在本地镜像 AOSP 内容?

我已经尝试阅读一些文档,并且还简单地将 Google 的远程延迟添加到我的清单 xml 中。推送复制被广泛覆盖,但这不是我的用例,因为我想跟踪远程分支,而不是将本地更改推送回它们。

谢谢!

4

1 回答 1

1

据我所知,大多数团队使用的脚本会拉下 Google 版本的 Android 并将其直接推送到他们的 Gerrit 服务器,绕过审查。清单 xml 文件中没有可以帮助解决此问题的设置。

一些 Android 商店希望为上游分支和标签使用不同的命名空间。例如,它们可能会在所有内容前加上- 、和,而不是masterandfroyo分支和标签。android-4.1.1_r6externalexternal/masterexternal/froyoexternal/android-4.1.1_r6

其他商店以类似的方式为其内部分支和标签添加前缀。

您执行此工作的脚本将与此类似(未经测试)。--mirror首先使用该选项从上游设置本地 repo 克隆。

# this only needs to be ran once, or for any new repositories added to repo:
repo forall -c \
  'git remote add local_server ssh://path/to/local/gerrit:29418/$REPO_PROJECT'

# fetch changes
repo forall -c 'git fetch'

# push to your local Gerrit server
repo forall -c 'git push local_server refs/*:refs/external/*'

当然,您可以使用 cron 作业来自动执行此脚本。一旦这到位,当开发人员运行时,git branch -r他们将看到来自上游的 origin/external/blah 分支,并且可以基于这些分支进行 rebase。

于 2012-10-09T01:30:48.683 回答