Как получить из SVN предыдущую ревизию перед HEAD? - PullRequest
2 голосов
/ 13 января 2010

В моей рабочей копии извлечена последняя редакция, но она повреждена - не может быть скомпилирована.

Как получить предыдущую ревизию перед головой? А если он тоже сломан - предыдущий перед предыдущим?

Ответы [ 5 ]

8 голосов
/ 13 января 2010

svn update -r PREV

Вот ссылка на документацию по ключевым словам ревизии.

Если ни одно из ключевых слов (HEAD, BASE, COMMITTED или PREV) не является именно тем, что вам нужно, просто посмотрите в журнале и найдите явный номер редакции для обновления.

3 голосов
/ 13 января 2010

Если вы знаете номер ревизии хорошей сборки, то вместо того, чтобы отступать от головы до тех пор, пока не найдете ревизию, которая сломала сборку, вы можете использовать '1001 * разделяй и властвуй ', чтобы найти проблема. Если у вас есть больше, чем несколько ревизий со времени последнего известного блага, это сэкономит ваше время.

Псевдокод:

known_good=whatever
known_bad=head_revision
start:
    candidate=(known_good + known_bad) / 2

    build candidate

    if success
        known_good=candidate
    else
        known_bad=candidate

    if (known_good + 1) == known_bad
        goto end

    go to start:
end:

Там немного заглянут нечетные ревизии ...

3 голосов
/ 13 января 2010

svn info http://[server]:[host]/myrepo даст вам ревизию хранилища.

Затем обновите локальную копию с svn update -r [revision-1] http://[server]:[host]/myrepo

1 голос
/ 13 января 2010

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

См. Эти вопросы о том, как получить текущий номер ревизии:

0 голосов
/ 13 января 2010

для TortoiseSVN с использованием контекстного меню: svn->Update to revision

для использования в командной строке

svn update --revision svn://repo

Если вы действительно хотите быть увлеченным этим, вы можете создать сценарий, в котором вы дадите ему текущий номер ревизии HEAD, и оттуда он понижает ревизии до тех пор, пока make (или что-то еще) не вернет ошибку.

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