SVN提交失败:目录过期

我有一个看起来很简单但很难解决的问题。 删除目录后,我得到提到的错误。 我还没有find解决冲突的解决scheme。 这是如何发生的:

 svn add dir
 svn add dir / file1
 svn提交
 svn add dir / file2
 svn提交
 svn删除目录
 svn提交
 - >提交失败  
 - >目录'/ dir'已过期

显而易见的解决scheme“svn update”不起作用。 svn更新后,下一个提交失败:

提交失败
目录'/ dir'仍然存在冲突。

与此同时,我find了一个解决scheme,但有点麻烦:

 svn解决 - 接受工作目录
 svn commit  - >仍然失败
 svn更新
 svn commit  - >仍然失败
 svn解决 - 接受工作目录
 svn commit  - >没有问题!

两个问题: – 任何人都可以解释这种行为,因为我很好奇 – 这个问题发生在一个更复杂的情况下的Perl脚本。 任何人都可以给我一个简单的解决scheme,是'可行'在Perl脚本?

只要做一个svn update ,然后你的提交应该工作。

我发现这个线程通过谷歌,是非常惊讶的不寻常的弱答案,我注册在stackoverflow发表一个解决scheme后研究的问题。

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

Subversion分别跟踪每个文件和目录的当前修订版本。 无论何时提交文件更改,父目录的修订版都会在回购中发生变化,但工作副本仍旧在其旧版本中具有该目录。

因此,在添加文件之后,在您的scheme中,回购库中的父目录比您的工作副本具有更高的修订版本。 当您尝试删除在过时的版本上工作的目录时。

解决:

在添加文件之后,删除目录之前,执行svn update

一般情况下,如果你不想引入别人的更改,你可以限制更新到目录本身: svn up --depth empty dir

你只需要更新,然后提交

在做最后的提交之前,你是否尝试过svn up dir

为了解决这个问题,我使用'svn revert',然后再次执行提交,这应该删除然后执行'svn delete'中的内容并再次提交。 我得到这个问题,试图重命名目录,但希望这将工作。

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

类似的问题,我面对新鲜的工作空间:

 $ svn delete dir/file D dir/file $ svn ci -m "comment1" Deleting dir/file $ svn delete dir/ D dir $ svn ci -m "comment2" Deleting dir svn: Commit failed (details follow): svn: Item 'dir' is out of date 

为了解决这个问题,我重新更新了源代码并使用了“删除URL”命令:

 $ svn delete --force https://server/path.../dir $ svn update