【问题标题】:Subversion workflow: force update, build, test before commitSubversion 工作流程:在提交前强制更新、构建、测试
【发布时间】:2011-09-22 23:20:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: svn tortoisesvn workflow pre-commit-hook


    【解决方案1】:

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

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

    你也可以看看类似Rake Commit tasks的东西

    以下是上述步骤:

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

    【讨论】:

    • 是的,但 svn 只会确保修改后的文件在提交之前已经更新。假设有一个由两个源文件构建的二进制文件。两个开发人员都签出了相同的修订版,但每个人只修改了一个源文件。如果他们在提交之前不更新和测试,他们可能会签入一起失败的代码。 (例如,source2 的新版本所依赖的 source1 中的一个函数被删除)这是一个边缘情况,显然它们过去曾被咬过。
    • 查看 svn rake 提交任务(以及您刚刚粘贴的步骤,谢谢!:)),它看起来非常接近我在 tortoisesvn 中想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2013-12-02
    • 2023-03-09
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多