我一直试图将目录结构从一个位置移动到Subversion中的另一个位置,但我得到一个项目“*”是过期提交错误。

我已经检查了最新的版本(据我所知)。SVN st -u除了mv命令外没有其他区别。


当前回答

当我试图提交一些文件时,我得到了这个错误,只有它是一个文件/文件夹,在我的工作副本中不存在。我真的不想经历移动文件和重新签出的麻烦,最后,我最终编辑了.svn/entries文件并删除了冒犯的目录引用。

其他回答

尝试更新本地副本,并恢复有问题的项目,但仍然得到“过期”错误。出于某种原因,这种方法奏效了:

svn update --force /path/to/dir/or/file

当我试图从主干目录提交时,我刚刚得到了这个。从中继目录更新svn没有解决错误;但是,从父目录(. SVN目录所属的目录)进行SVN更新确实解决了这个错误。

我对发生的事情的猜测(在其他用例中,可能有多个原因导致这个“svn: E160024:资源过期;尝试更新”):沿着主干,有一个分支目录。我从GitHub拉了一个分支/分支-1到master。从父目录(即我的工作副本的根目录)而不是trunk进行svn更新,似乎在分支中除了trunk之外还做了一些事情。当我再次尝试时,没有出现错误。

然而,正如我上面所说的,这可能只是众多案例中的一个。

附注:与某些人建议的不同,我不认为在.svn目录中手动播放是一个好主意。

我在删除一些目录后随机收到这个错误,每个目录包含一些文件。我通过Netbeans删除了这些目录,并意识到它实际上并没有删除它们。它似乎只是删除了目录中的所有内容,并在Netbeans中删除了对该目录的引用。但是它们仍然存在于文件系统中。确保它们从文件系统中删除,然后再次尝试提交。

如果你正在使用github的svn网桥,很可能是因为github这边的东西发生了变化。解决方案很简单,你只需要运行svn switch,让它正确地找到自己,然后更新,一切都将工作。只需从签出的根目录运行以下命令

svn info | grep Relative 
svn switch path_from_previous_command
svn update

or

svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update

这个解决方案的基础来自Lee Preimesberger的博客

我有时会在windows上使用TortoiseSVN。对我来说,解决方案是svn更新目录,即使没有需要下载或更新的修订。它对元数据做了一些事情,神奇地修复了它。