我是一个热心的git用户,我有一个代码,它依赖于一组调试常量来打开或关闭日志记录,预先填充的表单以及不属于生成版本的其他行为。
问题实际上与语言无关,但在java中你可以这样想:
public static final DEBUG_LOGS = true;
public static final DEBUG_SKIP_FORM = true;
...
调试开关可以被隔离到一个单独的文件中(例如,只有静态成员的类,一个C头文件,......)但是我开发的越多,我面临的问题就越多:
我是否应该找到.gitignore
文件的方法(可能始终保持生产就绪版本),保留所有(频繁)更改并使存储库混乱,或者我应该手动跳过它什么时候分期?还有其他解决方案吗?
处理这种情况的正确的方式(务实地说)是什么?
谢谢!
答案 0 :(得分:1)
此文件是“构建配置文件”。如果它在repo中,它应该只作为模板存在。构建不涉及模板。相反,一些文档说您必须在本地将build_config_template.whatever
复制到build_config.whatever
(并且请不要将后者添加到存储库中)。
模板可以具有用于执行生产构建的首选设置,以便想要执行最常见构建类型的人根本不需要更改它,或者必须对它做很少的事情。
如果您遵循开源项目,您可能已经看到很多人使用名为./configure
的脚本生成构建配置文件(例如对于C程序),例如config.make
,{{1} } 和别的。甚至生成了config.h
个整数:Makefile
模板经过预处理,替换了导致Makefile.in
的某些材料,而在某些情况下,Makefile
模板本身是从Makefile.in
。 (正如您所看到的,人们已经提出了非常精细的解决方案来构建配置问题。)
如果您不运行此配置脚本,则无法构建软件,因为缺少程序及其构建系统的各个部分。生成的部分(如Makefile.am
和config.make
)未在源分发中签入或打包。 (虽然某些生成的部分,比如配置脚本本身,是打包的,有时最终会被检入repos。对于每个规则都有合理的例外。)