我一直试图在Subversion中将目录结构从一个位置移动到另一个位置,但是出现Item '*' is out of date提交错误。

我已经签出了最新版本(据我所知)。 svn st -u除了mv命令外没有其他差异。

评论

您尝试过svn吗?

一个简单的问题避免者是:如果要删除文件夹和内容,请先仅删除内容,即svn,然后再删除文件夹,然后再次svn。

相关说明:subversion.apache.org/docs/release-notes/…

#1 楼

我有时在Windows上使用TortoiseSVN来获得此功能。对于我来说,解决方案是svn update目录,即使没有要下载或更新的修订版。它对元数据起到了一定作用,从而神奇地对其进行了修复。

评论


我更改了文件夹的svn:ignore属性,并开始获取过时错误。但是正如您所说,只需对其进行更新即可。

–兴奋剂
09-10-21在6:49

当我尝试更新该目录时,出现“ svn:两个没有目标的顶级报告”的另一个讨厌仇视SVN的原因。使用git时,我从未遇到过诸如移动目录之类的基本操作这类愚蠢的问题。

– Dan Dascalescu
2010年6月5日,0:21

使用版本GUI时,我的父文件夹上出现“过期”错误。我更新了父文件夹,然后提交而没有错误。

– Milesmeow
2010-12-15 20:18

这也是由于更改svn:对我而言忽略而svn update修复了它。谢谢!

–内森·史威文(Nathan Schwermann)
2011-3-8在4:43

在Subclipse中,使用“团队->更新为HEAD”。和我一起工作很好。

– NeoRamza
2014年1月25日18:19

#2 楼

在尝试了所有明显的操作以及此处的一些其他建议之后,没有任何运气,谷歌搜索导致了该链接(该链接不再起作用)-Subversion说:您的文件或目录可能已过期
对我来说什么也没做。

评论


做到了!谢谢!有人对这种情况如何发生以及如何避免它有任何建议?

–杰西·巴纳姆(Jesse Barnum)
13年14月14日17:13

为我工作。我最终不得不删除所有“ all-wcprops”文件:find。 -name all-wcprops -exec rm -rf {} \;

– Peter Hough
2014年5月20日上午10:49

我想您应该可以通过svn工具和选项解决此问题,而无需删除结构中的文件

–augusto
2014年7月11日在10:14

+1,这是唯一对我有用的东西。其他解决方案则没有。

–克莱顿公爵
2014年7月23日下午13:49

不是为我工作,.sv目录中没有所有wcprops文件

–ulkas
2014-09-18 8:52

#3 楼

我相信此问题来自.svn文件。在旧父母,新父母或旧父母中这都不正确。我会尝试回到您的起点。使用导出获取文件夹的干净副本。将干净副本移动到新位置,然后使用添加和删除进行移动。这是手动执行SVN的操作,但它可能有效。

评论


Subversion实际上确实先复制然后删除,这与在此处删除并添加非常不同。

–蛇
11年8月18日在18:37

#4 楼

我发现这对我有用:

svn update
svn resolved <dir>
svn commit


评论


在没有做过svn update的情况下为我工作,但我有一种情况需要避免更新。 (所以我只是做出了决心并做出了承诺,所以它奏效了)

– BornToCode
13年3月3日在18:04

这一直是我的处境之道,无济于事。谢谢!

–texasdave
19年8月2日,0:40

#5 楼

试图更新本地副本,并还原有问题的项目,但仍然出现“过期”错误。这样做是出于某种原因:

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


#6 楼

我只是在几个文件夹中遇到了同样的问题,这就是我要提交的内容:

1)在“ Team Synchronize”团队透视图中,右键单击文件夹> Override and Update
2)再次删除该文件夹
3)提交并保持快乐

#7 楼

谢谢。
svn update --force / path到filename /

如果您本地目录中的最新文件相同,则不会出现提示。如果文件不同,则会提示输入tf,mf等...选择mf(我的文件已满)可确保没有任何内容被覆盖,并且在完成后我可以提交。

Jay
CompuMatter

#8 楼

我设法通过点击更新按钮来解决它

#9 楼

就像@ Alexander-Klyubin建议的那样,在存储库中移动。它还会更快,尤其是如果您要移动大量数据时,因为您不必再​​次通过网络传输所有数据。

svn mv https://username@server/svn/old/ https://username@server/svn/new/


应该可以正常工作

评论


我正在通过svn遇到这个问题。 svn mv命令系列,这个技巧很好。谢谢。

–DopeGhoti
15/12/28在18:38

#10 楼

在执行命令之前,先使用
删除文件或路径
sudo rm -r /path/to/dir/


之后:

svn up and commit or delete 


#11 楼

您确定您已经检查了标题,而不是较低版本吗?另外,您是否进行了更新以确保拥有最新版本?

http://svn.haxx.se/users/archive-2007-01/上对此进行了讨论。 0170.shtml。

评论


假设您要签入旧副本?那么,使签到工作最简单的方法是什么?

– OJW
2011年6月30日10:00

如果您要还原到旧副本,只需照常签入即可。它将获得一个新的修订号。

– jgreep
2011年7月14日在18:15

#12 楼

直接在存储库中执行移动。

#13 楼

消息“过期”错误至少还有其他原因。在我的情况下,问题是.svn / dir-props,它是通过运行“ svn propset svn:ignore -F .gitignore”创建的。首次。删除.svn / dir-props似乎是一个坏主意,并且可能导致其他错误,因此最好使用“ svn propdel”来清理错误的“ svn propset”。

# Normal state, works fine.
> svn commit -m"bump"  
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 509.

# Set a property, but forget to commit.
> svn propset svn:ignore -F .gitignore .
property 'svn:ignore' set on '.'

# Edit a file. Should have committed before the edit.
> svn commit -m"bump"                   
Sending        .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating

# Delete the property.
> svn propdel svn:ignore .              
property 'svn:ignore' deleted from '.'.

# Now the commit works fine.
> svn commit -m"bump"     
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 510.


#14 楼

如果您使用的是github svn桥,则可能是因为github方面的某些更改。解决方案很简单,您只需要运行svn switch,它可以使其正确找到自身,然后进行更新,一切将正常进行。只需从结帐的根目录运行以下内容即可:

svn info | grep Relative 
svn switch path_from_previous_command
svn update




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


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

#15 楼

您是使用svn mv还是仅使用mv移动它?我认为仅使用mv可能会导致此问题。

#16 楼

我将目录移动到本地计算机进行安全保存,然后svn删除了愚蠢的目录,然后提交了。当我尝试从本地计算机添加文件夹时,它仍然抛出错误(当我尝试重命名文件夹时,SVN移动执行了相同的操作)。所以我还原了,然后我做了一个mkdir DIRNAME,添加并提交。然后,我将内容添加到并提交,并且有效。

评论


我会避免更改存储库内容(svn删除),因为我的本地结帐已被损坏。

–拉尔斯·诺钦斯基(Las Noschinski)
2012年12月8日上午10:26

#17 楼

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

#18 楼

如果曾经解决过类似的问题,只需检出一个新的工作副本并替换为.svn目录,并使用此新检出的副本抛出提交错误。在我的情况下,原因是在存储库损坏并从备份还原后,工作副本指向的是还原的存储库中不存在的修订。还出现“项目过时”错误。在提交之前更新工作副本并不能解决问题,但是如上所述替换.svn可以解决问题。

#19 楼

我这样做了,对我有用:
1。备份您的文件。您只需将代码复制到文本文件即可。
2。右键单击要提交的文件>>团队>>显示历史记录。
3。在“显示历史记录”面板中,您将看到该文件的所有修订版。右键单击文件的最新版本>>获取修订:它将覆盖您的本地更改。
4。现在,将代码与具有备份文件的最新文件合并(步骤1)。
5。同步并提交新合并的文件。

#20 楼

将服务器和客户端升级到Subversion 1.9。如果在正常情况下不应随机发生out of date错误,则在运行commit时,它可能表明您使用的是过时且不受支持的Subversion 1.7或更旧的客户端或服务器。

您应该升级服务器和客户端以解决该问题。请参见相关的Subversion 1.9发行说明条目:通过HTTPv1提交时出现“过时”错误。

评论


Windows上的TortoiseSVN 1.8.8甚至发生在我身上。更新到1.9有所帮助。

–马丁·佩卡(Martin Pecka)
16年7月11日在16:22

#21 楼

错误是因为您没有更新该特定文件,而是先更新然后才可以提交该文件。

#22 楼

尝试了所有内容,但直接更改了.svn。没有帮助,所以这是我的解决方案。

在Eclipse>窗口>显示视图>历史记录中,尽管我多次执行svn“ Override&Update” /“ Revert “ /删除文件并签出。

,所以我去了程序包资源管理器>右键单击文件>替换为>来自存储库的最新版本。现在是最新的修订版。

#23 楼

“清理”它将使您步入正轨。

右键单击svn文件夹,然后单击“清理”,如果出现此错误,请执行此操作。

#24 楼

当我使用主干中的文件更新了较早版本的分支时,发生了这种情况。我使用Windows资源管理器从主干结帐文件夹中复制文件夹,并将其粘贴到发行分支结帐文件夹的Eclipse视图中。现在,Windows资源管理器已配置为不显示以“。”开头的“隐藏”文件,因此我没有将所有不正确的.svn文件粘贴到发行分支签出文件夹中。 Doh!

我的解决方案是删除损坏的Eclipse项目,再次将其检出,然后更仔细地复制新文件。我还更改了Windows以显示“隐藏”文件。

#25 楼

尝试提交某些文件时出现此错误,只是它是我的工作副本中不存在的文件/文件夹。我真的不想经历移动文件和重新签出的麻烦,最后,我最终编辑了.svn / entries文件并删除了令人讨厌的目录引用。

#26 楼

就我而言,仅删除本地版本并重新签出新副本是解决方案。

#27 楼

我刚收到这个错误。我建议您首先检查服务器上是否有原始文件。有时您的本地文件夹中没有进行更改。
如果遇到这种情况,只需删除您的文件夹并再次签出即可。

#28 楼

为了解决该问题,我需要还原有问题的文件,并更新我的工作副本,然后我再次修改了该文件,在执行了这些步骤之后,该错误不再发生了。

#29 楼

只需将svn移到命令行中,或者如果您在Windows中,请选择svn更新选项。


完成此操作后,您就可以进行进一步的操作,例如提交和执行其他操作。


#30 楼

当我尝试从commit目录访问trunk时,我刚收到此消息。从svn update目录执行trunk不能解决错误;但是,从父目录(svn update目录所属的目录)执行.svn确实解决了该错误。

我对发生的事情(除了一个用例,可能有多种原因导致此“ svn: E160024:资源已过期;请尝试更新”):除了trunk之外,还有一个branches目录。我从GitHub将branches/branch-1拉入master。从父目录(即我的工作副本的根目录)执行svn update而不是trunk似乎除了在branches之外还在trunk中做了一些操作。当我再次尝试commit时,没有错误。

但是,正如我上面所说的,这可能是许多其他情况中的一种。

侧面说明:与某人不同建议,我认为在.svn目录中手动播放不是一个好主意。