我正在向SVN添加现有网站。
文件已存在于网络服务器上,现在存储库中存在相同的副本( - 配置文件)。
我想将webserver目录转换为SVN工作副本,但是当我运行时:
svn checkout http://path.to/svn/repo/httpdocs .
我收到错误:
svn:无法添加文件'':同名对象已存在
如何告诉SVN只覆盖那些内容相同的文件?
答案 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的复制/粘贴技术。