SVN вернуться на стороне сервера - PullRequest
3 голосов
/ 29 января 2012

A очень умный разработчик удалил почти весь репозиторий и зафиксировал его (ред. 210).У меня есть рабочая копия на моем компьютере, но хранилище довольно большое.

Я хотел бы создать новую ревизию (211), идентичную последней хорошей ревизии (209).Я не хочу ничего скрывать от ревизии 210, которая является плохим коммитом.Это вина разработчиков, и им придется что-нибудь переписать, насколько я понимаю.

Идеи?

Ответы [ 4 ]

7 голосов
/ 29 января 2012

Это можно решить с помощью обратного слияния :

Следующая команда вернет вашу рабочую копию в состояние ревизии 209:

svn merge -c -210 .

Затем зафиксируйте:

svn ci -m "reverse merged revision 210"
3 голосов
/ 29 января 2012

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

Чтобы отменить изменения, просто откройте SVNОкно «Показать журнал» (если используется TSVN) в корневом каталоге рабочей копии и выберите редакцию 209, затем выберите «Вернуть к редакции» - это выполнит обратное объединение изменений в редакции 210, которые затем можно будет зарегистрировать как редакцию 211. Это должно решитьваша проблема.

Если разработчик удалил хранилище на вашем SVN-сервере, вам потребуется ежедневное резервное копирование для восстановления вашего кода.

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

0 голосов
/ 02 декабря 2014

Есть один уродливый способ, который работает для меня ... при условии, что вы хотите удалить последний коммит, а не какой-то коммит в середине.

Первый - отключить сервер SVN и сделать резервную копию вашего репо с помощью svnadmin hotcopy repo repo_backup

Перейдите на сервер SVN и продолжите репо.Посмотрите на ./db/revs/X/, где X - первый номер неправильного коммита.Вы можете увидеть неправильный файл коммита там (например, 123).Удалите этот файл, а затем измените ./db/current так, чтобы он указывал на коммит до (например, 122).

0 голосов
/ 29 января 2012

Элементарный способ на Linux-машине будет выглядеть так:

cp PRJ ../../bkup
svn up PRJ
cp ../../bkup PRJ
cd PRJ
svn add *
svn ci -m "everything again" PRJ 

Надеюсь, вы получите точку

...