我正在开发一个包含多个git存储库的项目。文件夹结构看起来像这样;
repo1/
+
---repo2/
---repo3/
...
---repo8/
因此,要设置我的开发环境,我需要运行类似的东西
git clone http://path_to_git_repo.git top_folder
cd top_folder
git checkout tags/release34
git clone http://path_to_another_repo.git subfolder1
cd subfolder1
git checkout tags/release55
cd ..
git clone http://path_to_another_repo.git subfolder2
cd subfolder2
git checkout tags/rel-44-abc
...等
大约一个星期后,不同的团队会推送他们自己的更新/标签,我需要通过做这样的事情来重新同步;
cd top_folder
git checkout tags/release44
cd subfolder1
git checkout tags/release-bignewfeature
cd ..
cd subfolder1
git checkout tags/release-reverting_tosomethingelse
cd ..
...等
完成整个重新同步非常......重复且令人厌烦。有没有人对我如何让事情变得更容易有任何建议?
我已经听过(并尝试过)mr工具,但它只会更新到repo的最新HEAD版本,而我需要更新到某些标签。
答案 0 :(得分:0)
您应该考虑使用 git submodules
,这样可以避免所有标记/同步步骤。
您的父代仓库repo1
只是引用固定SHA1的集合,每个submodule repos一个。
大约一周后,不同的团队会推送他们自己的更新/标签
您可以制作每个submodule follow a branch,这意味着重新同步将是:
git submodule update --remote
答案 1 :(得分:0)
更好的方法是使用 git subtree
,更容易维护依赖服务器的存储库。