什么是最好的Mercurial克隆/存储库策略?

nop*_*ole 4 mercurial dvcs

可以有:

1)根据需要从远程仓库克隆(每个新的可能需要20分钟和500MB)

2)从远程repo克隆2个本地的,500MB,总共1GB,所以总是有2个本地repo来工作

3)从远程仓库克隆1本地一个,称为"主",然后不要触摸此主服务器,但根据需要从该主服务器克隆其他本地服务器

我开始使用(1),但是当有快速错误修复时,我需要做一个克隆并且它是20分钟,所以方法(2)更好,因为有2个独立的本地回购.

但有时候回购会变得"怪异",因为合并会造成损害,当它被修复到远程仓库时,任何本地回购的合并hg outgoing都会在我们再次推送时造成损害,所以我们只是删除当地回购并再次从远程克隆开始"新鲜",再次花20分钟.(实际上,我们可以先使用本地回购2,将本地回购1重命名为repo_old,然后在睡觉之前或回家之前再次进行克隆)

(3)是最好的选择吗?因为在Mac上,主机需要500MB和20分钟,但是其他本地克隆速度超快且需要少于500MB,因为它在Mac上使用硬链接(如何在没有硬链接内容的情况下找出多少磁盘空间? ).如果使用(3),我们如何做提交和推送?假设我们从远程repo克隆到本地作为"master",然后克隆本地的"clone01","clone02",03等,然后我们在clone01内部工作,然后当需要紧急修复时,我们去主,做一个hg pullhg update,并转到clone02也做hg pullhg update,并修复它clone02,测试它,并且hg commit,hg push在主,然后去掌握,做一个hg push那里?然后当clone01的项目完成后,再次进入master,pull,update,转到clone01,pull,update,merge,test,commit,push,go to master,push to remote repo?这是很多步骤!

Mhm*_*mmd 5

也许第四个选项在您的情况下可能会更好:保存在本地Mercurial存储库中的Mercurial队列.

使用MQ,您可以:

  1. 在本地克隆主存储库.
  2. 处理您的代码并将更改保持在补丁中.
  3. 当上游的新更新可用时,请删除批次,应用更新,然后在新更新之上重新应用修补程序.
  4. 一旦您对您的工作感到满意,请将其折叠到您的本地存储库并将其推送到上游.

您不必将补丁保留在本地存储库中,但这是一个值得考虑的好的奖励选项.

第12章水银权威指南解释了相当不错的详细过程.