【问题标题】:Status "S" in SubversionSubversion 中的状态“S”
【发布时间】:2010-12-24 09:39:38
【问题描述】:

在某些时候,我的工作副本中的所有文件都标有“S”符号,如下所示:

$ svn st
M    S   AclController.php
     S   InstallationController.php
     S   CustomerController.php
     S   RedirController.php
     S   IndexController.php
     S   LoginController.php
     S   OrderController.php
     S   ProductController.php
     S   SelfInstallController.php
     S   SelfcareController.php

有趣的是,它只发生在这个特定的工作副本中 - 当我将项目签出到新目录时,它不显示“S”标记。

如何摆脱这个烦人的“S”符号?它显着降低了 WC 状态的清晰度。

更新:我不时使用标准svn switch 语法切换。直到最近才出现这个“S”符号。用于切换的命令是:

svn switch svn+ssh://xxxxxx/subversion/xxxxxxx/releases/1.0.16 .

有什么办法可以清除“S”标志?

【问题讨论】:

  • 状态 S 表示“已切换”,根据svn h st。然而,那个是什么意思……
  • @me_and:切换工作副本:svnbook.red-bean.com/en/1.0/ch04s05.html
  • 仅作记录——因为这是我在网上找到的最接近的问题——我们在尝试将分支合并到主干时遇到了 S 标志问题。这与我们使用外部设备有关。它们在分支上被删除,但主干继续引用它们,因此无法合并。解决方案是删除我们在主干分支上删除的外部组件,提交主干并再次重新集成。希望这对一路上的人有所帮助:) 干杯!

标签: svn switch-statement status


【解决方案1】:

"Item is switched."

如果你在你的工作副本上使用了“svn switch”,这可能会解释它吗?

【讨论】:

  • 我现在一直在尝试使用 switch 命令,但我从来没有得到状态中的“S”..你切换了吗?你是不是用一些非主流的方式做的?
【解决方案2】:

这意味着您已从一个工作副本切换到另一个工作副本,例如您已签出一个工作副本,然后将其交换以与代码分支进行比较。请查看SVN book,了解有关如何撤消此操作的详细信息。

【讨论】:

  • 请注意,该链接指向 SVN 书籍的过时版本。在这里试试:svnbook.red-bean.com/en/1.5
  • 好地方。 Google 又让我失望了。
【解决方案3】:

这意味着文件来自您的 subversion 存储库中的不同位置,而不是包含它们的目录。解决方案是将整个工作副本切换到同一位置。有关如何调用命令的详细信息,请参阅颠覆手册中的twosections

【讨论】:

  • 当“svn switch”命令被某种冲突中断时,我也看到过这种情况,例如您要切换到的分支具有本地文件的存储库版本没有承诺。跳出 svn 来修复导致整个工作副本未完全切换的问题。解决问题,然后重新执行 switch 命令对我有用。
  • 我在出现错误后遇到此问题 - E210002:网络连接意外关闭。重新执行 switch 命令似乎解决了问题,“S”状态消失了。
  • svn 切换期间的中断是导致此问题的原因。请注意。
  • Kevin Sadler 实际上提供了解决方案,而不仅仅是描述问题。 +1
  • 就像@KevinSadler 所说,如果您尝试从 branch1 切换到 branch2 并中止合并冲突,则会出现此问题。解决方案是分支2,然后切换回分支1svn switch <branch2>,然后svn switch <branch1>解决了这个问题。
【解决方案4】:

如果您在目录本身和(其中一个)文件上调用“svn info”,您将获得两个不同的 URL。

如果文件/目录的 URL 与后跟文件名的父 URL 不匹配,则您将获得“S”状态。

您可以发布父节点和子节点之一的网址吗? (在适当的情况下匿名 URL)

【讨论】:

  • 虽然不是答案,但这个“答案”对于提供一些关于正在发生的事情的线索非常有帮助。
  • 这不是答案。
【解决方案5】:

我在成功提交给 SVN 的目录时遇到了这个问题。我的解决方案是在本地删除它然后更新。我看不出任何差异,但 .svn 文件因某种原因被修复(不再是 S)。

【讨论】:

  • 更新到较新的分支后,我在 svn 外部发生了这种情况。手动删除整个外部然后运行 ​​svn update 修复它。 +1!
【解决方案6】:

只是备注:当我从存储库中的相同位置但使用不同的 URL(即使用不同的协议来签出类似 'svn)签出已删除的目录时,我得到了相同的 S 符号checkout svn+ssh://user@scm.gforge...' 反对 'svn checkout --username user https://scm.gforge....'。我通过使用第一次结帐时使用的相同 URL 再次检查它来解决它。

【讨论】:

  • 使用相同的 URI 重新结帐解决了它。谢谢。
【解决方案7】:

从主干 (r100) 切换到某个分支 (r50) 时,我的状态为“S”。我得到了错误:

svn: Failed to add file 'web/.htaccess': an unversioned file of the same name already exists

所有 web/ 的子目录都被标记为“S”。

原因:我已将 .htaccess 删除到 svn:ignore it (r100),然后再次创建它(未版本化并被忽略)。分支 (r50) 在 repo 中仍然有 web/.htaccess。

解决办法:

mv web/.htaccess ../../
svn switch back to trunk
svn switch to branch again

一切都很好。

【讨论】:

  • 我遇到了类似的错误,但我删除了我的违规版本“web/.htaccess”(因为对我来说它是几个目录)并进行了 svn 更新,然后从主干切换回特定标签到主干(特定标签实际上是主干的副本......)并且错误的“S”标志消失了。
【解决方案8】:

如果有人迟到寻找答案(上面已正确说明),我认为这种情况的一个可能原因是父目录上的“svn 开关”失败(如本地具有相同名称且没有 --force 选项的未提交文件),将失败后的所有文件都保留为“未切换”。

这就是为什么(假设原始问题后来得到纠正)在同一个父目录上再次执行“svn switch”确实会将剩余的未切换文件切换到新的 repo 路径。

【讨论】:

    【解决方案9】:

    还有另一种方法可以达到这种状态 - 希望这可以节省一些时间来追踪它。

    我将一个外部库解压缩到我的 SVN 根目录中,结果第三方作者不小心将他们自己的 .svn 文件夹包含在他们的一个文件夹中。这当然会覆盖我们自己的正确 subversion 文件夹,并且与本页其他地方描述的效果相同 - 文件夹似乎意外切换到另一个分支。

    【讨论】:

    • 是的,我刚吃过这个。我已将图标目录从一个项目复制到另一个项目,而没有删除 .svn 目录。要么导出一个干净的目录来使用,要么在复制后遍历并删除 .svn 目录,它会svn add 可以预见。
    【解决方案10】:

    我建议你阅读它的官方帮助,试试:

    svn st --help
    

    svn st --help | grep S
    
    'S' the item has a Switched URL relative to the parent
    

    【讨论】:

    • RTFM 没有回答关于如何摆脱这种状态的问题。
    【解决方案11】:

    对我来说,当“svn switch”命令被中断并使用 TortoriseSVN 解决它时会发生这种情况,我右键单击文件并选择 switch back to parent

    【讨论】:

      【解决方案12】:

      这通常是由于切换分支时的中断造成的。

      切换到不同的分支,然后切换回你真正想要的分支。

      svn switch some_other_branch_url

      svn switch desired_branch_url

      【讨论】:

        【解决方案13】:

        发出时摆脱“S”的简单解决方案

        svn status
        

        就是直接去标有“S”的目录,删除隐藏的.svn目录:

        rm -rf .svn

        之后来源显示为标有“?”并且您可以轻松地添加它们:

        svn 添加路径/到/资源

        【讨论】:

        • 在我的例子中,“S”出现在我从同一服务器上的另一个仓库添加的资源旁边,所以我上面描述的解决方案很明显。
        【解决方案14】:

        在我的例子中,分支中的两个子目录在主干中被删除了。我从顶级目录的分支切换到主干,然后移回主干并遇到问题,这些子目录现在处于状态S

        我使用@ahnbizcad 的答案作为指导。从子目录的父目录(它本身在顶级目录下):

        svn sw <branch_url>

        svn sw <trunk_url>

        【讨论】:

          猜你喜欢
          • 2020-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-15
          • 2011-03-18
          • 1970-01-01
          • 2013-03-12
          相关资源
          最近更新 更多