无法提交到SVN,因为工作副本始终过期。

10

我想提交一些工作,但svn总是失败,并告诉我修改的文件已经过时了。我尝试首先更新,但没有成功。清理也不起作用。如果我还原该文件,复制我的更改并尝试提交,它仍然失败。这不仅仅是一个特定的文件,如果我将整个项目还原到以前的版本,然后修改任何文件,这个问题仍然会出现。

我已经没有主意了,有人有什么建议吗?

谢谢。

6个回答

5
尝试创建一个全新的检出,然后将您的更改复制到其中。我也曾经遇到过一些难以解释的TortoiseSVN问题,而这是唯一有效的解决方法。

我自己也遇到了同样的问题,解决方案总是一样的...新的工作副本,手动复制更改,提交,删除损坏的工作副本... - R. Martinho Fernandes

5
如果您可以更新文件,工作副本似乎可以正常工作。
您更新了目录还是只更新了文件?我曾遇到过这样的情况,svn无法提交,因为仓库中的目录属性发生了变化。对目录进行更新可以解决这个问题。
另一种尝试是使用svn cleanup
新的checkout是最后的选择。

2

以下是我经常看到许多人头疼的常见情况。您可能会处于以下状态:

  1. Working Copy 处于错误状态。SVN 抱怨 'foo' 目录下的 'bar' 文件引起问题。
  2. 开发人员备份 foo 目录。
  3. 开发人员从工作副本中删除 foo 目录。
  4. 开发人员执行 svn update,foo 和 bar 被还原,svn 是满意的。
  5. 开发人员将 foo 的备份复制回工作副本,并且 svn 不再满意,无法更新和/或提交。

开发人员在备份 'foo' 目录时的致命错误是,他们还备份了所有嵌套在 foo 中的隐藏的 ".svn" 目录。

因此,解决方法(根据我的经验)是使用 Tortoise SVN 的 "导出" 功能来备份 'foo'。Tortoise SVN 导出将创建一个不带任何 svn 元数据(.svn 目录)的目录结构副本。这样,一旦回到第三步并且 svn 满意时,当您将备份复制回您的工作副本目录时,svn 应该能够正确捕获更改。

然而,如果您只是要创建单个文件的备份副本,那么这样做是无济于事的。


1
我在重命名Java包(SVN目录)时遇到了错误。
我通过对已删除的目录执行“覆盖并更新”操作(在我的项目中获得空目录)来解决它。然后提交了带有文件的新目录。之后再次删除了项目中的重命名目录,并再次提交了它。

0
如果您正在使用Eclipse,右键单击项目并更新版本。然后在下拉菜单中选择工作副本,选择通知您有关合并冲突的选项。请参考以下图片了解更多信息。enter image description here

0

对我来说,这个过程是有效的: 在一个单独的文件上,我已经恢复了旧版本的文件。 当我想提交项目时,我收到了这个特定文件已经过期的消息,并且没有提交。

应该做的是复制文件的内容并返回此文件的最新svn版本。

完成后,将保存的内容复制到文件中,然后提交即可。 这对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接