2008-09-25 9 views
1

Это может показаться глупым, но иногда я сталкиваюсь с конфликтами версий между двумя версиями подрывной деятельности. Я монтирую каталог на сервере разработки с помощью sshfs, а затем редактирую код с помощью моего локального Vim. Для вещей подрывной деятельности, таких как обновление, передача и т. Д. Я нахожу ssh на сервере и делаю это там. Однако иногда я смешиваю свои оболочки и случайно делаю обновление или фиксацию в своей локальной оболочке в смонтированном каталоге. Subversion выходит с ошибкой, и это нормально. Однако, когда я пытаюсь сделать то же самое на сервере разработки в моей сессии ssh, subversion говорит, что рабочий каталог/подрывная версия имеет неправильную версию. Версия subversion на сервере старше версии на моем ноутбуке, поэтому я предполагаю, что моя (более новая) версия каким-то образом обновляет рабочие каталоги, поэтому они несовместимы со старой версией на сервере разработки. Иногда удаление файлов .svn/lock помогает, но только если я делаю это сразу после выполнения команды subversion на своем ноутбуке. Когда я запускаю команду на сервере разработки, файлы блокировки исчезают, и я не вижу способа спасти чек. Это было бы не так уж плохо, если бы хранилище было не так уж и велико. Особенно, когда я сделал много изменений и не могу их совершить.Как я могу восстановить «обновленные» рабочие каталоги subversion?

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

Есть ли лучшее решение для спасения сломанной проверки и/или моих изменений?

ОБНОВЛЕНИЕ Вопросы и ответы Mikael Sundberg связаны с ответом. Я записываю это здесь, потому что он не упоминает об этом. Там скрипт, который может понизить модернизированные репозитории, когда это безопасно:

http://svn.apache.org/repos/asf/subversion/trunk/tools/client-side/change-svn-wc-format.py

ответ

0

Я не уверен, если я правильно понимаю вашу проблему, но здесь приведены некоторые советы:

Первый совет - вы пробовали SVN Clean команда?

Следующий, вероятно, бесполезен для вас :), но многие люди, использующие CVS, не понимают, что у SVN есть такая функция, поэтому я записываю ее.

Если вы используете Windows и Tortoise SVN client, вы можете выбрать команду Show Log из контекстного меню (правая кнопка мыши). Когда появится список проверок, выберите последний хороший один и выберите из контекстного меню команду верните эту ревизию.

В другом случае (не Windows и Tortoise SVN), исследуйте documentation для команд командной строки, описанных выше.

Следующий совет может помочь вам избежать смешивания ваших снарядов.

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

Это спасает меня много раз :).

+0

Спасибо, но, к сожалению, после обновления репозитория Subversion больше не выполняет * никаких * команд, даже «log` или` status`, поэтому ваше решение не будет работать. – jkramer 2008-09-25 20:09:02