2014-01-09 16 views
0

Я использую терминал Mac OS X для SVN. Я очень любитель, когда речь заходит о SVN и командной строке. Я обычно просто обезьяна с интерфейсом.Undo SVN 1.6 ошибка через командную строку

Я случайно каким-то образом совершил некоторые ветви нашего проекта внутри другой ветви проекта, пытаясь проверить ветку. Да, я так плох.

Удаленное хранилище:

MyProjectBranch 
    BranchNeedsToNotBeHere 
    BranchNeedsToNotBeHere2 
    BranchNeedsToNotBeHere3 
    expectedDirectoryStillHere1 
    expectedDirectoryStillHere2 
    expectedDirectoryStillHere3 

Наконец правильный локальный репозиторий в желаемом пересмотре:

MyProjectBranch 
    expectedDirectoryStillHere1 
    expectedDirectoryStillHere2 
    expectedDirectoryStillHere3 

Как отменить эту пародию, не делая себе выглядеть некомпетентным? Казалось бы, простая команда «revert» будет доступна, но все, что я нашел, это «обратное слияние» - что, если я сделал это правильно, вообще не удалял посторонние каталоги, а ожидаемые каталоги не имеют правильной версии, но более старой. Поэтому я даже не могу делать это правильно.

Много преимуществ и, если доступно, щедрость всем, кто может меня спасти!

+0

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

+0

@ashutoshraina Итак, вы говорите ... удаленно удалите всю ветку, а затем зафиксируйте правильный, который у меня есть на месте? Мне нужно снова включить эту ветку в багажник, это повлияет на что-нибудь? Если вы можете сформулировать этот процесс в ответе, я получу некоторые моменты. –

+0

Просто 'svn rm' если они вам нужны,' svn mv', если они вам нужны в другом месте? Да, ваша ошибка все еще существует в истории, но не всегда очевидна, и, вероятно, никто на самом деле не заботится об этом. – Wrikken

ответ

1

Откат вашей фиксации, выполнив следующие действия:

svn merge -c -$REV 

где $ REV является изменение, которое вы ввели каталоги. Если вы сделали это по целому ряду изменений, повторите это для каждой ревизии. Обратите внимание на тире перед номером ревизии, это минус, означающий отмену этой ревизии. Если диапазон исправлений, которые вы хотите удалить, это единственные вещи, которые были сделаны на пути, вы можете указать диапазон с -r $YOUNGEST:$OLDEST вместо -c -$REV вместо этого и сделать одно обратное слияние.

Если все ограничивается просто добавлением новых файлов/каталогов, вы можете просто использовать svn rm на дорожках и удалить их.

0

Во-первых, я думаю, что я собираюсь сказать, что это не правильный способ сделать это. Это может даже быть проголосовано. Перейдите на svn remote и удалите ветки, которые, по вашему мнению, не должны быть там. Обновите локальную версию, и все должно быть сделано. Сделайте резервные копии, прежде чем делать это.

Кроме того, я не знаю, почему сначала удалять дополнительные ветви локально, а затем фиксация не будет исправлять это для вас. Вы пробовали это?

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