我希望我能在这里得到一些帮助,因为 SO UX 比 Mercurial 邮件列表更好。
多年来我一直在家里愉快地使用 Mercurial。我还将它与 Bitbucket Cloud 一起用于一些更严肃(但仍然是爱好)的项目。
去年,我将我的团队从 SVN(公司托管)切换到 Hg(自托管,中央存储库位于网络位置)。我们都在 Windows 中。从那时起,我们不断遇到严重的中央存储库损坏问题,只能使用备份来解决,例如:
% hg verify --verbose
repository uses revlog format 1
checking changesets
checking manifests
manifest@92: unknown parent 1 ef0f96d78ab6 of ef0f96d78ab6
manifest@92: reading delta ef0f96d78ab6: integrity check failed on
00manifest.i:88
manifest@93: unknown parent 1 e336adb3580b of e336adb3580b
manifest@93: reading delta e336adb3580b: integrity check failed on 00manifest.i:89
manifest@94: reading delta 7243aebd542b: unknown compression type '\x08'
manifest@95: reading delta 899e4507ca01: unpack requires a string argument of length 12
manifest@96: reading delta 12d4d930da4f: Manifest had an entry with a zero-length filename.
...
有人说 https://stackoverflow.com/a/6826780/674976由于锁定问题,我们不应该对中央存储库使用网络共享。Others http://mercurial.808500.n3.nabble.com/repository-on-Samba-Share-tp927412p928948.html解释一下 Mercurial 不使用这些锁,网络共享应该可以正常工作,除非文件系统出现问题。
考虑到后者,我想知道我是否可以以某种方式调试我们的安装,而不要求公司为 hg 提供服务器。我对我们正在使用的配置不太了解,但这是我所看到的。该目录可通过 Windows 网络路径访问:\\domain.com\path\path\our-directory
。在里面,我们创建了一个名为的目录root
where .hg
居住。在.hgrc中,路径相应为
[paths]
默认 = \\domain.com\path\path\our-directory\root
我们的网络目录已备份(由公司)。 Hg版本是4.9。
我有过类似的经历和类似的设置。
首先要注意的是,我认为较旧的 HG 版本在 Windows 网络文件共享上运行时肯定存在一些问题,因此请确保您的版本是最新的。 (那是几年前的事了,IIRC,所以这可能不太可能是您当前问题的根本原因)。
其次,就我而言,这些问题似乎因从以下位置运行 HG 而变得更加复杂:在虚拟机内。相反,我现在运行一个[hg serve][1]
未虚拟化的 PC 上的实例,并使用各种 HG 客户端进行攻击。没有更多问题了。
看来如果运行的 PC 之间的连接hg serve
并且文件服务器比我作为客户端运行 hg 的地方更可靠,这避免了这个问题。显然 hgserve 与客户端使用的 HTTP 连接本身更可靠。
我不能说这是一个确定的解决方案,因为我从未找到根本原因。但这似乎在相当长的一段时间内避免了更多的腐败。
注意hg serve
内置于标准 hg 命令行工具中,您可以轻松地从任何地方运行它,并且它不必在存储物理存储库的同一服务器上运行。所以就我而言,我很随意地使用它; (显然)如果您需要更强大的东西,您可能需要与 IT 人员协调。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)