2012-01-17 3 views
6

Скажи мое хранилище SVN выглядит следующим образом:Как проверить репозиторий SVN, перезагрузив недействительный локальный каталог?

project/ 
    trunk/ 
     README 
     foo/ 
      bar.sh 

и у меня есть местный, неверсированные каталог следующим образом:

svn/ 
    project/ 
     trunk/ 
      README 
      foo/ 
       hum.sh 

если мой УХО svn и я svn checkout http://...project/ я получаю следующее:

svn: Failed to add directory 'project/trunk': an unversioned directory of the same name already exists.

Ярмарка достаточно. Итак: svn checkout --force http://...project/делает проверяет репозиторий, но оставляет существующие файлы такими, какие они есть (и сообщает E для существующих).

Можно ли проверить репозиторий, рассматривая репозиторий как «предпочтительную» версию для любых конфликтующих файлов? То есть в приведенном выше примере, я должен закончить с:

svn/ 
    project/ 
     trunk/ 
      README 
      foo/ 
       bar.sh 
       hum.sh 

где trunk/README и trunk/foo/bar.sh являются версиями из хранилища, но trunk/foo/hum.sh является локальной версией. Я бы ожидать последующего svn status к только отчет:

? trunk/foo/hum.sh 

UPDATE

Подсказка: Я, вероятно, приближается это от неправильного «направления» Держу пари, разумное использование cp имея проверил, что хранилище «в сторону» будет делать то, что мне нужно, но я не могу его обмануть ...

ответ

5

Да, вы почти там с svn checkout --force. Чтобы закончить, сделайте на нем svn revert -R. Это отбросит локальные изменения (но не удалит новые файлы).

редактировать: Если вы хотите сделать это с cp, вариант -n, --no/clobber должен сделать это для вас:

$ svn co https://…/FOO their-foo 
$ cp -rn my-foo/* their-foo 
$ cd their-foo; svn stat 

должен показывать только новые файлы.

+0

Работал как шарм - но Дэн * просто * избил тебя до очков, боюсь :) –

+0

@BobbyJack: Предположим, я не должен был тратить минутку, чтобы проверить его. Ну, я обновил, как это сделать с 'cp', так как вам показалось, что вам интересно. – derobert

4

Вы можете использовать команду svn revert -R для рекурсивного восстановления всех файлов в репозитории ион, где он существует. hum.sh все равно будет ?, но все остальные файлы, независимо от того, были ли они изменены локально или были E xisting будет восстановлен в версии репозитория.

Вы также можете использовать опцию svn update --accept theirs-full, которая также должна перезаписывать файлы, помеченные как существующие.

+0

Фантастический - это именно то, что я искал. Благодарю. –

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