在某些时候,我工作副本中的所有文件都标有“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”标志吗?
答案 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)
如果您在工作副本上使用了“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