Answers:
当您删除或移动了.svn子目录(不通过SVN命令)时,就会发生这种情况,因此SVN的工作副本视图已损坏。
首先尝试清理,如果仍然不能解决,请还原(或更新)目录以还原子目录.svn文件夹。
不知道是什么原因造成的,解决方案可能是将工作副本(您在本地拥有的整个结帐)导出到其他地方。
如果您使用的是tortoisesvn,则可以选择“导出未版本化的文件”,但是我认为,如果从命令行执行此操作,它只会导出版本化的文件,因此您可能需要手动复制未版本化的文件。
完成后,签出干净的工作副本,然后将导出的备份放在其顶部。备份中没有.svn文件夹,这一点非常重要。
在人们检出其他工作副本中的工作副本或任何损坏.svn条目的东西之前,我已经看到这些错误。
如果您使用的是* nix系统,请确保未创建文件,将其添加到SVN,然后将其删除,并用相同名称的文件夹替换。对OP没有帮助,但希望它可以减轻某人的压力。
场景的不同变化都可能导致这种情况。这是一个例子:
我最终以!在从www重命名为www_a的目录上标记而不使用'svnname'命令:
此时,您应该获得正确的svn工作目录。并学习一两个关于如何解决svn目录混乱的知识。
当我创建到存储库目录的符号链接时,我也在Windows上看到了这一点。在这种情况下,存储库根目录被视为“受阻”。不过,这似乎没有任何影响。
重现步骤:
签出您的仓库
svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
检查您的目录是否正确
cd plugin_dir
svn st -u
输出应为
Status against revision: 1234
创建符号链接(显示问题)
cd ..
mklink /d link_dir plugin_dir
cd link_dir
svn st -u
输出将是
~ 1234 .
Status against revision: 1234
当我通过Web界面更新CMS(WordPress或Drupal)时,我在目录上得到此“受阻”状态-应用程序不知道其代码实际上是Subversion工作副本,因此在更新插件时会删除该插件的目录(包括.svn
目录),并从新版本的插件中放入新目录。
要从.svn
包含受阻目录的目录中获取该目录。我通过结帐--force
。例如,如果plugin_dir
标记为“〜”,则从其父目录运行:
svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
已经存在的所有文件都保留下来,并在checkout命令的输出上标记为“ E”(在我运行时标记为“ M” svn status
)。
有时,我不得不回去添加更新中所有新文件。或删除应作为更新的一部分删除的文件,因为它们在我结帐时会重新出现。我相信这些在结帐时会标记为“ A”,但随后svn status
将不会提及它们。
我在Eclipse中遇到了这个问题,在该文件中,某些文件带有红色感叹号。问题是源目录中有一个.svn文件夹。我删除了.svn文件夹,刷新了Eclipse,并且能够检入文件。
当我用完全相同的名称的文件夹替换文件时,这发生在我身上。通过删除旧文件来解决,提交,然后添加新文件。有点hacky,但为我工作:)