Mercurial在VPN连接上非常慢

时间:2012-09-19 19:56:39

标签: version-control mercurial vpn mercurialeclipse

我们的团队已经使用Mercurial一段时间了,一切都很棒。我们都有一个克隆的存储库和推/拉命名分支到一个集中的Windows服务器,在我们的局域网上通过映射驱动器访问。

问题是我最近开始远程工作,性能显着下降。我通过VPN连接到办公室并像往常一样访问共享驱动器,但过去20-30秒的推送现在需要超过10分钟!

我有一个不错的有线连接(30Mpbs / 2Mbps)所以我不希望小的改变需要花费很长时间来推动但似乎无论我的更改设置多么小,许多MB都被交换(来自监控网络适配器)在推动期间)。即使我只修改了源文件中的一行,情况也是如此。它似乎也依赖于存储库大小,存储库越小越好但它永远不会“快速”。

我不熟悉Mercurial推送所涉及的内容,但似乎需要在主存储库和我的主存储库之间来回做很多事情才能最终确定要发送的内容。

我刚刚完成了5个文件的推送,其中我添加了少于5KB的代码 以下是hg push -b branch --debug --time超过13分钟的结果!

这在VPN上是“正常”还是我错过了某种关键配置?

C:\inetpub\www\app1>hg push -b mynewbranch --new-branch --debug --time
pushing to X:\app1
query 1; heads
searching for changes
taking initial sample
searching: 2 queries
query 2; still undecided: 4, sample size is: 4
2 total queries
listing keys for "bookmarks"
5 changesets found
list of changesets:
7327fd8a913d019475783693fba7afc790bba11a
967e02cbdddb844b0cf1b67b452ff8e96614daa6
b5c9166ca22e98c499d71c9a0b7da2c36649f9f5
7e30ec219db545ba9309f7b8e8b015cf2a652383
79d028c22d2bc4554092ba5bad8249c7129d3caf
adding changesets
bundling: 1/5 changesets (20.00%)
bundling: 2/5 changesets (40.00%)
bundling: 3/5 changesets (60.00%)
bundling: 4/5 changesets (80.00%)
bundling: 5/5 changesets (100.00%)
bundling: 1/5 manifests (20.00%)
bundling: 2/5 manifests (40.00%)
bundling: 3/5 manifests (60.00%)
bundling: 4/5 manifests (80.00%)
bundling: Core/Module/Desktop/Display/file1.x 1/5 files (20.00%
)
bundling: Core/Module/Desktop/Display/file2.x 2/5 files (40.00%
)
bundling: Core/Module/Individual/Display/file3.x 3/5 files (60.00%
)
bundling: Core/Module/Individual/Forms/file4.x 4/5 files (80.
00%)
bundling: Public/Module/Desktop/file5.js 5/5 files (100.00%)
changesets: 1 chunks
add changeset 7327fd8a913d
changesets: 2 chunks
add changeset 967e02cbdddb
changesets: 3 chunks
add changeset b5c9166ca22e
changesets: 4 chunks
add changeset 7e30ec219db5
changesets: 5 chunks
add changeset 79d028c22d2b
adding manifests
manifests: 1/5 chunks (20.00%)
manifests: 2/5 chunks (40.00%)
manifests: 3/5 chunks (60.00%)
manifests: 4/5 chunks (80.00%)
adding file changes
adding Core/Module/Desktop/Display/file1.x revisions
files: 1/5 chunks (20.00%)
adding Core/Module/Desktop/Display/file2.x revisions
files: 2/5 chunks (40.00%)
adding Core/Module/Desktop/Display/file3.x revisions
files: 3/5 chunks (60.00%)
adding Core/Module/Desktop/Display/file4.x revisions
files: 4/5 chunks (80.00%)
adding Public/Module/Desktop/file5.js revisions
files: 5/5 chunks (100.00%)
added 5 changesets with 5 changes to 5 files (+1 heads)
listing keys for "phases"
try to push obsolete markers to remote
updating the branch cache
checking for updated bookmarks
listing keys for "bookmarks"
time: real 833.334 secs (user 0.577+0.000 sys 0.546+0.000)

C:\inetpub\www\app1>

2 个答案:

答案 0 :(得分:7)

您正在以假定对存储库进行快速本地访问的模式中使用Mercurial。在局域网上可以接受,但任何更高的延迟都会产生你所看到的效果。延迟不是唯一的事情 - 在此模式下使用Mercurial将在未压缩的VPN上传输文件(或至少是增量)。

我建议您在中央服务器上配置hgweb.cgimercurial-server(目前通过共享驱动器发布)。即使通过局域网访问,我也建议这样做。

有关publishing repositories的一般信息。

答案 1 :(得分:2)

当您通过VPN与映射的网络驱动器通信时,我倾向于怀疑网络延迟增加。您可以将--profile添加到hg命令并检查/发布输出吗?