it-swarm.cn

你如何克服SVN '过时' 的错误?

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

我已经检查了最新版本(据我所知)。除了mv命令之外,svn st -u没有任何差异。

329
Tim Visher

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

617
Michael

在尝试了所有明显的事情,以及其他一些建议之后,没有任何运气,谷歌搜索导致了这个链接(链接不再工作) - Subversion说:你的文件或目录可能已经过时了

简而言之,诀窍是转到 .svn目录 (在包含违规文件的目录中),和 删除“all-wcprops”文件

没事别的时候为我工作。

40
Tom Bushell

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

39
Jim Deville

我发现这对我有用:

svn update
svn resolved <dir>
svn commit
30
Per Löwgren

试图更新本地副本,并还原有问题的项目,仍然出现“过时”错误。这有点原因:

svn update --force /path/to/dir/or/file
14
Aaron Hall

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

1)在“团队同步”透视图中,右键单击文件夹>覆盖和更新
2)再次删除文件夹
3)承诺并开心

10
Rafael Xavier

谢谢。那只是为我解决了。 svn update --force/path to filename /

如果您在本地目录中的最新文件相同,则没有提示。如果文件不同,它会提示输入tf,mf等...选择mf(我的全部)确保没有任何东西被覆盖,我可以在完成时提交。

Jay CompuMatter

5
Jay

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

5
Alvin567

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

svn mv https://[email protected]/svn/old/ https://[email protected]/svn/new/

应该工作得很好

4
Aeon

在执行命令执行更改之前删除文件或路径

Sudo rm -r /path/to/dir/

之后:

svn up and commit or delete 
3
Clamorious

消息“过时”错误至少还有一个原因。在我的例子中,问题是.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.
2
infogizmo

如果你正在使用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的博客

2
Perkins

你确定你已经检查了头部而不是较低版本吗?另外,您是否已完成更新以确保您拥有最新版本?

http://svn.haxx.se/users/archive-2007-01/0170.shtml 上有关于此的讨论。

2
jgreep

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

2
Alexander

将服务器和客户端升级到Subversion 1.9。

如果out of date错误在通常不应该发生的情况下随机发生,则在运行commit时,可能表示您使用的是过时且不受支持的Subversion 1.7或更早版本的客户端或服务器。

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

1
bahrep

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

1
abhishek pant

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

1
Ryan Bigg

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

1
Sameer Patel

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

1
Bower

我将dir移动到我的本地机器上以便保管,然后svn删除了愚蠢的目录,然后提交了。当我尝试从本地机器添加文件夹时,它仍然抛出错误(当我尝试重命名文件夹时,SVN移动做了同样的事情)。所以我还原了,然后我做了一个mkdir DIRNAME,添加并提交了。然后我添加了内容并提交,并且它有效。

1
Melissa

如果曾经通过简单地检查一个新的工作副本并替换.svn目录来解决一个类似的问题,该目录抛出了这个新签出的提交错误。我的理由是,在存储库损坏并从备份还原后,工作副本指向已还原的存储库中不存在的修订。还有“项目过期”错误。在提交之前更新工作副本并没有解决这个问题,但是如上所述替换了.svn。

1
fileunderwater

试图直接改变.svn。没有任何帮助,所以这是我的解决方案。

在Eclipse> Window> Show View> History 我看到该文件不是最新的版本,虽然我做了多个svn“覆盖和更新”/“恢复”/删除文件和结帐。

所以我去了Package Explorer>右键单击文件> 替换为>最新的存储库

历史视图中的另一个外观显示该文件现在是最新版本。

1
katana0815

“清理”它会让你走上正轨。

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

1
Binara Medawatta

在我的情况下,只删除本地版本并重新签出新副本是一个解决方案。

0
Macilias

我从commit目录尝试trunk时得到了这个。从trunk目录执行svn update并没有解决错误;但是,从父目录(svn update目录所属的位置)执行.svn确实解决了错误。

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

但是,正如我上面所说,这可能是许多其他案例中的一个案例。

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

0
Hibou57

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

0
Al W

当我使用trunk中的文件更新早期版本的分支时,就会发生这种情况。我使用Windows资源管理器从我的trunk checkout文件夹中复制 folders ,并将它们粘贴到我的Eclipse视图中的release branch checkout文件夹中。现在Windows资源管理器配置为不显示以“。”开头的“隐藏”文件,因此我忘记了所有不正确的.svn文件被粘贴到我的发布分支checkout文件夹中。卫生署!

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

0
Jim Ferrans

只需在命令行中执行svn,或者如果您在Windows中,请选择svn update选项。

  • 一旦完成,这将允许您进行进一步的操作,如提交和其他。
0
Indrajeet Gour

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

0
sandolkakos

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

0
brunch875