此设置的最佳Mercurial使用模式是什么?

时间:2020-03-05 18:38:18  来源:igfitidea点击:

我们在同一个封闭的(ugh,愚蠢的政府)网络上有两名开发人员,另一名开发人员在几分钟后开车,而第四名开发人员在全国各地途中。对于不在同一网络上的人们,电子邮件,ftp和删除媒体都是所有可能的传输方法。

我是两个封闭的网络开发人员之一,认为我们是"主"位置。

最适合团队的Mercurial设置/模式是什么?向/从远程开发人员传送更改的最佳方法是什么?在我负责时,我认为我必须保留至少一个主存储库和另一个可以在其中进行开发的本地存储库。每个其他人只需要复制主文件即可。这是正确的吗?我猜这也使我对合并负责吗?

如我们所见,我仍在努力围绕分布式版本控制。我认为没有其他方法可以解决连接问题。

解决方案

回答

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

回答

网络外部的用户可以打补丁,和/或者使用电子邮件将更新发送给主存储库或者某人(例如我们自己)以将其合并。其他内部人员可以像我们一样拥有本地副本并进行合并-但是,如果我们不在网络补丁程序中,则最好由一个人来处理它们,以免没人混淆,但这是我们必须要做的考虑一下你自己。

以另一种方式同步,我们将创建一个补丁,然后他们通过电子邮件或者将闪存驱动器发送给远程开发人员以对他们的系统进行补丁。我们将需要与团队成员进行良好的沟通,非常感谢,我不在掌控之中。

这些是我唯一的建议-显而易见,让他们建立VPN连接!我很想听听事情的进展,计划稳定到每周一次等等。

回答

修补程序是一种简单而通用的解决方案。

为了遍历较大的更改组(尤其是二进制更改和合并),Mercurial提供了二进制捆绑包。捆绑包基本上是当我们执行" hg push"时在网络上发送的二进制文件,但此处被捕获在文件中。

假设我以某种方式(通过闪存驱动器,DVD等)获得了克隆。称之为"上游"。然后创建第二个克隆,称为" devel"。我在devel中进行所有开发,并进行大量的提交,合并等。由于Mercurial是分布式的,因此我可以离线进行所有这些操作。

要查看在"上游"中缺少哪些变更集,我要做

% hg outgoing ../upstream

当我有东西要发送时,我可以使用

% hg bundle changes.hg ../upstream

得到一个二进制压缩文件,其中包含变更集(包括所有元数据)。然后,我可以将该文件刻录到CD上并通过邮件发送。

捆绑包的收件人可以做

% hg incoming changes.hg

查看变更集列表,并

% hg pull changes.hg

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

注意,"上游"存储库仅用作方便的方式来记住上游存储库中已经找到的变更集。我们还可以记下变更集ID并在捆绑时使用hg bundle --base来指定基本(通用)变更集。请参阅" hg帮助包"或者在Wiki中查找。