SVN路径名未被':'终止

时间:2013-12-18 17:24:30

标签: svn merge git-svn

以下命令

svn log -g
在我的存储库上执行的

会返回大量日志信息,但最终会以

消失
svn: Pathname not terminated by ':'

这里的故事是,过去有人手动编辑了合并信息(因为他们使用的是git-SVN桥接器,但是看起来mergeinfo没有正确修复。

不幸的是,这会导致我的IDE出现问题,因为它正在执行命令

svn log --xml --with-all-revprops -r HEAD:1 -v -l 101 -g

在执行使用相同错误消息的合并之前针对存储库。

我们如何修复存储库以摆脱这场噩梦?

2 个答案:

答案 0 :(得分:0)

您可以使用以下命令手动编辑目录或文件上的mergeinfo:

$ svn propedit svn:mergeinfo <directory>

这将在文本编辑器中打开mergeinfo,默认为vi。编辑,保存并退出。然后提交更改:

$ svn commit <directory>

答案 1 :(得分:0)

我认为您可以使用此命令找到损坏的svn:mergeinfo

svn pget svn:mergeinfo -R . | grep -v :

这将打印缺少冒号的svn:mergeinfo行。

有效svn:mergeinfo行通常如下所示:

trunk - /branches/feature1:8

其中trunk是具有svn:mergeinfo属性的路径,/branches/feature1是合并的路径(在此示例中为trunk),冒号后已合并的修订号和范围列表,例如8,11-15,41,44

<强>更新

本文可能相关:http://limedaley.com/post/changing-paths-while-migrating-subversion-repositories

在该示例中,svn:mergeinfo内容被错误地重写,但在我看来,这将导致完全破坏的存储库,这与您的情况不同,所以我不知道....

也许一种可能的解决方案是删除所有svn:mergeinfo属性,看看是否能解决您的问题,然后在以后正确添加它们。你可以删除这样的属性:

svn propdel svn:mergeinfo -R .