14

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

我是两个封闭的网络开发人员之一,将我们视为“大师”位置。

团队的最佳 Mercurial 设置/模式是什么?向/从远程开发人员传输更改的最佳方式是什么?由于我负责,我认为我必须至少保留一个主存储库和另一个我可以开发的本地存储库。其他人应该只需要主人的克隆。这是正确的吗?我想这也让我负责合并?

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

4

3 回答 3

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 bundle查看 wiki

于 2009-05-22T21:57:29.010 回答
1

网络外的用户可以制作补丁,和/或使用电子邮件将更新发送到主仓库或某人,比如你自己来合并它们。其他内部人员可以拥有本地副本,例如您自己并进行合并——但如果您拥有这些来自网络之外的补丁,最好由一个人处理它们,这样没人会感到困惑,但这是您必须要做的事情考虑自己。

以另一种方式同步,您将创建一个补丁,然后他们通过电子邮件或将闪存驱动器发送给远程开发人员以修补他们的系统。你需要在团队中进行一些良好的沟通,我很庆幸我没有站在你的立场上。

这些是我唯一的建议——嗯,很明显,给他们一个 VPN 连接!我很想听听进展如何,什么计划稳定到每周的最佳状态,等等。

于 2008-08-07T13:37:30.300 回答
0

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

于 2008-08-07T12:53:17.597 回答