说我的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/README和trunk/foo/bar.sh是存储库中的版本,但是trunk/foo/hum.sh是本地版本.我期望在随后svn status以仅报告:
? trunk/foo/hum.sh
Run Code Online (Sandbox Code Playgroud)
UPDATE
提示:我可能从错误的"方向"接近这个问题我打赌明智地使用cp检查存储库'到一边'会做我想要的事情,但我不能完全理解它...
是的,你几乎和你在一起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)
应该只显示新文件.