SVN: можно ли удалить скопированную ветку и т. Д. Навсегда? - PullRequest
0 голосов
/ 31 марта 2010

Я должен удалить ветку из истории SVN навсегда. Обычно я бы использовал

svnadmin dump /path/to/repo |svndumpfilter --drop-empty-revs --renumber-revs exclude /branches/bad_branch 

Однако эта ветвь была не только создана, но и перемещена, а затем удалена, и сценарий дампа не может обработать последующую информацию с сообщениями, такими как: Неверный путь к исходному коду копирования / Branches / bad_branch

Итак, я представляю 2 способа справиться с проблемой

  1. сохранить только последние несколько ревизий история и положить текущий репозиторий как архив в сети

  2. сделать дамп до ревизии, где 'bad_branch' был создан и применен остальные изменения в виде патча, поэтому теряет историю нескольких последние коммиты.

Есть ли лучший, более чистый способ справиться с этим?

1 Ответ

2 голосов
/ 31 марта 2010

Первая часть вашего номера 2 будет работать. Так что да, создайте дамп там, где была введена ветка-нарушитель, и создайте новый репозиторий с ней. Затем, продолжая использовать дамп svnadmin и опцию --incremental, выведите дамп всех хороших ревизий между плохими ревизиями веток. Вот пример того, как будет выглядеть команда добавочного дампа:

svnadmin dump /path/to/repo --incremental -r 1234:2345

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

В зависимости от того, сколько ревизий имеет плохая ветка, это очень много работы. В настоящее время это также единственный способ сделать это с версиями 1.6.x или более ранними версиями Subversion.

Теперь вот предостережение. Если в хороших ревизиях есть сообщения о фиксации, имеющие ссылку на номера ревизий, они будут отключены. Это не будет плохо, если их немного, но исправить их будет утомительно.

...