0

我在 Visual Studio 中使用 VisualHG。有时在拉取(使用 Fetch)时,我会收到以下错误消息:

[Errno 13] C:\inetpub\Websites\SomeProject.csproj:进程无法访问该文件,因为它正被另一个进程使用

这反过来又使我的存储库变得一团糟,导致我不得不删除所有内容并再次拉取。我能做些什么来防止这种情况发生吗?从 TortoiseHG 或从命令行拉时,似乎这个问题永远不会发生,只有在 Visual Studio 中打开项目并使用 VisualHG 拉时。

4

3 回答 3

2

我们在这里使用 TortoiseHg 2.0.4 和 VS2008 的机器上看到了非常相似的东西。看起来 Visual Studio 在检测到文件修改事件时会短暂锁定文件,这会导致 Hg 失败。我们在 TortoiseHg 和命令行客户端都看到了这一点。

虽然它在 a 期间发生时非常令人沮丧pull,但它也发生在 a 期间merge,这可能是非常灾难性的。

于 2011-06-15T15:52:18.487 回答
1

您可能唯一能做的就是在fetch. 这不是导致它的pull部分fetch,而是update. Visual Studio 似乎锁定了您的项目文件,并且不会让 Mercurial 在打开时更改它。

fetch但是,当您通过 TortoiseHG 或命令行使用时,您没有指定项目是否已打开。您也可以尝试单独拉取和更新,而不是使用fetch.

编辑:它也可能是 TortoiseHg 版本。我之前尝试用一个打开的项目更新另一个版本,而 Visual Studio 2008 只是想重新加载它(没有文件锁定错误),但我使用的是 TortoiseHg 2.0.5。如果您不喜欢它或它不起作用,您可以随时返回到 1.1.*。

于 2011-06-13T19:41:10.053 回答
1

我们在 Mercurial 和 VS2008 中看到了与文件锁定相同的问题,但与 .csproj 文件无关。我们甚至不对我们的项目文件进行版本控制,因为它们是由 cmake 生成的,而是我们对 cmake 文件进行版本控制。

这个问题导致我在一种情况下损失了一天的工作,并在其他情况下导致不正确的合并,因为旧文件正在覆盖新文件。

当这些事情发生时,我正在使用 fetch 扩展。

Z:>hg --version Mercurial 分布式 SCM(版本 1.9.2)( 有关更多信息,请参见http://mercurial.selenic.com )

版权所有 (C) 2005-2011 Matt Mackall 和其他人 这是免费软件;查看复制条件的来源。没有保修;甚至不考虑适销性或特定用途的适用性。

于 2011-10-17T17:03:26.180 回答