2010-04-26 4 views
2

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

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

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

Спасибо.

+0

Инвестируйте в лучшую мышь, папки не перемещаются сами по себе, поэтому, скорее всего, вы перетаскиваете их, когда вы только намереваетесь переместить указатель мыши над окном папки. –

+0

Мой главный подозреваемый - Eclipse. У меня установлен Subclipse, и я уверен, что я переместил папку нарушителей внутри Eclipse.Я делал это много раз без каких-либо проблем, хотя я не уверен, что было особенным в том, что движение перепуталось. – jthg

ответ

3

Команда 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/quux и foo/quux существует, но нет foo/quux/.svn.

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

$ svn status foo/ 
    S foo/quuux 

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

+0

именно то, что я искал – jthg

Смежные вопросы