C语言 在回归测试中使用mercurial存储二进制文件



我有一个项目使用mercurial作为它的dvcs

我用python写了一个回归测试工具

我不时地标记一个变更集(比如客户发布)

回归测试脚本与src代码位于相同的repo中,我确保它们都通过给定的标记

如果我做了一堆破坏回归测试的更改,我可以查看到最后一个标签更改集,看看有什么不同——但这需要我重新构建应用程序

我的问题是我是否应该在我的仓库中包含应用程序二进制文件,以便我的回归测试自动使用二进制文件的适当版本,或者,我应该让我的回归测试工具在每次运行二进制文件时自动构建它

我的直觉是只把二进制文件包含在仓库中,以减少每次运行回归时重新构建的需要,但我有一种唠叨的感觉,你不应该做那种事情

我很想知道这个领域的最佳实践是什么

从版本控制的角度来看,不建议对这些次要文件进行版本控制,因为它们可以随时重新构建。此外,它们会迅速膨胀存储库,影响克隆和备份。

如果重建时间是一个问题,我建议您将所有二进制文件保存在另一个位置。

如果您想要版本构建的二进制文件,我建议将它们存储在子repo中。但是,希望子repo是主存储库的子repo。

相反,我建议这样配置:

umbrella_repo/
    .hgsub
    source_repo/
    binaries_repo/

则可以完全独立克隆source_repo/并在其上发育。您的回归设置有一个umbrella_repo的克隆,它自动克隆source_repobinaries_repo,并将它们的工作目录保持在您提交到umbrella_repo时所处的版本。

当你想创建一个新的回归检查点时,在你的回归设置中:

  1. umbrella_repo中做一个干净的更新,可能是一个清除:

    cd umbrella_repo
    hg update -C tip
    hg purge --all
    
  2. 更新到最新的umbrella_repo/source_repo:

    cd source_repo
    hg pull
    hg update -C <revision you want>
    hg purge --all
    
  3. 拷贝二进制文件到binaries_repo并提交

  4. Commit in umbrella_repo .

现在,当你更新到你刚刚在umbrella_repo中提交的版本时,它会自动更新到source_repobinaries_repo中匹配的版本。

有关更多信息,请查看关于子存储库的Mercurial帮助。需要特别注意的是,大多数命令在默认情况下不会递归到subrepos中。

最新更新