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

Nic*_*eld 5 svn tortoisesvn workflow pre-commit-hook

是否可以创建一个 svn 提交钩子来确认工作目录在提交之前已被 svn 更新、构建和测试?我想至少确保在开发人员提交之前,代码已经使用主干中的最新代码进行了编译和测试。当开发人员修改不同的源代码而导致构建失败时,这可以防止主干中出现集成问题。

另一种方法是,如果存在任何已更新的文件(但工作目录中没有必要修改),则阻止提交。

顺便说一句,正如上一个问题中提到的,我的工作提交了二进制文件和源代码。造成这种情况的一个给定原因是,如果提交时存在二进制文件冲突,您就知道该二进制文件的源已发生更改,因此您需要运行 svn-update 并重新编译。它还使合并和更新变得痛苦。我意识到,如果开发人员在提交之前进行更新,则不太可能需要此检查。

man*_*lds 1

SVN 本身确保文件已更新。您不必确保人们正在签入更新文件。

对于编译/测试部分,您可以使用 TortoiseSVN 进行客户端挂钩,它将编译代码并作为预提交挂钩的一部分运行测试。需要注意的是,您无法真正确定每个开发人员都有钩子设置。

您还可以查看类似于Rake Commit 任务的内容

以下是上述操作的步骤:

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