如何防止全球svn更新?

我正在采取措施防止有人(即我)意外地擦拭生产服务器。

我目前正在看SVN。 我担心有人可能会不小心发出svn update命令而没有指定任何要更新的文件,因此将整个代码库更新为头版本。

有没有办法来防止这种情况发生? 也许让svn成为一个检查input的传递脚本的别名?

(我已经为rm设置了一个别名,以防止人们一次删除三个以上的文件,而没有看到确认提示: alias rm='rm -I'是否还有其他一些小小的调整服务器,以减less意外灾难的风险?)

为您的生产环境使用标签。 总是标记你的发行版,在testing环境中validation这些标签(包括他们只有你想要的改变),然后在生产服务器上使用svn switch (aka svn sw )命令来更新这个标签。

这样一个意外svn up不会影响任何东西(只要你遵循最佳实践,而不是在你的标签中开发…)。

“现货修复” – 即需要立即投入生产的快速错误修复 – 可以通过在主干中进行修复,将当前生产标签复制到新标签,然后将修复从主干合并到标签中完成; 然后使用相同的svn sw命令将生产带到该标签。

而且,@Shane的使用svn export的意见(导出你的标签)是一个很好的select,因为它保证你不会通过web服务器上的.svn文件夹泄露修订历史数据。 然后,您的升级过程将包括将标签导出到新的(空)文件夹,然后通过将当前生产文件夹重命名为其他内容,然后将“暂存”文件夹重命名为生产文件夹的名称来快速切换。 例如,在Linux中,它看起来像这样:

 mkdir staging svn export http://www.example.com/path/to/your/tag staging/ mv production/ production-old/ && mv staging/ production/ 

这个方法的缺点是,你不能使用例如svn info来找出目前的产品标签,但是如果你有良好的政策和遵循良好的做法,你应该有这个信息,而且应该是准确的 – 无论如何。