如何设置SVN仓库进行紧急修复?

Mat*_*ick 7 svn deployment version-control branch repository

作为一名开发人员多年来,我应该知道这一点,但事实并非如此.

我正在一个小团队中发布一个已发布的产品.我是提交大部分代码的主要开发人员,但还有一些其他开发人员不时提交.目前,我们有一个运行Hudson CI的登台服务器,它在每次提交后构建.当中继线稳定并经过测试时,通过简单的svn up命令手动更新生产.

这通常工作正常,但是当代码未在主干中最终确定时,我们确实有需要紧急/紧急更改生产的情况.

如何设置回购以适应这种情况?我认为这个回复是一个很好的回复,但它仍然有点过头了.

我在想,在更新生产时,在该版本中创建一个分支.但是,如果我需要进行紧急生产修复,我该如何访问该分支,如何通过从该分支而不是中继来更新生产?如何确保生产分支的任何紧急修复程序也已提交到主干?

即.这是我希望有更好的解决方案的情况,因为它已经发生了几次

  • Rev 1000更新了生产
  • Rev 1001-1005是新功能请求/错误修复,将包含在下一版本中
  • Rev 1006是一个迫切的解决方案,需要推向生产
  • Rev 1007-1009是更多功能更新
  • Rev 1010应该是更新到生产的下一个版本

更新:

阅读完SVN Book的分支部分后,我正在考虑以下设置.

  1. 准备好推进生产时创建分支

    svn copy /trunk /branches/production_01 -m 'Production release'

  2. 在生产时,切换到生产分支

    svn switch /branches/production_01

  3. 如果需要紧急修复,开发人员需要在分支中进行更改:

    svn checkout /branches/production_01
    // make changes
    svn merge /trunk # make sure changes get merged into trunk as well
    svn commit -m 'Urgent fix

  4. 在制作时,更新到最新的分支

    svn update

这个过程听起来像我们的设置吗?

Séb*_*nec 3

解决这个问题有不同的方法,但我认为我见过的最有效的方法如下:

  • 所有开发人员都会进入分支,无论是错误修复还是新功能。这些分支都在CI下,并部署在自己的环境中进行测试。
  • 要进入生产的代码从分支(错误修复分支或功能分支)合并到主干中。trunk也在CI下。一旦测试获得批准,它就可以进入预生产阶段,然后进行生产阶段。只有主干中的代码才会发布到生产环境中。

所以基本上任何进入主干的代码都是来自分支的合并;这样,主干仅包含要发布的代码,并且您不必进行尴尬的代码回滚或从修订版分支。

缺点是您需要不同的 CI 环境,每个分支具有不同的应用程序服务器域,以及主干和预生产环境。