这个设置有什么好的Mercurial使用模式?

时间:2008-08-07 12:05:48

标签: version-control mercurial dvcs

我们有两个开发人员在同一个封闭的(呃,愚蠢的政府)网络上,另一个开发人员在几分钟的路上开车,第四个开发人员在全国各地。电子邮件,ftp和删除媒体都是不在同一网络上的人员的传输方式。

我是两个封闭的网络开发者之一,认为我们是“主”位置。

群组的最佳Mercurial设置/模式是什么?向远程开发人员传输更改的最佳方法是什么?由于我负责,我认为我必须至少保留一个主回购与另一个我可以开发的本地回购。每个人都应该只需要克隆一个主人。这是正确的吗?我想这也让我对合并负责?

正如您所看到的,我仍然试图围绕分布式版本控制。我不认为在连接情况下还有其他方法可以做到这一点。

3 个答案:

答案 0 :(得分:3)

补丁是一种简单而通用的解决方案。

为了移动更大的更改组(尤其是二进制更改和合并),Mercurial提供二进制包。捆绑包基本上是您执行hg push时在网络上发送的二进制内容,但此处会将其捕获到文件中。

让我们想象一下,我已经以某种方式获得了一个克隆(通过闪存驱动器,DVD等)。称之为upstream。然后我制作第二个克隆,称之为devel。我在devel中进行了所有开发,并进行了大量的提交,合并等。由于Mercurial已经分发,我可以离线完成所有这些。

要查看upstream我做

中缺少哪些更改集
% hg outgoing ../upstream

当我要发送内容时,我可以使用

% hg bundle changes.hg ../upstream

获取二进制压缩文件,其中包含包含所有元数据的更改集。然后,我可以将此文件刻录在CD上并通过邮件发送...

捆绑包的收件人可以

% hg incoming changes.hg

查看变更集列表和

% hg pull changes.hg

解压缩并将更改集添加到其存储库。然后,他很可能必须合并 - 这就像他通过HTTP或SSH直接从您的存储库中提取。

注意,upstream存储库仅用作记住上游存储库中已找到哪些更改集的便捷方式。您还可以记下变更集ID并在捆绑时使用hg bundle --base来指定基本(公共)变更集。请参阅hg help bundlelook in the wiki

答案 1 :(得分:1)

网络外的用户可以patches和/或使用email将更新发送到主回购或某人,就像你自己一样合并它们。其他内部人员可以像你一样拥有本地副本并进行合并 - 但如果你有这些网络补丁,那么一个人处理它们可能会更好,所以没有人会感到困惑,但那是你必须要做的事情。考虑一下自己。

以另一种方式同步,您将创建一个补丁,然后通过电子邮件或获取闪存驱动器给远程开发人员修补他们的系统。你需要在团队成员中进行一些良好的沟通,我很感激我不在你的手中。

这些是我唯一的建议 - 显而易见,让他们建立VPN连接!我很想知道它是怎么回事,什么计划稳定成每周一次,等等。

答案 2 :(得分:0)

正确。任何进入封闭网络的唯一方法是通过闪存驱动器。