2009-12-08 62 views
70

在某些时候,在我的工作拷贝所有文件已经标有“S”符号,如下图所示:状态“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 

有趣的是它仅发生INT这个特殊的工作副本 - 当我签出项目到新目录,它不显示“S”标记。

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

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

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

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

+6

状态S表示 “切换”,根据'SVN^h st'。 **的含义是什么**但是...... – 2009-12-08 12:00:56

+1

@me_and:切换工作副本:http://svnbook.red-bean.com/en/1.0/ch04s05。html – 2009-12-08 12:04:23

+0

@Chris:发现它已经:) – 2009-12-08 12:13:37

回答

70

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

+32

我见过这种情况也发生了,当“svn开关“命令被某种类型的冲突所中断,例如您正在切换到具有未提交的本地文件的存储库版本的分支。跳出svn修复,导致整个工作副本未完全切换。 – khedron 2011-08-09 16:47:17

+4

我有这个错误 - E210002:网络连接意外关闭,重新执行开关命令似乎解决了问题,并且“S”状态消失了。 – 2015-04-22 19:42:37

+1

svn开关中断造成这种情况。意识到。 – sanya 2015-08-12 16:22:55

1

"Item is switched."

如果使用“SVN开关”你的工作副本这或许可以解释呢?

+0

我一直在尝试使用开关命令,但我从未获得状态“S”..您是否切换?您是否以某种非主流方式执行此操作? – stiank81 2009-12-08 12:28:45

3

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

+1

请注意,该链接是到SVN书的过时版本。试试这里:http://svnbook.red-bean.com/en/1.5/ – 2009-12-08 12:30:34

+0

好点。谷歌再次失败我 – 2009-12-08 12:43:06

10

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

如果文件/目录的URL与父文件的URL后跟文件名称的URL不匹配,就会得到'S'状态。

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

+0

虽然不是答案,但这个“答案”对于给出一些线索是很有帮助的。 – FlipMcF 2016-05-27 17:05:42

+0

这不是一个答案。 – ahnbizcad 2016-06-01 22:13:38

6

我有成功提交给SVN的目录的这个问题。对我来说,解决方案是在本地擦除然后更新。我看不出有什么区别,但是.svn文件是由于某种原因而修复的(不再有S)。

+0

我更新到一个更新的分支后,发生了这种情况发生在svn外部。手动删除整个外部,然后运行svn update修复它。 +1! – 2011-04-09 01:33:25

4

只是一句话:我得到了相同的S符号,当我从在信息库中同一位置检出删除的目录,但使用不同的URL,即使用不同的协议签如“svn签SVN + SSH ://[email protected] ...''svn checkout --username user https://scm.gforge ....'。我通过使用与第一次结帐时使用的相同的URL重新检出来解决此问题。

+0

用相同的URI重新检查解决了它。谢谢。 – sepehr 2014-06-24 06:58:07

7

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

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

所有的web /的子目录是“小号'标记。

原因:我删除了.htaccess到svn:忽略它(r100),然后再次创建它(未版本化和忽略)。分支(r50)在回购中仍然有web/.htaccess。

解决办法:

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

一切都很好。

+0

我有一个类似的错误,但我删除了我的违规版本的“web/.htaccess”(因为对我来说,它是几个目录),并进行svn更新,然后从中继切换到特定标签回干(具体标签是实际上是一个躯干的副本...),并且错误的'S'标志消失了。 – Kasapo 2012-01-20 17:11:24

4

如果有人迟到寻找答案(上面已经说得对),我认为这种情况可能的原因是父目录上的'svn switch'失败(例如本地未提交的文件具有相同的名称,并且没有--force选项),在失败“未切换”之后保留所有文件。

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

3

还有另一种方式可以实现这种状态 - 希望能够节省一些人的时间。

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

+1

是的,我只是有这个。我已经从一个项目复制了一个图标的目录到另一个,而不删除'.svn'目录。或者导出一个干净的目录来使用,或者在复制之后通过并删除.svn目录,并且它会'可预测地添加'。 – Eric 2015-06-04 20:32:26

-5

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

svn st --help 

svn st --help | grep S 

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

RTFM没有回答这个问题,这个问题是关于如何摆脱这种状态。 – Madoc 2013-09-24 07:42:25

0

对我来说,当“SVN开关”命令中断,并与TortoriseSVN解决它出现这种情况,我的权利点击文件并选择切换回父母

3

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

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

svn switch some_other_branch_url

svn switch desired_branch_url

0

一个简单的解决方案,摆脱了“S”当你发出

svn status 

是刚刚进入标有“S”和迪尔删除隐藏的.svn目录:

rm -rf .svn

之后信息显示标有'?'你可以很容易地将它们添加新鲜:

SVN添加路径/到/资源

+0

在我的情况下,'S'出现在我从同一服务器上的另一个回购中添加的资源旁边,所以我刚刚描述的解决方案很明显。 – habamedia 2018-01-30 00:34:48