windows - 使用 Windows 网络共享目录时 Hg 存储库损坏

标签 windows mercurial

我希望我能在这里得到一些帮助,因为 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.
...

Some people say由于锁定问题,我们不应该为中央存储库使用网络共享。 Others解释 Mercurial 不使用那些锁,网络共享应该可以正常工作,除非文件系统有问题。

考虑到后者,我想知道我是否可以在不要求公司为 hg 提供服务器的情况下以某种方式调试我们的安装。我不太了解我们正在使用的配置,但这是我所看到的。该目录可通过 Windows 网络路径访问:\\domain.com\path\path\our-directory。在内部,我们创建了一个名为 root 的目录,其中包含 .hg。在.hgrc中,路径是相应的

[paths]
default = \\domain.com\path\path\our-directory\root

我们的网络目录(由公司)备份。 Hg 版本为 4.9。

最佳答案

我在类似的设置上有过类似的经历。

首先要注意的是,我认为较早的 HG 版本在通过 Windows 网络文件共享运行时确实存在一些问题,因此请确保您的版本是最新的。 (那是几年前的事了,IIRC,所以这不太可能是您当前问题的根本原因)。

其次,在我的案例中,这些问题似乎是从 在虚拟机 中运行 HG 引起的。相反,我现在在未虚拟化的 PC 上运行 [hg serve][1] 实例,并使用各种 HG 客户端访问它。没有更多的问题。

看起来,如果运行 hg serve 的 PC 和文件服务器之间的连接比我作为客户端运行 hg 的地方更可靠,这就避免了这个问题。显然,hg serve 用于客户端的 HTTP 连接本身更可靠。

我不能说这是一个确定的解决方案,因为我从未找到根本原因。但这似乎在相当长的一段时间内避免了更多的腐败。

请注意,hg serve 内置于标准 hg 命令行工具中,您可以从任何地方轻松运行它,并且不必在物理存储库所在的同一台服务器上运行存储。所以就我而言,我很随意地使用它; (显然)如果您需要更强大的东西,您可能需要与您的 IT 人员协调。

关于windows - 使用 Windows 网络共享目录时 Hg 存储库损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55967265/

相关文章:

windows - 如何在 Windows 上从 "git gui"开始分离 "Git bash"?

mercurial - 从 Mercurial 存储库获取 Bitbake 配方

mercurial - 使用什么命令从 Mercurial 存储库中排除文件?

file - 在Mercurial中,如何从命名分支中选择特定文件并与默认文件 merge 回去?

windows - Selenium 3.7.1 webdriver 错误 : Timed out waiting for driver server to start. 仅限 Windows

windows - 在 Windows PowerShell 中获取日期范围内的文件

windows - 在 Windows 和 Apache Toree Kernel 上使用 Jupyter 以实现 Spark 兼容性

C++ winapi ListView NM_CUSTOMDRAW : not getting CDDS_ITEMPREPAINT

Mercurial Hg Mv不会移动所有文件

Mercurial:如何在修改后恢复提交