Subversion中的状态“S”

时间:2009-12-08 11:57:40

标签: svn switch-statement status

在某些时候,我工作副本中的所有文件都标有“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”标志吗?

14 个答案:

答案 0 :(得分:74)

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

答案 1 :(得分:11)

如果您在目录本身上调用'svn info',并且在(其中一个)文件中调用两个不同的URL。

如果文件/目录的网址与父网址不匹配,后跟文件名称,则会显示“S”状态。

您可以发布父节点的url和其中一个子节点吗? (在适当的地方匿名URL)

答案 2 :(得分:8)

从trunk(r100)切换到某个分支(r50)时,我有' S '状态。我收到了错误:

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

所有网络/子目录都标有“ S ”。

原因:我已将.htaccess删除为svn:忽略它(r100),然后再创建它(无版本并忽略)。分支(r50)在回购中仍然有web / .htaccess。

解决方案:

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

一切都很好。

答案 3 :(得分:6)

我在成功提交到SVN的目录中遇到此问题。我的解决方案是在本地擦除然后更新。我看不出任何差异,但.svn文件因任何原因而被修复(不再是S)。

答案 4 :(得分:4)

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

答案 5 :(得分:4)

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

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

答案 6 :(得分:4)

这通常是由切换分支时的中断引起的。

切换到其他分支,然后切换回您真正想要的分支。

svn switch some_other_branch_url

svn switch desired_branch_url

答案 7 :(得分:3)

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

答案 8 :(得分:3)

还有另一种方法可以实现这种状态 - 希望能够节省一些时间跟踪它。

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

答案 9 :(得分:1)

"Item is switched."

如果您在工作副本上使用了“svn switch”,可以解释一下吗?

答案 10 :(得分:0)

对我来说,当" svn switch"命令被中断并使用TortoriseSVN解决它,我右键单击该文件并选择切换回父级

答案 11 :(得分:0)

摆脱' S'当你发出

svn status

只是去了标有“' S'并删除隐藏的.svn目录:

  

rm -rf .svn

之后,来源显示标有'?'你可以轻松地添加它们:

  

svn add path / to / resource

答案 12 :(得分:0)

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

我以@ahnbizcad的回答为指导。从子目录的父目录(它本身在顶层目录下)中:

svn sw <branch_url>

svn sw <trunk_url>

答案 13 :(得分:-5)

我建议您阅读其官方帮助,尝试:

svn st --help

svn st --help | grep S

'S' the item has a Switched URL relative to the parent