Подтвердить что ты не робот

Как изменить HEAD на предыдущую ревизию

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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


Даже если:

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

... Лучше не пытаться скрутить инструмент SCM во что-то, чего он не должен делать в первую очередь.
Историей (наряду с распараллеливанием с ветвлением) являются две основные особенности СКМ.

Ответ 3

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

Ответы на этот вопрос могут помочь: Nuking огромный файл в репозитории svn

Ответ 4

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

Ответ 5

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

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

введите описание изображения здесь