正确使用SVN&;词

正确使用SVN&;词,svn,version-control,continuous-integration,hudson,Svn,Version Control,Continuous Integration,Hudson,我正在为我的初创公司建立开发环境。我使用Hudson持续集成源代码。它每10分钟轮询一次SVN存储库中的更改,如果有任何更改,则从我们的开发服务器将其部署到实时服务器 不过我想做的是另一个Hudson工作,从开发人员部署到测试人员。我希望能够将代码提交到SVN,然后手动部署以进行测试,执行手动QA检查,然后将其传输到LIVE 有没有办法在SVN中使用树枝和树干来实现这一点?我希望它仍然每10分钟进行一次民意调查,因为在很多情况下,它应该直接从DEV进入LIVE。我想也许我可以提交到一个分支,然后

我正在为我的初创公司建立开发环境。我使用Hudson持续集成源代码。它每10分钟轮询一次SVN存储库中的更改,如果有任何更改,则从我们的开发服务器将其部署到实时服务器

不过我想做的是另一个Hudson工作,从开发人员部署到测试人员。我希望能够将代码提交到SVN,然后手动部署以进行测试,执行手动QA检查,然后将其传输到LIVE

有没有办法在SVN中使用树枝和树干来实现这一点?我希望它仍然每10分钟进行一次民意调查,因为在很多情况下,它应该直接从DEV进入LIVE。我想也许我可以提交到一个分支,然后让hudson自动化部署以进行测试,然后如果成功的话,将分支提交到主干。我说的对吗


提前感谢

我们使用TeamCity所做的是构建二进制文件,然后将其签入单独的二进制SVN,以便使用SVN LOAD_DIR进行测试。将这些位部署到测试服务器。如果它们看起来不错,则手动启动另一个CI任务,第二次使用SVN LOAD_DIR将这些位复制到生产SVN存储库,然后将这些位部署到生产

这样做的好处是,您拥有部署到每台服务器上的确切位的副本,可以轻松回滚,或者可以查看任何特定版本(例如,上周五的版本)并进行测试。您还可以在二进制版本中对配置文件进行更改,并将这些文件部署到生产环境中,同时还可以记录谁更改了什么以及何时更改了

这还为您提供了一个具有原子属性的部署系统—即,当您尝试将服务器更新到新版本时,您将获得全部或全部,而不会获得部分/失败的部署

另一个优点是,您可以通过检查单个更改的文件,以手术方式将生产中的单个内容文件替换为最新版本—这是一个方便的功能,周五下午4点,您不必冒着完全部署的风险,以防二进制文件中潜入其他更改


我看不到我们希望直接部署到LIVE的场景—听起来很危险。

我不明白,如果仍然存在“很多情况下,它应该直接从DEV进入LIVE”,那么为什么需要单独的测试步骤—正如@Hightechrider所说,这听起来很危险。我会这样做:

  • 让Hudson每10分钟检测一次更改,并部署以进行测试
  • 执行手动测试
  • 编写另一个Hudson作业,根据触发器将刚刚测试的SVN版本部署到LIVE,例如,如果测试通过,则向Hudson服务器发送电子邮件(有关详细信息,请参阅)
如果您的手动测试在步骤2中失败,我假设您希望让开发人员修复代码,并在部署到生产环境之前重复步骤1和2


我想知道我们是否误解了您的场景-如果是这样,请添加更多详细信息,说明为什么有时要部署到测试中,有时要直接部署到实际应用中。

我可能非常愚蠢,但我以前从未听说过SVNs LOAD\u DIRS命令。你能解释一下吗?Thankssvn_load_dirs.pl是一个直到最近才随SVN提供的脚本,但如果您四处寻找,它仍然可用。它可以用来将一个目录加载到该代码现有副本之上的SVN中,它将正确地保留未更改的文件,记录已更改文件的更新,并添加新文件。如果使用此选项将二进制文件加载到二叉树中,则可以保留文件级版本历史记录(比删除目录并添加替换目录更好),并且可以准确地查看每个版本中已更改或添加的文件。您还可以签入升级插件。有了这个,你可以推广某些版本,以促进。这将节省你的麻烦发送电子邮件给哈德逊。