TortoiseSVN工作副本/修订版未正确提交

时间:2008-12-30 15:54:15

标签: visual-studio-2008 svn tortoisesvn

我在TortoiseSVN源代码控制下有一个VS 2008项目。我是目前唯一使用它的人。

当我收到消息“文件abc已过期 - 请更新”时,我试图提交我的最新更改。当我尝试更新项目时,我得到一整套文件冲突(二进制和文本)。由于我确信我的工作副本包含正确版本的文件,因此我尝试通过选择“我的”作为正确版本来解决冲突。我还尝试将每个文件冲突标记为已解决。然后我就可以提交了。

然而,在此之后,我的VS 2008项目拒绝编译,并且提供了数百个错误(VS 2008报告显示有太多错误要显示的错误!)。有关TortoiseSVN的冲突解决方案的事情完全搞砸了项目,它拒绝建立。

我可以强制TortoiseSVN将我的工作副本作为最新版本保存到存储库中,而不检查冲突吗?

3 个答案:

答案 0 :(得分:3)

我希望您在更新之前备份了工作副本,因为冲突很可能会导致源文件中出现大量>>>>>> theirs<<<<<<< mine条评论

虽然我不了解冲突最初是如何发生的(因为你是唯一一个提交到存储库的人),但是有可能解决。

将当前的“工作”工作副本移至安全位置。检查项目是否完全新鲜。将源文件复制到新的工作副本上,然后提交生成的更改。

当源树由多个目录组成时,单独复制每个目录可能会非常繁琐。为了解决这个问题,您可以使用TortoiseSVN导出安全的“工作”工作副本 - &gt;全部导出。这将创建一个没有所有.svn文件和目录的目录。然后,您可以将此导出的目录复制到新的工作副本上。

答案 1 :(得分:1)

我发现Visual Studio项目文件很容易出现自动合并问题。问题是文件的格式是如此重复,合并实用程序很难确定更改是添加还是修改。此外,某些操作似乎会导致Visual Studio重新排列项目文件中的entires。同样,这些更改对于合并实用程序正确处理来说相对困难。

我依靠两个选项中的一个来解决这个问题。首先,您可以在记事本中打开项目文件并手动修复。它们并不复杂,你通常可以只遵循这种模式,确保没有任何不合适的地方。

第二种方法是恢复项目文件,然后在Visual Studio中根据需要添加和删除文件并进行其他更改。

如果提交是经常提交的,那么这些任务都不会太复杂。如果炸弹被放置在存储库中,那么这就是为什么早期提交并经常是一个好主意的众多原因之一。 =)

答案 2 :(得分:0)

Visual Studio和TortoiseSVN并不能很好地协同工作。我注意到的一件事是你无法在构建目录中成功编写任何内容,因为VS认为它“拥有”构建目录,并且可能会删除你的.svn文件夹(这是否仅适用于涉及干净的构建? )

您可能会看到集成到Visual Studio中的Subversion客户端。 AnkhSVN浮现在脑海中,但研究这个问题的一个很好的起点是http://sharpsvn.open.collab.net/。或者,您可以考虑直接从构建前或构建后任务使用sharpsvn,也可以考虑在Visual Studio中使用宏。