svn откатить изменения.

Phoenix

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

svn up -r 45 file
файл меняется, но при
svn ci -m "aaa" file
вылетает с ошибкой "файл старый"
делаю
svn up file
появляется 3 файла
file
file.mine
file.r100
file.f45
дальше можно сохранить куда-нибудь file.f45, потом сделать revert, а потом отредактировать. - но мне кажется, что должен быть способ поестественнее.

artimon

svn help merge
svn merge -r 100:45 file

ppplva

svn cp -r45 file .
merge здесь ни к селу ни к городу.

artimon

Фигня, однако:
$ svn cp -r6815 content.css .
svn: Path 'content.css' already exists

$ svn --version
svn, version 1.4.2 (r22196)

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuse...

ppplva

Вначале svn rm надо сделать.
А по ссылке - совершенно другой случай, там избирательно отменяется часть изменений. Конечно, это более общий метод, и его можно использовать и в этом случае, но не нужно. Я уже писал про недостатки, повторяться не буду.

Phoenix

поясните, чем merge плох..
там одна комманда, а удалить/добавить - две.
+ я так понимаю, merge можно с целой директорией сделать,

Phoenix

c:\Program Files\Apache Software Foundation\Apache2.2\htdocs>svn merge . svn://o
pp2.garant.ru/hd/tag/1.0
svn: A working copy merge source needs an explicit revision
c:\Program Files\Apache Software Foundation\Apache2.2\htdocs>svn ci -m "undo man
y things"
Replacing system\Service.php
Sending system\userlog\..log
Transmitting file data .svn: Commit failed (details follow):
svn: Out of date: '/trunk/system/Service.php' in transaction '115-1'
c:\Program Files\Apache Software Foundation\Apache2.2\htdocs>

вот такое (out of date) возникает очень часто. какой смысл в этом сообщении. и что нужно написать, чтобы файл заменился на сервере, но локально он не поменялся
делал как в мануале по ссылке выше:
c:\Program Files\Apache Software Foundation\Apache2.2\htdocs>svn merge -r 70:115
.
Skipped 'system\Service.php'
A system\Service.php
c:\Program Files\Apache Software Foundation\Apache2.2\htdocs>svn status
M system\userlog\..log
? system\passwords\userser_pass.php
? system\passwords\mailer_pass.php
? system\passwords\helpdesk_pass.php
R + system\Service.php
? system\userkeys\7edcfcebd3d8bce37acf822c537f96d4_helpdesk.data
? system\userkeys\e876de3ed03b7823a68498f5fd435fc9_helpdesk.data
M helpdesk\-\Helpdesk.mysql.php
M helpdesk\-\index.phtml
M helpdesk\-\config.php
? addons\phpformatter
c:\Program Files\Apache Software Foundation\Apache2.2\htdocs>svn ci -m "undo man
y things"
Sending helpdesk\-\Helpdesk.mysql.php
Sending helpdesk\-\config.php
Sending helpdesk\-\index.phtml
Replacing system\Service.php
Sending system\userlog\..log
Transmitting file data ....svn: Commit failed (details follow):
svn: Out of date: '/trunk/helpdesk/-/Helpdesk.mysql.php' in transaction '115-1'
c:\Program Files\Apache Software Foundation\Apache2.2\htdocs>

artimon

svn merge . svn://opp2.garant.ru/hd/tag/1.0
Это вообще бред какой-то…
> svn: Out of date: …
http://subversion.tigris.org/faq.html#wc-out-of-date

Phoenix

Это вообще бред какой-то…

это я понял уже.. да.
там была мысль сделать копию "рабочей копии" из репозитория. но как оказалось, там ничего не лежит.

что-то стало проясняться, но судя по тому, что не работает, наверно я что-то не так делаю.
правильно ли я понимаю, что
>svn up
at revision 120
далее ищем рабочую копию коммандами
svn merge -c -120 .
svn merge -c -119 .
svn merge -c -118 .
svn merge -c -117 .
svn merge -c -116 .
svn merge -c -115 .
...
дело в том, что я никак не могу восстановить даже то, что вроде как работало на начальном этапе эксперементов.
мог я испортить ревизии, кроме head ?

Phoenix

как теперь сделать рабочие копии для будущего использования?
т.е. сделать копию
/trunk
в
/tag/1.0
?

katrin2201

У тебя винда? Если да - то поставь TortoiseSVN и активно юзай фичу show log.
Много должно стать более простым и понятным.

erotic

Скачивая себе в качестве рабочей копии одну из старых ревизий ты не меняешь head ревизию в репозитории, ты просто работаешь со старой ревизией. Когда ты пытаешься потом ее залить, то svn проверяет, не было ли с твоей ревизии изменений, видит кучу изменений и говорит, что твоя рабочая копия устарела и ее надо обновить. Отсюда out-of-date.
Слушайся , короче говоря. Или совсем тупой простецкий вариант - слей в одну рабочую копию старую ревизию с нужным файлом, а в другую рабочую копию слей head, и во вторую скопируй из первой нужный файл. Но это не тру, слушайся , будет счастье.
Оставить комментарий
Имя или ник:
Комментарий: