我正在接管一个项目,我在 subversion 存储库中看到一些属于 libtool 和 automake 分发的文件,例如 config.guess、depcomp 或 ltmain.sh。我相信这完全是错误的,因为当我结帐时,我应该在我的机器上安装 autotools 并执行 autoreconf。
你怎么看 ?我错过了将这些文件放在存储库中的意义吗?
通常,您的 SVN 存储库中不会有这些。通常你有一个autogen.sh
按需重新创建它的。您不存储可能过时的文件的本能是一种很好的本能。如果有人对 进行更改configure.ac
,而其他人用 来检查整个事情configure
,那么更改将无关紧要。
几乎所有可以生成的东西——以及 depcomp 等都属于它——不应该是跟踪源存储库的一部分。
纯粹的理论是您不应该将可以重新生成的文件放入版本控制中。由于您可以使用autoreconf -i
或类似方法重新创建这些文件,因此适用于这种情况。
很多人仍然这样做的原因(除了无知,可能)是这会给开发人员带来巨大的额外负担。例如,如果您有一个较大的开源项目,有数十名开发人员和数百名感兴趣的追随者,每个人都会安装不同版本的 autoconf、automake、libtool、autopoint 等。在简单的情况下,这不应该有所作为。在实践中,确实如此,这可能会让人头疼并拒绝潜在的项目贡献者。
因此,作为一种实际的折衷方案,由于这些文件实际上很少更改,因此如果您的设置非常复杂,则无论如何都可以检查它们。