Удаление данных из фиксации Subversion? - PullRequest
0 голосов
/ 27 декабря 2011

Я недавно отправил информацию в файл. Только несколько строк кода, которые очень конфиденциальны. Мне нужно удалить эту информацию из хранилища Subversion ПОЛНОСТЬЮ. Как я могу сделать это без возврата и потери изменений? Это только в одном файле? Итак, возможно ли удалить все ссылки на этот файл, а затем повторно зафиксировать правильный?

Ответы [ 4 ]

1 голос
/ 28 декабря 2011

SVN предоставляет команду с именем svndumpfilter, которая позволяет вам вывести свой репозиторий и исключить из него путь.Затем загрузите этот файл дампа в новый репозиторий, и этот файл исчезнет.

From http://www.principia -it.co.uk / tools-n-tips / subversion / subversion-faq / 7-subversion / 10-how-do-i-перманентно-удалить-пути-из-моего-хранилища

svnadmin dump /path/to/repos > dump.file
svndumpfilter exclude path/to/remove < dump.file > newdump.file
svnadmin load /path/to/newrepos < newdump.file
1 голос
/ 27 декабря 2011

Я думаю, вам придется

  • записать неверный коммит и каждый последующий коммит как один или несколько патчей
  • сбросить хранилище
  • создать новый репозиторий
  • импортировать все ревизии до плохой фиксации из дампа в репозиторий
  • повторно применить каждый патч по порядку (и удалить несколько строк конфиденциальной информации перед фиксацией)
0 голосов
/ 28 декабря 2011

Можете ли вы дождаться выхода Subversion 1.8?Именно тогда реализуется команда с крайне запрошенной облитерацией (если, конечно, они не решили переместить ее в Subversion 1.9 или 2.0).

Нет.Правильно?

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

Я делал это несколько раз.Это не весело, особенно когда вам нужно сделать это в 2:00 утра, потому что вы не можете удалить свой репозиторий, когда ваши разработчики заняты им.

0 голосов
/ 28 декабря 2011

Единственным решением является фильтрация вашего хранилища на стороне сервера. Вы должны использовать команду как это:

svnadmin create /path/to/newrepos

svnadmin dump /path/to/repos --incremental | svndumpfilter excdlude path/to/remove | svnadmin load /path/to/newrepos
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...