强制SVN checkout命令覆盖当前文件

时间:2008-11-23 13:10:36

标签: svn

我正在向SVN添加现有网站。

文件已存在于网络服务器上,现在存储库中存在相同的副本( - 配置文件)。

我想将webserver目录转换为SVN工作副本,但是当我运行时:

svn checkout http://path.to/svn/repo/httpdocs .

我收到错误:

  

svn:无法添加文件'':同名对象已存在

如何告诉SVN只覆盖那些内容相同的文件?

5 个答案:

答案 0 :(得分:61)

svn checkout --force svn://repo website.dir

然后

svn revert -R website.dir

将在website.dir中的现有文件之上签出,但不会覆盖它们。然后恢复将覆盖它们。这样您就不需要关闭网站来完成它。

答案 1 :(得分:53)

尝试使用--force选项。 svn help checkout提供了详细信息。

答案 2 :(得分:8)

这可以很容易地完成。我所做的就是将现有目录(不受版本控制)移动到临时目录。然后我检查了SVN版本到我正确的目录名,将文件从临时目录复制到SVN目录,并还原了SVN目录中的文件。如果这没有意义,下面有一个例子:

/usr/local/www

mv www temp_www
svn co http://www.yourrepo.com/therepo www
cp -pR ./temp_www/* ./www
svn revert -R ./www/*
svn update

我希望这会有所帮助,并且我不确定为什么只是一个简单的SVN更新没有改变文件?

答案 3 :(得分:5)

我没有1.5可用,因为我无法控制电脑。导致我出现问题的文件碰巧是lib目录中的.jar文件。以下是我为解决问题所做的工作:

rm -rf lib
svn up

这是建立在奈德的答案之上的。那就是:我刚刚删除了导致我出现问题的子目录而不是整个存储库。

答案 4 :(得分:3)

从存储库中拉出到新目录,然后将旧目录重命名为old_crufty,将新名称重命名为my_real_webserver_directory,您就可以了。

如果您的意图是每个文件都在SVN中,那么这是测试您的理论的好方法。如果您的意图是某些文件不在SVN中,那么请使用Brian的复制/粘贴技术。