Как мне изменить ГОЛОВУ на предыдущую ревизию - PullRequest
17 голосов
/ 04 декабря 2008

У нас есть ситуация, когда кто-то испортил коммит на наш SVN-сервер. Было удалено много файлов и т. Д.

Вопрос: Какова техника для создания предыдущей (с плохой фиксацией) ревизии HEAD? Я видел здесь обсуждение SO для того, чтобы сделать это для 1 файла, но мы бы хотели, чтобы этот последний коммит никогда не происходил. Есть идеи?

Все эти ответы кажутся правильными. Я отметил ответ Абатищева как правильный ответ просто потому, что я использую Tortoise SVN, и это метод, который я действительно использовал.

Ответы [ 5 ]

19 голосов
/ 04 декабря 2008

Самый чистый способ - отменить изменения

Вы можете использовать svn merge, чтобы «отменить» изменения в вашей рабочей копии, а затем зафиксировать локальное изменение в хранилище. Все, что вам нужно сделать, это указать обратную разницу. (Вы можете сделать это, указав --revision 303:302 или эквивалентный --change -303.)

Я понимаю, что это не «делает так, чтобы последний коммит никогда не происходил» в том смысле, что коммит все еще является частью истории, но я считаю, что лучше сохранить этот плохой коммит в истории.
Это может включать некоторую незавершенную работу, которую можно запрашивать / сравнивать, чтобы легко переделать новый правильный коммит.


Даже если:

  • в руководстве SVN (1.5) упоминается будущая команда obliterate, которая будет выполнять задачу окончательного удаления информации, и
  • упоминает svndumpfilter в качестве возможного обходного пути (в том смысле, что он предоставляет возможность быстро и легко изменять эти данные из файла дампа, выступая в качестве фильтра на основе пути)

... Лучше не пытаться скручивать инструмент SCM во что-то, чего он не должен делать.
Историзация (наряду с распараллеливанием с ветвлением) - это две основные особенности SCM.

9 голосов
/ 04 декабря 2008

Может быть, вы можете показать журнал, проверить предыдущую ревизию (n-1), в контекстном меню выбрать «Вернуть к этой ревизии и зафиксировать изменения» (это станет n + 1, где n - текущая плохая голова)

1 голос
/ 04 декабря 2008

Вы можете сделать это, используя svnadmin dump и svnadmin load. Это довольно грубый способ сделать это, но я верю, что это единственный способ сделать это.

Ответы на этот вопрос могут помочь: Обнуление огромного файла в хранилище SVN

0 голосов
/ 17 октября 2017

Используя TortoiseSVN, если вы хотите просто увидеть репозиторий в версии, предшествующей нарушающей фиксации:

  • Откройте URL с помощью браузера репозитория TortoiseSVN.
  • Запишите номер ревизии этого коммита и измените HEAD на этот номер - 1, нажав кнопку в правом верхнем углу.

enter image description here

0 голосов
/ 04 декабря 2008

Вы можете svn cp определенные ревизии, поэтому, если нет никаких промежуточных операций, которые вы хотите сохранить, вы можете svn rm поврежденного каталога и затем svn cp старой версии. См. Раздел Peg и оперативный пересмотр книги

...