2015-03-13 2 views
0

При этом: git svn dcommit committing wrong file?, теперь у меня есть одна - последняя версия в хранилище на стороне сервера SVN ошибочна; Я хотел бы удалить его. Я знаю, что могу сделать svnadmin dump/filter/load согласно How do I fix a repository with one broken revision?, но я надеялся, что есть более простое решение.Вручную удаляет только последнюю версию из онлайн-хранилища SVN?

Так что я попробовал этот тест:

cd /tmp 
svnadmin create newRepo 
svn co file:///tmp/newRepo newRepo-checkout 
# Checked out revision 0. 
cd newRepo-checkout/ 

echo aaa > AA.txt 
svn add AA.txt 
# A   AA.txt 
svn ci -m 'first commit' 
# Adding   AA.txt 
# Transmitting file data . 
# Committed revision 1. 

echo bbb > BB.txt 
svn ci -m '2ns commit' 
svn add BB.txt 
# A   BB.txt 
svn ci -m '2nd commit' 
# Adding   BB.txt 
# Transmitting file data . 
# Committed revision 2. 

echo ccc > CC.txt 
svn add CC.txt 
# A   CC.txt 
svn ci -m '3rd commit' 
# Adding   CC.txt 
# Transmitting file data . 
# Committed revision 3. 

Теперь, если я просто удалить соответствующие файлы последней ревизии (3) в дБ/оборотах дБ/Свойства ревизии, я получаю это:

$ cd ../newRepo 
$ svnadmin verify . 
* Verified revision 0. 
* Verified revision 1. 
* Verified revision 2. 
* Verified revision 3. 
$ ls db/revprops/0/ 
0 1 2 3 
$ ls db/revs/0/ 
0 1 2 3 

$ rm db/revs/0/3 
$ rm db/revprops/0/3 

$ svnadmin verify . 
* Verified revision 0. 
* Verified revision 1. 
* Verified revision 2. 
svnadmin: No such revision 3 

Через некоторое оглавлению выясняется, есть файлы ./db/txn-current и ./db/current с содержанием «3», поэтому я стараюсь, чтобы изменить это:

$ echo 2 > ./db/current 
$ echo 2 > ./db/txn-current 

$ svnadmin verify . 
* Verified revision 0. 
* Verified revision 1. 
* Verified revision 2. 

... а также svn co file:///tmp/newRepo newRepo-checkout2 похоже работа.

Итак, мой вопрос: насколько разумно безопасно, или есть еще что-то относительно хранения ревизии на сервере SVN?

+0

Файл 'db/current' может содержать другие записи в строке, в зависимости от формата файла subversion, см. Http://zeroset.mnim.org/2012/06/03/svn-repository-corruption-svndbcurrent- end-of-file-found/и http://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structure – sdaau

ответ

2

Нет. Ручное редактирование файлов базы данных репозитория никогда не является «разумно безопасным». Это намного безопаснее и, вероятно, в конце концов намного проще, просто выполнить сброс/фильтр/загрузку с помощью инструментов svn.

+0

Спасибо за это, @Ben - было бы хорошо с несколькими деталями о том, что еще, в частности, могло быть небезопасным; но это хорошо, если бы это было указано в любом случае. Ура! – sdaau

Смежные вопросы