0

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

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

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

回归测试脚本与 src 代码在同一个仓库中,我确保它们都通过给定的标签

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

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

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

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

4

2 回答 2

2

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

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

于 2013-05-24T16:49:48.637 回答
1

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

相反,我建议配置如下:

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. 建造。

  4. 将二进制文件复制到binaries_repo并提交。

  5. 提交umbrella_repo

现在,当您更新到刚刚提交的修订版时umbrella_repo,它会自动更新到 和 中的匹配修订source_repobinaries_repo

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

于 2013-05-24T20:40:35.877 回答