SVN 一直出现 "<<<<<<< .mine" 的文件损坏,如何修复?

51

我有一个使用Visual Studio C#编写的项目,它在版本控制(SVN)下。 我总是可以提交和更新项目而没有任何问题。 但几个小时前,当我尝试启动/重新构建项目时,Visual Studio会抛出以下错误:

文件的值无效:“<<<<<<<.mine”。路径中有非法字符。

我不知道该如何解决这个问题。我应该怎么办?

13个回答

66
当 SVN 遇到冲突时会发生什么:你修改了一个文件,服务器上的文件也被修改了,无法(轻易地)自动合并。现在需要决定哪个是正确的解决方案。
Subversion 会将 diff 添加到你的源文件中(并创建与其相邻的文件,称为 OriginalName.mine(未更改)和 OriginalName.rsomething(未更改,服务器版本))。
修复冲突并告诉 Subversion 这已经被解决

4
谢谢大家。通过查看我的工作副本的差异,我找到了问题,似乎是 Debug 文件夹中的一个文件(今天我从 SVN 中删除了这个文件夹)。我的一个同事在未得到解决的情况下解决了问题。 - MysticEarth
2
在哪个文件中解决冲突?.mine.rOLDREV.rNEWREV?答案:都不是。相反,应该在原始文件中进行修复(没错:SVN尝试提交会留下4个令人困惑的文件)。 - Withheld

41

只需删除obj文件夹,程序就能正常运行。


obj 文件夹与 Subversion 损坏文件无关。 - MysticEarth
4
有时候,如果你在解决冲突之前尝试构建项目,会出现主题行中的错误,并且即使你已经解决了冲突,它还会一直出现。在目录中搜索并没有发现与“<<<<.mine”有关的内容,因为它以二进制形式嵌入在 obj 下面;因此你不知道是什么导致了构建问题,也不知道如何修复它。删除 /obj 可以立即解决这个问题。所以你错了,obj 文件夹确实与 Subversion 损坏文件有关。 - Brandon Arnold
+1 这对我也起作用。 "错误列表" 没有列出任何特定的文件,我手动解决了冲突,ReSharper 在解决方案中看不到任何问题,查找 找不到任何 ".mine" 的东西,但 VS 仍然会拒绝 构建 或甚至 清理。删除 "obj" 文件夹是一个即时修复。无需重新启动 VS。 - Mathieu Guindon
没错,对我也起作用了。我只是删除了“obj”文件夹,然后就可以正常运行了。 - Anjan Kant
感谢您的解决方案! - Rapunzo

11

删除导致错误的代码,并删除扩展名为.mine、<somerevision>和<some_other_revision>的三个文件。svn更新了包含“冲突”的文件,你需要手动解决这些冲突。通常这意味着你编辑了一个文件,别人也编辑了同一个文件并检入了更改,而你在检出已更改的文件时没有注意到。


也许这是一个愚蠢的问题,但我在哪里可以找到.mine文件?我似乎找不到它们。此外,没有文件冲突,当我搜索所有文件中的“mine”时,什么都找不到... - MysticEarth
就在源文件旁边,由于冲突标记而无法编译(了)。检查具有相同基本名称但不同扩展名的文件。 - Benjamin Podszun
1
好的,Visual Studio没有给出任何文件名,只有上面的错误。我也没有看到任何冲突标记... - MysticEarth
它将存在于.csproj(或.vcproj或其他)文件或.sln文件中。您可以使用svn的适当命名的“blame”功能查看提交有问题的代码行的人。哪个人错误地解决了冲突。 - Pike65
3
暂时忘记 Visual Studio,导航到文件系统中的文件夹。您将在那里找到所提到的文件。尽管您可以从 IDE 中解决冲突(编辑该文件)。邪恶的思路:也许您的某些同事已成功将包含冲突标记的文件检入..? - Benjamin Podszun
谢谢大家。通过查看我的工作副本的差异,我发现了问题,似乎是Debug文件夹中的一个文件(今天我从SVN中排除了它)。我的一位同事在没有解决问题的情况下解决了这个问题。 - MysticEarth

10

删除obj文件夹中的所有内容。

svn版本控制中删除obj文件夹。因为每次构建时它都会更新,当其他开发人员提交更改到解决方案时,SVN无法合并obj文件夹中的文件并引发错误。

文件具有无效值"<<<<<<< .mine"。路径中有非法字符。


6

目前我正在编写一个自己的示例,但像往常一样,svnbook有一个更全面的示例,如果您使用Tortoise,请查看http://tortoisesvn.net/docs/release/TortoiseSVN_en/index.html(特别是第4章日常使用指南)。 - Oliver

3

删除调试文件对我有用(请参见上面的评论而不是答案)。 在将12个文件夹从svn的一个部分移动到另一个部分后,我遇到了这个问题。因此,如果您在移动项目后遇到此错误,而该错误未指向实际文件,则可能是您的问题。


谢谢,是因为调试文件夹没有指向实际文件。 - Wael Dalloul

2
如果您安装了AnkhSVNVisualSVN,解决这个问题可能就像右键单击解决方案浏览器中的文件并选择编辑冲突一样简单。
这将在您的合并编辑器中打开更改的文件。(有关AnkhSVN的Subversion用户工具,请参见“工具”->“选项”->“源代码控制”->“Subversion用户工具”)。使用像免费使用的SourceGear DiffMerge或TortoiseMerge这样的好的合并工具,解决冲突只需几个鼠标点击即可。

VisualSVN实际上是使用TortoiseSVN来完成这个操作的。您也可以通过在Windows资源管理器中右键单击文件并选择“编辑冲突”来使用TortoiseSVN完成此操作。 - djeidot

1

1) 只需保存您在文件中编辑的本地更改。

2) 恢复文件。

3) 从SVN更新它。

4) 粘贴您的本地更改。


1
这是我经常做的事情,以克服这个错误。 - MansoorShaikh

1

1

我关闭了IDE,然后删除了obj文件夹,重启IDE并重新构建我的代码。这对我起作用了。


3
不需要关闭/重新打开VS。在“解决方案资源管理器”中点击“显示所有文件”,然后删除“Obj”文件夹即可。完成。 - Mathieu Guindon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接