repo使用多个服务器

来自个人维基
跳转至: 导航搜索

需求是这样的,一个项目,一部分代码在 A服务器,另一部分在 B服务器(注意不是在不同的仓库,是在不同的代码服务器),在使用时需要分别从这两个服务器拉下到一个本地目录进行开发。

于是需要适配好 manifest文件。

比如,之前 A的 Manifest.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote fetch="ssh://username@smartgit:29418" name="origin" review="ssh://username@smartgit:29418"/>
  <default remote="origin" revision="qcom_LA.BR.1.2.1-01210-8x16.0_msm8939"/>
  <project name="ard_5.0/android_abi_cpp" path="abi/cpp"/>
</manifest>

B的 Manifest.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote fetch="ssh://username@gerrit.xxx.org:29418" name="origin"/>
  <default remote="origin" revision="master"/>
  <project name="test/8924/frameworks_cmd_base_cmds_am" path="base/cmds/am"/>
  <project name="test/8924/frameworks_cmd_base_cmds_app_process" path="base/cmds/app_process"/>
  <project name="test/8924/frameworks_cmd" path="./"/>
</manifest>

这时我们进行组合,主要注意以下几点:

  • 1 remote的 name不能重复,需要对其中之一进行更改
  • 2 default 也只能唯一,另一个需要删除,删除后要从这个服务器取的所有代码仓库都要显式指定 remote

更改后如下:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote fetch="ssh://username@gerrit.xxx.org:29418" name="bsp"/>
  <default remote="bsp" revision="master"/>
  <project name="test/8924/frameworks_cmd_base_cmds_am" path="base/cmds/am"/>
  <project name="test/8924/frameworks_cmd_base_cmds_app_process" path="base/cmds/app_process"/>
  <project name="test/8924/frameworks_cmd" path="./"/>

  <remote fetch="ssh://username@smartgit:29418" name="origin" review="ssh://username@smartgit:29418"/>
  <project name="ard_5.0/android_abi_cpp" path="abi/cpp" revision="qcom_LA.BR.1.2.1-01210-8x16.0_msm8939" remote='origin'/>
</manifest>


参考资料:https://code.google.com/p/git-repo/source/browse/docs/manifest-format.txt