2012-08-02 2 views
4

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

Я обычно фотографии:

svn co svn+ssh://(username)@(ip)/srv/svn/intranet/trunk/PYTHON/<application> <local-application> 

Я тогда может обновить до другой версии

svn update (path) -r (rev) 

Большую часть времени после нескольких попыток это вызовет ошибку узел остается в конфликте

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

Ive пытался их решить, но ничего не похоже на работу:

обновление СВН -r 1586

Skipped 'inm/inm' -- Node remains in conflict 
D inm/fabfile.py 
D inm/test.db.bak 
D inm/tests 
D inm/test.db 
D inm/doc 
D inm/test.ini 
D inm/test.sql 
U inm/setup.py 
A inm/inm.egg-info 
A inm/inm.egg-info/SOURCES.txt 
A inm/inm.egg-info/top_level.txt 
A inm/inm.egg-info/PKG-INFO 
A inm/inm.egg-info/entry_points.txt 
A inm/inm.egg-info/dependency_links.txt 
A inm/inm.egg-info/not-zip-safe 
A inm/inm.egg-info/paster_plugins.txt 
A inm/inm.egg-info/requires.txt 
U inm/setup.cfg 
Updated to revision 1586. 
Killed by signal 15. 
Summary of conflicts: 
    Skipped paths: 1 

svn resolved inm/inm 
Resolved conflicted state of 'inm/inm' 
(venv) 

svn update inm/inm -r 1586 
Updating 'inm/inm': 
Password: 
Skipped 'inm/inm/templates' -- Node remains in conflict 
At revision 1586. 
Killed by signal 15. 
Summary of conflicts: 
    Skipped paths: 1 
+0

Возможно, невоспроизводимые файлы вызывают конфликт; не совсем ясно, какое состояние/содержимое этого каталога («путь», это то же самое, что и «intranet/trunk/PYTHON/»?), которые вы имели до и после каждой операции; и какая у вас версия SVN? –

+0

Если вы считаете, что это определенно ошибка, напишите на [email protected] или #svn канал в FreeNode –

+0

, если вы ничего не обновили в рабочей копии, как правило, это не будет вести себя так. Просто убедитесь, что вы обновляете всю рабочую копию до разных оборотов или просто ее часть? Если это первый случай, мне кажется, что это ошибка в svn. –

ответ

16

Я думаю, что ответ я искал здесь был

svn revert --depth=infinity inm 

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

EDIT

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

+0

сделать это, а затем обновить, отлично работает –

1

Итак:

  • Вы только проверить и обновления от trunk, или вы иногда проверяете из ветки?
  • Выполняете ли вы какие-либо программы во время тестирования?
  • Что делать, если вы сделали svn status перед запуском обновления? У вас есть первозданная копия выписки?

Конфликты могут происходить по многим причинам.

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

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

Тогда, возможно, в вашей системе что-то не так. Мы просто не располагаем достаточной информацией прямо сейчас.

В следующий раз, сделав это, сделайте svn status в своем рабочем каталоге, прежде чем делать svn update. На самом деле, это всегда хорошая идея. Это предупредит вас о возможном конфликте с Subversion при обновлении.

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