如何防止全局 svn 更新?

如何防止全局 svn 更新?

我正在采取措施防止某人(即我)意外消灭生产服务器。

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

有没有办法防止这种情况发生?也许可以svn为检查输入的小型传递脚本创建一个别名?

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

答案1

为生产环境使用标签。始终标记您的发布版本,在测试环境中验证这些标签(包括它们只包含您实际想要的更改),然后使用生产服务器上的svn switch(又名)命令“更新”到该标签。svn sw

这样,意外svn up就不会影响任何事情(只要您遵循最佳实践并且不在标签中进行开发......)。

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

此外,@Shane 建议改用svn export(导出您的标签)的评论也很不错,因为它可以保证您不会通过 Web 服务器上的 .svn 文件夹泄露修订历史数据。然后,您的推广过程将包括将标签导出到新的(空)文件夹,然后通过将当前生产文件夹重命名为其他名称来快速切换,然后将“staging”文件夹重命名为生产文件夹的名称。例如,在 Linux 中,它看起来会像这样:

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

这种方法的缺点是您无法使用例如svn info来找出当前的标签生产情况,但如果您有良好的政策并遵循良好的做法,您应该可以方便地掌握这些信息 - 而且它应该是准确的。

相关内容