强制SVN更新/签出以覆盖本地文件

时间:2011-05-01 15:21:41

标签: svn overwrite svn-update svn-checkout

我计划运行(在我的服务器上

svn update

使用更新来更新我的LIVE网站。但是,我担心“C”冲突会阻止我的网站脚本运行。如何强制结帐/更新过程覆盖所有本地文件(在我的服务器上?)?

我知道一个解决方案是在一个单独的目录上执行此操作 - 其他任何更有效的方法吗?

我看过Force an SVN checkout command to overwrite current files

我没有--force选项

5 个答案:

答案 0 :(得分:13)

如果您没有--force选项,我认为您没有--accept。 svn更新有一个名为--accept的新选项,用于“指定自动冲突解决操作”。它可能是: postopone, mine-conflict, theirs-conflict, edit, launch, theirs-full, mine-full or base

svn help update会有所帮助!

答案 1 :(得分:5)

单击目录并将其恢复到基础然后更新会产生相同的效果吗?

答案 2 :(得分:3)

您应该要求Subversion更新您的工作副本。如果需要合并,Subversion会告诉你。如果没有,你将拥有最新的一切。

我认为更好的解决方案是将您的代码合并到Subversion中,彻底清除您的工作副本,然后从项目中检查干净。

您的存储库应包含所有有意义的代码,而不是您的工作副本。

答案 3 :(得分:0)

我可以继续进行独立于源代码控制的工件管理和内容交付,但是据我所知,这是直接从SVN刷新Web服务器内容,而SVN可能是手动更改的。如果要编写脚本,则“单击目录”将不起作用,但这是我使用的

svn update --accept theirs-full

答案 4 :(得分:-1)

我知道这是一个非常古老的问题,但我试图找到自己如何做到这一点,并想出了这个:

svn status --no-ignore | grep '^\?' | sed 's/^\? //' | xargs -Ixx rm -rf xx

基本上,这会列出存储库中的所有未版本控制的文件,然后将列出的管道列为强制rm以进行清除。这删除了没有提示的所有未版本控制的文件,因此请确保您知道自己在做什么。