[SVN] Откатиться к предыдущей ревизии

kruzer25

Случайно закоммитили мегакривую ревизию. Как откатить всё назад?
Пока что, единственный вариант, который приходит в голову - создать две новые папки, в одной сделать svn up -r говноревизия, в другой - svn up -r говноревизия-1; из первой - удалить всё, кроме папок .svn и скопировать всё, кроме папок .svn, из второй; после чего сделать в первой svn commit.
Но это какое-то очень кривое решение, а можно ли вернуть всё как было не через жопу?

katrin2201

TortoiseSVN -> right-click on file -> Show Log -> right-click нужную ревизию -> Revert to this revision (или Revert changes from this revision если файл менялся после кривого коммита и эти изменения хочется сохранить)

kruzer25

right-click on file
А если изменена была тысяча файлов?
Кроме того, не делает ли оно стандартный svn revert/svn up? У меня сильное подозрение, что такой revert в репозиторий не попадёт ;)

trobak

>А если изменена была тысяча файлов?
кликаешь правой кнопкой не в один файл, а в папку, где твоя тысяча файлов лежит

katrin2201

TortoiseSVN -> Help -> How Do I... -> Roll back revisions in the repository
Вкратце - если тысяча файлов - то правой клавишей по папке где лежит эта тысяча файлов
Кроме того, не делает. Твое сильное подозрение всего лишь подозрение.

yolki

а что,у вас разработчики транками не пользуются, да?

Dasar

что такое транк?

kruzer25

Вкратце - если тысяча файлов - то правой клавишей по папке где лежит эта тысяча файло
Ну-ну.
Есть очень большое дерево. И где-то в этом дереве есть испорченные файлы - раскиданы по всему дереву, по совершенно разным местам. Всего испорченных файлов - тысяча.
Или там можно для корневого каталога сделать это "rollback to"? И история для неиспорченных файлов не поменяется после коммита?
ЗЫ: Уже решили проблему так, как я написал в первом посте, но всё равно интересует, есть ли цивильное решение.

kruzer25

Поясни-ка свою мысль ;)

katrin2201

можно по корневому
ты вместо того чтоб глупые вопросы задавать пошел бы давно уже и заценил интерфейс соотв и поигрался бы
сразу бы все проблемы отпали
Единственная проблема в таком случае будет если у тебя есть коммит на 2000 файлов, в котором 1000 была испорчена. И эта тысяча валяется по разным местам вместе с неиспорченной тысячей.
Но в таком случае ручного отсеивания испорченного от неиспорченного никак не избежать.
Да и твой способ вполне себе способ. Единственное, там можно было делать не чекаут, а экспорт, тогда .svn не пришлось бы вычищать.

erotic

svn co http://repo
cd repo
svn merge -c -<number of bad revision> http://repo
svn commit

yolki

trunk, branch etc.
сильно облегчает жизнь в таких случаях имхо

kruzer25

В случаях, когда уже поздно?

ppplva

Как вариант,
svn rm <filename>
svn cp -r xx <filename>
svn commit
для всех изменившихся файлов. Скриптом (пенартур - .bat-файлом ;) ).
Немного сложнее, чем метод с merge, зато кривой комит исчезнет из истории, и не загадит svn annotate.

kruzer25

зато кривой комит исчезнет из истории
Куда исчезнет?
для всех изменившихся файлов
Ну-ну.
А когда изменилась/удалилась/добавилась неебическая куча файлов?
Метод с merge рулит.

ppplva

Куда исчезнет?
Неважно. Исчезнет.
На самом деле, конечно, останется, но изменения в файлах не отразятся.
Неужели ты не используешь svn annotate ?
Ну-ну.
А когда изменилась/удалилась/добавилась неебическая куча файлов?
Метод с merge рулит

Только если тебе похуй на остальных пользователей.
Если нет - тебе помогут команды svn log и grep.

kruzer25

Неужели ты не используешь svn annotate ?
В повседневной жизни я использую только commit, up, status, diff, log и blame :o
Только если тебе похуй на остальных пользователей.
Если нет - тебе помогут команды svn log и grep.
Как раз, твой вариант - когда похуй на то, как это будет восприниматься.
А в случае с merge всё предельно логично - накатили изменения, затем накатили отмену изменений. И, как приятный бонус - метод с merge можно применить в любой момент, даже если в некоторые файлах уже внесли другие, "хорошие" изменения.
Правда, в нашем случае, после говнокоммита был только один коммит, в котором изменился только один файл - и это был не тот файл, который поменял говнокоммит.

rosali

Вась, ну при чем тут trunk? Если накомитили херни в trunk, то его не нужно чинить чтоле?.. :crazy:
Оставить комментарий
Имя или ник:
Комментарий: