我在分布式环境(包括GitHub)中使用了git,开发人员在这个环境中工作,然后推送到中央仓库。我现在需要更结构化的存储库层次结构,因为我们有多个办公室。如果我们举一个例子,我们有塔林的开发人员将推送到他们的远程存储库。我们还有伦敦的开发人员,他们将推送到他们的存储库。然后,我们需要合并两个远程存储库之间的更改,并将它们传递回两个站点中的开发人员。因此层次结构如下所示:
Tallinn ------- London | | ------------- ------------- | | | | | | | | Dev Dev Dev Dev Dev Dev Dev Dev
有人可以推荐实施此方法的最佳方法吗?
答案 0 :(得分:3)
我会选择一个城市来接待官方主人,并让某人负责合并这两个城市的变化。每个城市都有自己的开发者可以承诺的回购,并且在一天结束时,所有更改将合并到主回购中。然后两个城市回购将从那里更新。
master
|
Tallinn ------- London
| |
------------- -------------
| | | | | | | |
Dev Dev Dev Dev Dev Dev Dev Dev
这与Linux的工作原理没有什么不同。 1人控制主人,但不是城市,事情由子系统划分。
答案 1 :(得分:2)
如果塔林和伦敦之间没有直接联系(意味着你不能直接从一个中央仓库推送到另一个中央仓库),那么这意味着塔林和伦敦的回购都是essentially fork one from another。
Fork更像是一种分享版本化数据的社交方式,由GitHub推广
但GitHub分支背后的原则仍适用于您的情况:您将通过补丁交换数据(例如,“使用 git format-patch
”)。
即使您的回购没有fork queue(如GitHub回购做),您仍然需要管理给定回购中的各种补丁,并检查它们是否可以快进方式应用。登记/> 我建议从这种更新的专用分支。
答案 2 :(得分:0)
我认为您需要一个托管在某处的“公共”存储库,与塔林和伦敦相关联。 因此,每个团队都可以推动和拉动它。
答案 3 :(得分:0)
我建立了一个“看门人”,可以访问这两套存储库。这台机器 - 可以是服务器或只是某人机器上的子目录 - 具有使用来自两个办公室的遥控器设置的存储库。然后,对于需要双方更新的每个仓库:
git pull talinn
git pull london
git push talinn
git push london
请注意,拉操作可能会导致需要手动解决的合并冲突。如果您有一个脚本执行此操作,则必须将这些案例提交给开发人员进行修复。不过,很可能只是让一个人经常这样做。