我将尝试用一个场景来解释:一个网站。假设您需要一个特定的图形元素,因此您选择为其创建一个PSD文件,并将其置于版本控制之下。但是为了保持提交之间的一致性,您还应该提交生成的PNG文件。
这是解决问题的正确方法吗?
奖金:您能提供一个很好的在线参考资料来讨论这种做法吗?
我添加了Git标签,因为我对这个特定的软件感兴趣,但我想这是一个常见的问题。
答案 0 :(得分:2)
是的,有时候有充分的理由将生成文件和生成的文件保持在版本控制之下。但是,如果您假设所有在项目上工作的开发人员都可以访问生成器(显然某些Adobe软件用于将*.psd
文件转换为*.png
文件,那么您的场景可能不是其中之一(所以这假设所有开发人员都可以访问该Adobe软件,并且他们可以从构建过程中运行它。你也可以保留图像文件,例如作为SVG文件(由inkscape编辑)。
保持生成和生成变体的充分理由包括自举系统。当您自己开发一种语言,由其自己的翻译器翻译时,您需要将两种变体保留在版本控制之下。我至少知道两个例子:Ocaml,其字节码&本机编译器是用Ocaml编写的,因此编译器的(生成的)字节码形式保存在SVN下,而我的GCC MELT是GCC的高级域特定语言。 MELT翻译器(从MELT DSL到C)用MELT编码,因此我将版本控制下的翻译形式(生成的C代码)与MELT源代码形式一起保存。
答案 1 :(得分:0)
我想说如果你可以在一个脚本中从源代码构建整个站点,那么你就不应该源代码控制生成的文件。这是首选(但有时候并不容易),因为这种方式历史可以简化为基本要素。