Статус "S" в Subversion

В какой-то момент все файлы в моей рабочей копии были отмечены символом "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" ?

Ответ 1

Это означает, что файлы находятся в другом месте в вашем репозитории subversion, чем в каталоге, содержащем их. Решение состоит в том, чтобы переключить всю рабочую копию в одно и то же место. См. два разделы в книге подрывной книги для получения подробной информации о том, как для вызова команды.

Ответ 2

Если вы вызываете "svn info" в самой директории и на (одном из) файлов внутри, вы получите два разных URL-адреса.

Вы получаете статус "S", если URL-адрес файла/каталога не соответствует URL-адресу родителя, за которым следует имя файла.

Можете ли вы разместить URL-адрес родителя и одного из дочерних узлов? (при необходимости анонимизируя URL-адрес)

Ответ 3

У меня был статус S 'при переключении с внешней линии (r100) на какую-либо ветвь (r50). Я получил ошибку:

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

Все отлично.

Ответ 4

У меня была эта проблема с каталогом, который я успешно передал SVN. Решение для меня состояло в том, чтобы удалить его локально, а затем обновить. Я не видел различий, но файл .svn был исправлен по любой причине (не более S).

Ответ 5

Просто замечание: я получил тот же символ S, когда я проверил удаленный каталог из того же места в репозитории, но используя другой URL, то есть используя различные протоколы для проверки, например 'svn checkout svn + ssh://[email protected] 'против' svn checkout - userername https://scm.gforge.... ". Я решил это, проверив его снова, используя тот же URL-адрес, который я использовал для первой проверки.

Ответ 6

В случае, если кто-либо приходит к концу в поисках ответа (который указан правильно выше), я считаю, что вероятной причиной этой ситуации является "svn-переключатель" в родительском каталоге, который не работает (как в случае локального uncommitted file с тем же именем и параметр no -force), оставляя все файлы после отказа "un-switched".

Вот почему (если исходная проблема будет исправлена ​​позже), следующий "svn switch" снова в том же родительском каталоге действительно переключит оставшиеся непереключаемые файлы на новый путь репо.

Ответ 7

Это обычно вызвано прерыванием при переключении ветвей.

Переключитесь на другую ветку, а затем вернитесь к ветки, которую вы действительно хотите.

svn switch some_other_branch_url

svn switch desired_branch_url

Ответ 8

Это означает, что вы переключились с одной рабочей копии на другую, например, вы проверили рабочую копию, а затем поменяли ее на предмет сравнения с ветвью кода. Взгляните на SVN book, чтобы узнать, как отменить это.

Ответ 9

Есть еще один способ, которым этот статус может быть достигнут, - который, надеюсь, спасет кого-то некоторое время, отслеживая его.

Я распаковал внешнюю библиотеку в свой SVN-root, и, оказывается, сторонний автор случайно включил свою собственную .svn-папку в одну из своих папок. Это, конечно, перезаписывает нашу собственную, правильную папку subversion и имеет тот же эффект, что и в других разделах этой страницы - папка неожиданно переключилась на другую ветку.

Ответ 10

"Пункт переключен."

Если вы использовали "svn switch" на своей рабочей копии, которая могла бы объяснить это?

Ответ 11

Для меня это происходит, когда команда "svn switch" прервана и для решения проблемы с TortoriseSVN, я нажимаю правой кнопкой мыши на файле и выбираю переключиться на родительский

Ответ 12

Простое решение избавиться от "S" при выпуске

svn status

это просто перейти в каталог, помеченный знаком "S" и удалить скрытый каталог.svn:

rm -rf.svn

Впоследствии источники появляются с отметкой '?' и вы можете легко добавить их свежее:

svn добавить путь/в/ресурс

Ответ 13

В моем случае в сундуке были удалены два подкаталога в ветке. Я переключился с магистрали на ветку из каталога верхнего уровня, а затем вернулся обратно в багажник и столкнулся с проблемой, когда эти подкаталоги теперь находятся в состоянии S

Я использовал ответ @ahnbizcad в качестве ориентира. Из родительского каталога (который сам находится в каталоге верхнего уровня) подкаталогов:

svn sw <branch_url>

svn sw <trunk_url>

Ответ 14

Я предлагаю вам прочитать его официальную помощь, попробуйте:

svn st --help

или

svn st --help | grep S

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