Subversion工作流程:在提交之前强制更新、构建和测试

5
有没有可能创建一个svn提交钩子,在提交之前确认工作目录已经进行了svn更新、构建和测试?我希望至少确保代码已经编译并使用了trunk中的最新代码进行了测试,然后开发人员才能提交。这将防止在开发人员修改不同源代码导致构建失败时出现trunk集成问题。
另一种选择是,如果存在任何已更新但未必要修改的文件,则防止提交。
顺便提一下,正如之前的问题所提到的,我的工作提交包括二进制文件和源文件。其中一个原因是,如果提交时存在二进制文件冲突,你就知道该二进制文件的源代码已经发生了变化,因此需要运行svn-update并重新编译。这也使合并和更新变得困难。我意识到,如果开发人员在提交之前进行更新,就不太可能需要进行此检查。
1个回答

1

SVN本身确保文件已被更新。您不必确保人们正在检查更新的文件。

对于编译/测试部分,您可以使用TortoiseSVN的客户端钩子,在提交前钩子的一部分编译代码并运行测试。但需要注意的是,您无法确定每个开发人员是否设置了这些钩子。

您还可以查看类似于Rake Commit tasks的东西

下面是上述步骤:

  1. 提示输入提交消息
  2. 将新文件添加到Subversion
  3. 从Subversion中删除缺失的文件
  4. svn更新
  5. 运行默认的rake任务(应该运行测试)
  6. 检查cruisecontrol.rb以查看构建是否通过
  7. 检入代码

1
是的,但svn只能确保在提交之前更新了修改后的文件。 假设有一个二进制文件,它由两个源文件构建而成。 两个开发人员都检出相同的版本,但只修改了一个源文件。 如果他们在提交之前不更新和测试,那么他们可能会提交一起失败的代码。(例如,在source1中删除了source2新版本依赖的函数)这是一种边缘情况,显然他们过去曾受到过伤害。 - Nick Sonneveld
看了一下svn rake提交任务(以及你刚刚粘贴的步骤,谢谢! :)),它看起来非常接近我想要在tortoisesvn中实现的功能。 - Nick Sonneveld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接