SVN - 工作副本中的文件似乎“丢失”

7

我刚刚遇到了一件关于svn的奇怪情况。我的一个文件在工作副本中似乎“丢失”了。当我查看服务器或在其他位置进行包含该文件夹的全新检出时,该文件是存在的,但在这个特定的工作副本中似乎“消失了”。

svn状态报告没有任何更改(甚至没有缺少的文件)

svn更新没有任何效果

我甚至尝试重新将文件导出到我的工作副本中,但没有效果。

  • 这里发生了什么?
  • 如何修复工作副本?

如果可能的话,我想避免不得不全新检出整个工作副本。

5个回答

11

SVN 1.6.1 客户端(包括TortoiseSVN)存在一种错误,有时会错误地将文件夹设置为深度“empty”。这会导致您所描述的症状。(请注意,可能是svn 1.6.1将文件夹设为“empty”,即使您已经升级到更新的svn客户端,文件夹仍保持为空。)

要解决此问题,请使用TortoiseSVN中的“更新到修订版本”菜单项,并选择深度“fully recursive(完全递归)”。


4

您应该:

  • 确认您正在更新正确的修订版本,并且您正在更新当前项目及其所有子项...类似于 svn update --revision HEAD --depth infinity
  • 使用 svn cleanup 进行清理,然后重试

2
“--depth infinity” 是默认设置。我认为你的意思是 “--set-depth infinity”,它可以将浅层工作副本文件夹转换为完整的检出状态。 - Wim Coenen
说到默认值,--revision HEAD 也是不必要的。 - Wim Coenen
2
@wcoenen 尽管这些是默认设置,但如果您明确地检出到某个修订版本并指定了某个深度,则进一步的更新将保留这些设置,并再次指定默认值将使Subversion停止维护该行为。 set-depth 将使深度更改变得粘性,因此对于这个问题加1! :) - Miguel Ventura
2
对我而言有效的方法是 svn update --revision PREV。它添加了所有缺失的文件。然后跟着执行 svn update 来获取最新版本。 - Nufail

2
首先,在应该存在该文件的目录中使用svn info命令,检查subversion是否与您对工作副本的了解相同。URL是否为正确的分支?
接下来,使用svn update命令检查未提交的更改情况。也许有些东西删除了那个文件?如果是这样,只需还原删除操作:svn revert <file>
接下来(在确保已保存此目录中更改内容的副本后),您可以直接删除整个目录并重新获取它:cd ..; rm -rf dir; svn update dir。这将重新创建该目录,并包含您的文件。

2
我也遇到了这个bug。问题肯定在相关文件的.svn目录中。 尝试用新的(部分)检出的对应目录替换此.svn目录。

-1

尝试仅从您的本地检出中删除该特定文件,然后再次更新。


文件已经丢失,因此这是无操作并且没有帮助的。 - Ether

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