强制SVN签出命令覆盖当前文件
我将一个现有的网站添加到SVN。
这些文件已经存在于Web服务器上,并且现在存储库中存在相同的副本( – configuration文件)。
我想将networking服务器目录转换成SVN工作副本,但是当我运行:
svn checkout http://path.to/svn/repo/httpdocs .
我得到的错误:
svn:无法添加文件“':同名的对象已经存在
如何让SVN重写那些内容相同的文件?
试试--force
选项。 svn help checkout
提供了详细信息。
svn checkout --force svn://repo website.dir
然后
svn revert -R website.dir
将检查在website.dir现有的文件的顶部,但不覆盖它们。 然后回复将覆盖他们。 这样你就不需要下载网站来完成它。
这可以很容易地完成。 我所做的只是将现有的目录,而不是在版本控制下,移动到一个临时目录。 然后我将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更新没有改变文件回来?
我没有1.5可用,因为我不是在控制电脑。 导致我一个问题的文件恰好是lib目录中的一个.jar文件。 这是我做了什么来解决这个问题:
rm -rf lib svn up
这是build立在奈德的答案上。 那就是:我刚刚删除了导致问题的子目录,而不是整个存储库。
从存储old_crufty
到一个新的目录,然后将旧的重命名为old_crufty
,新的重命名为my_real_webserver_directory
,你很好。
如果你的意图是每个文件都在SVN中,那么这是testing你的理论的好方法。 如果你的意图是某些文件不在SVN中,那么就使用Brian的复制/粘贴技术。