Ищете неуместные каталоги в рабочей копии SVN? - PullRequest
2 голосов
/ 27 апреля 2010

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

Во-первых, кто-нибудь знает, есть ли хороший способ уловить проблему еще до того, как коммит будет выполнен?Круиз-контроль обычно улавливает проблему, но есть множество случаев, которые он не поймает.

Во-вторых, есть ли быстрый и простой способ проверить папку «.svn», если я подозреваю,это один?Я определенно могу сделать это вручную, определив, какой каталог неуместен, основываясь на ошибках компилятора, или отправив рабочую копию с другой чистой проверкой.Но это похоже на проблему, которую SVN может диагностировать за секунду, предоставляя мне список всех каталогов, чей родительский каталог в рабочей копии не совпадает с его родительским каталогом в хранилище.Есть ли какой-нибудь способ заставить SVN дать мне такой список?

Спасибо.

1 Ответ

3 голосов
/ 27 апреля 2010

Команда svn status может помочь с этим.

Например, предположим, что у меня есть каталог foo, а в хранилище есть подкаталоги bar и baz.И предположим, что я перехожу baz в bar, не сказав SVN.Затем я получаю:

$ svn status foo/
?      foo/bar/baz
!      foo/baz

? для foo/bar/baz указывает, что он существует в локальной версии, но не в хранилище - точнее, что он существует в каталоге foo/bar наВаша локальная копия, но информация о SVN в foo/bar/.svn не имеет записи об этом.Аналогичным образом, ! для foo/baz указывает, что он существует в хранилище (или, точнее, в информации в foo/.svn), но фактический файл / каталог в вашей локальной копии отсутствует.

Между тем, если проблема заключается в пропаже самой папки .svn, которая будет отображаться так:

$ svn status foo/
~      foo/quux

Это означает, что foo/.svn говорит о том, что должно быть foo/quuxfoo/quux существует, но нет foo/quux/.svn.

Наконец, если проблема в том, что в каталоге есть .svn, который указывает куда-то, кроме подкаталога его родителя - скажем, выВы сделали svn switch для этого каталога - тогда вы получите следующее:

$ svn status foo/
    S  foo/quuux

Если вы используете Windows и используете TortoiseSVN, вы можете получить ту же информацию, щелкнув правой кнопкой мыши вкаталог верхнего уровня и выбрав «TortoiseSVN -> Проверить наличие изменений» во всплывающем меню.Вещи, которые были переключены (т. Е. Неправильный каталог .svn), будут отображаться как "нормальные (ий)" в своем статусе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...