Удалить вручную только последнюю версию из онлайн-хранилища SVN?

При этом: git svn dcommit совершает неверный файл?, теперь у меня одна - самая последняя - ревизия в SVN серверном репозитории неправильная; Я хотел бы удалить это. Я знаю, что мог бы сделать svnadmin dump/filter/load согласно Как я могу исправить репозиторий с одной сломанной ревизией?, но я надеялся, что было более простое решение.

Итак, я попробовал этот тест:

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) в db/revs и db/revprops, я получаю это:

$ 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?

1 ответ

Решение

Нет. Редактирование файлов базы данных хранилища вручную никогда не бывает "достаточно безопасным". Гораздо безопаснее, и, вероятно, в конце концов, намного проще, просто сделать dump/filter/load с помощью инструментов SVN.

Другие вопросы по тегам