Git 子模块是否是一个不强制库用户下载其测试的好主意?

Are Git submodules a good idea to NOT force library users to download its tests?

在开发代码库时,我想将它的测试与实际代码有效负载分开,因为我相信当有人使用我的库时,他们只是想使用它而他们对测试它不感兴趣——测试是我的责任,而不是我的用户。

我知道存储 space 很便宜,带宽也很便宜,但我的原则是不要浪费它们中的任何一个。

我正在考虑将所有测试代码放入单独的 git 存储库中,并将其用作主存储库中的 git 子模块。

这样,感兴趣的人仍然可以获取并执行测试,但通常当您克隆主存储库时,唯一的额外文件是子模块的空目录,以及 .git模块文件。

这是个好主意吗?

当然可以。但是子模块是一个棘手的事情,有时它们有点复杂,所以对于一些不熟悉它们的用户来说需要时间。

在我看来,您可以将测试与库打包在一起。根据您的语言,您可以将它们放入自己的包中 (Java),因此您可以在构建发布包时在构建脚本 (Ant/Make) 中排除它们。

存储真的很便宜,使用子模块是一件很棘手的事情。此外,对于某些人(例如我)来说,运行 测试是一个相当大的克服,当您必须查看子模块如何工作时,它会变得更加困难。另外,请记住:好的测试也可以用作文档。

我会将实际的库作为一个存储库,将测试作为另一个存储库,然后将两者作为子模块包含在一个链接两个子模块的匹配版本的超级项目中。在这种情况下,只需要库的用户将不需要知道测试的存在,他们也不必以任何方式处理子模块。

熟悉子模块的用户可以克隆超级项目,如果他们也对测试感兴趣,使测试负载可选。