如何签出SVN存储库,覆盖非版本化的本地目录?

Bob*_*ack 6 svn

说我的SVN存储库看起来像:

project/
    trunk/
        README
        foo/
            bar.sh
Run Code Online (Sandbox Code Playgroud)

我有一个本地的,无版本的目录,如下所示:

svn/
    project/
        trunk/
            README
            foo/
                hum.sh
Run Code Online (Sandbox Code Playgroud)

如果我的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
Run Code Online (Sandbox Code Playgroud)

其中trunk/READMEtrunk/foo/bar.sh是存储库中的版本,但是trunk/foo/hum.sh是本地版本.我期望在随后svn status报告:

?    trunk/foo/hum.sh
Run Code Online (Sandbox Code Playgroud)

UPDATE

提示:我可能从错误的"方向"接近这个问题我打赌明智地使用cp检查存储库'到一边'会做我想要的事情,但我不能完全理解它...

der*_*ert 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
Run Code Online (Sandbox Code Playgroud)

应该只显示新文件.