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