Subversion中受阻的文件夹

时间:2009-05-20 21:49:53

标签: svn

当您尝试检查Subversion时,“阻碍”的意思是什么?我看到两个红色的文件夹,文本状态为“阻塞”。我不明白这对文档中的任何意义。

当我尝试cleanup命令时,我得到“文件夹名称不是工作目录”。这是我刚刚在VS中创建的文件夹,当我尝试将其添加到Subversion时,它给了我这个错误。所有其他文件夹都没问题。

17 个答案:

答案 0 :(得分:111)

当您删除或移动.svn子目录(不通过SVN命令)时会发生这种情况,因此SVN的工作副本视图已损坏。

首先尝试清理,如果没有解决,请还原(或更新)目录以恢复子目录.svn文件夹。

答案 1 :(得分:9)

在不知道 导致此问题的情况下,解决方案可以是将工作副本(您在本地进行的整个结帐)导出到其他地方。

如果您正在使用tortoisesvn,您可以选择“导出未版本控制的文件”,但我认为如果从命令行执行此操作,它只会导出版本化文件,因此您可能需要执行一些繁琐的任务手动版本化文件。

完成后,请检查一个干净的工作副本,然后将您拥有的导出备份放在其顶部。备份中没有.svn文件夹非常重要。

在人们检查其他工作副本或其他任何破坏.svn条目的工作副本之前,我已经看到过这些错误。

答案 2 :(得分:5)

有同样的问题,并修改如下:

  • 重命名为阻碍的目录
  • 在SVN中创建了原始名称的dir(例如svn mkdir)
  • 更新了父文件夹,因此新创建的目录显示在我的工作副本中
  • 将文件从障碍物复制到新创建的目录并提交给他们

答案 3 :(得分:4)

如果您使用的是* nix系统,请确保您没有创建文件,将其添加到SVN,然后将其删除,将其替换为同名的文件夹。没有帮助OP,但希望它能为人们带来一堆压力。

答案 4 :(得分:1)

这意味着,由于某种原因,在操作过程中发生了冲突。检查是否存在与版本化文件同名的现有无版本文件或文件夹。

(从Tortoise SVN客户端帮助文件转述)

答案 5 :(得分:1)

当我创建了一个指向存储库目录的符号链接时,我也在Windows上看到过这种情况。在这种情况下,存储库根被视为“受阻”。但这似乎没有任何影响。

重现的步骤:

  1. 查看您的回购

    svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
    
  2. 检查您的目录是否正常

    cd plugin_dir
    svn st -u
    

    输出应为

    Status against revision: 1234
    
  3. 创建符号链接(显示问题)

    cd ..
    mklink /d link_dir plugin_dir
    cd link_dir
    svn st -u
    

    输出

    ~           1234  .
    Status against revision: 1234
    

答案 6 :(得分:1)

在Windows计算机上遇到此问题。

在我检查了它所属的整个项目之前,我已经检查了该目录。它给我带来了“障碍”的问题。

我只是删除了该文件夹并从root(该文件夹)运行了更新。它运作良好。

清理等命令对我不起作用。

有些提醒:

  1. 如果文件夹很大,则成本很高。
  2. 如果有任何更改,将导致您丢失所有更改。
  3. 一切顺利。

答案 7 :(得分:1)

可能会导致这种情况的情景有不同的变化。 这是一个例子:

我最终得到了!在不使用'svn rename'命令的情况下在从www重命名为www_a的目录上标记:

  1. 重命名带有原始名称的当前目录,例如重命名为www_b
  2. 将www_a重命名为www
  3. 确保您在www目录
  4. 中执行'svn update'或'svn revert'
  5. 使用'svn delete'删除最新的www目录,不用
  6. 转到父目录并发出'svn update'
  7. 这将恢复原始的www目录
  8. 这次使用'svn rename'将www重命名为www_a
  9. 将www_b重命名为www
  10. 使用'svn add'将其添加到存储库
  11. 此时你应该得到一个正确的svn工作目录。并学习如何解决svn目录混淆问题。

答案 8 :(得分:1)

没有什么对我有用,所以我做了以下事情:

  • 将未版本控制的文件导出到新位置
  • 重命名了现有文件夹
  • 从项目中的导出位置移动了文件夹
  • 重命名了新文件夹
  • 添加,提交
  • 删除了旧的重命名文件夹
  • 重命名了新文件夹
  • commit

答案 9 :(得分:0)

我们经常在旅途中同时拥有多个分支,为了节省我切换或搞乱IIS配置我检查每个分支到一个单独的文件夹。然后,我使用目录链接将这些文件夹连接回IIS中配置的主路径。

所以对我来说,链接目录总是有一个黄色感叹号并被标记为阻塞。我相信这是因为它在技术上创建/移动到SVN之外。

答案 10 :(得分:0)

我得到了这个"阻碍"当我通过Web界面对CMS(WordPress或Drupal)进行更新时目录上的状态 - 应用程序不知道其代码实际上是一个subversion工作副本,因此在更新插件时它会删除该插件的目录(包括.svn目录)并从新版本的插件中删除新目录。

从包含受阻dir的目录中获取.svn目录。我用--force结帐。例如,如果plugin_dir被标记为"〜",则从其父目录中运行:

svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir

任何已存在的文件都会留下并标记为" E"在checkout命令的输出上(标记为" M"当我运行svn status时)。

我有时必须返回并添加任何新的更新文件;或删除应作为更新的一部分删除的文件,因为它们在我结账时重新出现。我相信这些标记为" A"在结帐时,但随后的svn status不会提及它们。

答案 11 :(得分:0)

我在Eclipse中遇到过这种情况,其中一些文件标有红色感叹号。问题是源目录中的一个迷路.svn文件夹。我删除了.svn文件夹,刷新了eclipse,并且能够检入文件。

答案 12 :(得分:0)

将subversion升级到XCode不支持的版本时,也会发生这种情况。

答案 13 :(得分:0)

这是我发现解决此问题的最简单(也是最安全)方式:

  1. 暂时重命名受阻的违规文件或目录(或父目录)(例如,添加" .backup")。
  2. 删除重命名目录中的所有.svn目录(如果适用)。
  3. svn revert从步骤1重命名(现在丢失)的对象。
  4. svn delete还原的对象。
  5. 将步骤1中的备份重新重命名为原始名称。
  6. 将重命名的对象添加并签入svn作为新对象。

答案 14 :(得分:0)

当我用一个具有完全相同名称的文件夹替换文件时,我发生了这种情况。 通过删除旧文件解决,提交,然后添加新文件。 有点hacky,但为我工作:)

答案 15 :(得分:0)

当我使用我的FTP客户端将带有子目录的文件夹粘贴到我的工作副本时遇到了这个问题 - 我知道一旦我按下转移按钮就搞砸了......工作方式的危险太晚了。

我尝试了上述所有建议,其他在网上发现无济于事。每个选项都产生了我的目录被锁定并且无法执行操作的错误。

我进入了我的Time Machine副本,恢复了目录并且很好。我作为预防措施清理了工作副本,正确更新了我的文件并重新开始营业。

答案 16 :(得分:0)

我在受阻目录中删除了.svn并从外部对其进行了更新。然后,外部svn命令将识别这些文件。