我在Visual Studio中使用VisualHG。有时拉(使用Fetch)我收到此错误消息:
[Errno 13] C:\ inetpub \ Websites \ SomeProject.csproj:进程无法访问该文件,因为它正由另一个进程使用
这反过来使我的存储库变得混乱,导致我必须删除所有内容并再次拉动。有什么办法可以防止这种情况发生吗?只有当在Visual Studio中打开项目并使用VisualHG拉动时,从TortoiseHG或命令行中提取这个问题似乎永远不会发生。
答案 0 :(得分:2)
我们在TortoiseHg 2.0.4和VS2008的机器上看到的东西非常相似。它看起来像Visual Studio它在检测到文件修改事件时暂时锁定文件,这导致Hg失败。我们在TortoiseHg和命令行客户端都看到了这个。
虽然它在pull
期间发生时非常令人沮丧,但它也会在merge
期间发生,这可能是非常灾难性的。
答案 1 :(得分:1)
您可能唯一能做的就是在fetch
时不打开Visual Studio。它不是引起它的pull
的{{1}}部分,而是fetch
。 Visual Studio似乎锁定了您的项目文件,并且不会让Mercurial在打开时对其进行更改。
但是,当您通过TortoiseHG或命令行使用update
时,您没有指定项目是否已打开。您也可以尝试单独提取和更新,而不是使用fetch
。
编辑:它也可能是TortoiseHg版本。我尝试使用打开的项目更新到不同的版本,而Visual Studio 2008只是想重新加载它(没有文件锁定错误),但我正在使用TortoiseHg 2.0.5。你总是可以回到1.1。*如果你不喜欢它或它不起作用。
答案 2 :(得分:1)
我们已经看到与Mercurial和VS2008文件锁定相同的问题,但与.csproj文件无关。我们甚至没有版本控制我们的项目文件,因为它们是由cmake生成的,我们的版本控制着我们的cmake文件。
这个问题导致我在一个案例中失去了一天的工作,并在其他情况下导致不正当的合并,因为较旧的文件覆盖了较新的文件。
当这些事情发生时,我正在使用fetch扩展程序。
Z:> hg --version Mercurial Distributed SCM(版本1.9.2)(参见 http://mercurial.selenic.com了解更多信息)
版权所有(C)2005-2011 Matt Mackall等人这是免费软件; 查看复制条件的来源。没有保修;甚至不 适用于特定目的的适销性或适用性。