Как я могу оформить SVN-репозиторий, перекрыв не версионный локальный каталог? - PullRequest
6 голосов
/ 17 января 2012

Скажите, что мой SVN-репозиторий выглядит следующим образом:

project/
    trunk/
        README
        foo/
            bar.sh

, и у меня есть локальный, неверсированный каталог, например:

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

, если мой cwd равен 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

ОБНОВЛЕНИЕ

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

Ответы [ 2 ]

5 голосов
/ 17 января 2012

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

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

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

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

4 голосов
/ 17 января 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...