SVN提交失败:目录已过期

Jos*_*rts 54 svn commit

我有一个看似非常简单但很难解决的问题.删除目录后,我收到了上述错误.我还没有找到解决冲突的解决方案.这是它发生的方式:

svn add dir
svn add dir/file1
svn commit
svn add dir/file2
svn commit
svn delete dir
svn commit
--> commit failed  
--> Directory '/dir' is out of date

明显的解决方案'svn update'不起作用.在svn更新后,下一次提交失败:

Commit failed
Directory '/dir' remains in conflict.

与此同时,我找到了一个解决方案,但它有点麻烦:

svn resolve --accept working dir
svn commit --> still fails
svn update
svn commit --> still fails
svn resolve --accept working dir
svn commit --> NO PROBLEM!

两个问题: - 任何人都可以解释这种行为,因为我对它很好奇 - 这个问题发生在更复杂的情况下的perl脚本中.任何人都可以给我一个简单的解决方案,在perl脚本中是'doable'吗?

khm*_*ise 81

只需做一个svn update然后你的提交应该工作.

  • 打败我.此外,更新应该是您正常工作流程的一部分.我通常在提交之前更新. (3认同)
  • svn update不会删除任何更改.它会将存储库中的更改与您的本地更改合并,以便稍后提交.但它永远不会消除任何变化. (2认同)

Ste*_*ich 60

如果我正确理解颠覆,问题是这样的:

Subversion分别跟踪每个文件和目录的当前版本.每当提交对文件的更改时,父目录的修订都会在repo中更改,但是您的工作副本仍然具有旧版本中的目录.

因此,在添加文件后的场景中,repo中的父目录的修订版本高于工作副本.当您尝试删除处理过期版本的目录时.

解决:

做一个svn update添加文件后,但删除目录之前.

通常,如果您不想引入任何其他人的更改,则可以将更新限制为目录本身:svn up --depth empty dir.


小智 5

进行更新、清理然后提交。