几乎任何IDE都会创建许多与正在开发的应用程序无关的文件,它们由IDE生成并保留,因此他知道如何构建应用程序,版本控制存储库等等.
这些文件是否应该保留在版本控制下以及与aplication有关的文件(源代码,应用程序的配置文件......)?
事情是:在某些IDE上,如果您创建一个新项目,然后使用IDE中嵌入的版本控制客户端/命令将其导入版本控制存储库,那么所有这些文件都将被发送到respitory.而且我不确定这是对的:在同一个项目上工作的两个不同的开发人员想要使用两个不同的IDE?
我想让这个问题不可知,避免引用任何特定的IDE,编程语言或版本控制系统.所以这个问题与这些问题并不完全相同:
Aar*_*lla 18
经验法则:
遵循此顺序中的规则.
[更新]始终存在生成代码应该发生什么的问题.根据经验,我总是把那些置于版本控制之下.一如既往,采取这种规则与一粒盐.
我的理由:
版本化生成的代码似乎浪费时间.它产生了吗?我只需按一下按钮就可以恢复!
真?
如果你必须咬紧牙关,并且必定会生成一些先前版本的完全相同版本,那将会付出多少努力?生成代码时,您不仅需要正确获取所有输入文件,还必须为代码生成器本身转回时间.你能做到吗?总是?如果您将其置于版本控制之下,那么检查生成的代码的某个版本会非常简单吗?
即使你可以,你能不能确定没有错过什么?
因此,一方面,将生成的代码置于版本控制之下是有意义的,因为它使得很容易做到VCS的用途:回到过去.
此外,它可以很容易地看到差异.代码生成器也是错误的.如果我修复了一个错误并生成了150'000个文件,那么当我将它们与之前的版本进行比较时,它会有很大的帮助,以便看到a)错误消失了b)没有其他意外的变化.这是您应该担心的意外部分.如果不这样做,让我知道,我会确保你永远为我公司工作过 :-)
代码生成器的主要痛点是稳定性.当你的代码生成器每次运行时只吐出随机乱七八糟的字节时,它就不会这样做(好吧,除非你不关心质量).代码生成器需要稳定且具有确定性.使用相同的输入运行它们两次,输出必须相同,直到最低位.
因此,如果您无法检入生成的代码,因为生成器的每次运行都会产生不存在的差异,那么您的代码生成器就会出现错误.修理它.必要时对代码进行排序.使用保留顺序的哈希映射.尽一切可能使输出非随机.就像你在代码中的其他地方一样.
我可能不会在版本控制下生成的代码将是文档.文档有点软目标.当我重新生成错误版本的文档时(例如,它或多或少有一些错别字),这并不重要.但对于发行版,我可能会这样做,所以我可以看到版本之间的差异.例如,可能有用,以确保发行说明完整.
我也没有签入JAR文件.因为我可以完全控制整个构建并完全相信我可以在一分钟内找回任何版本的源代码加上我知道我有一切必要的构建它而无需任何进一步的手动干预,为什么我需要可执行文件?再次,将它们放入特殊的发行版回购中可能是有意义的,但最好还是在公司的Web服务器上保留最近三年的副本以进行下载.想一想:比较二进制文件很难,并没有告诉你太多.
我认为最好将任何版本控制下来,以帮助开发人员快速入门,忽略可能由IDE或构建工具自动生成的任何内容(例如,Maven的eclipse插件生成.project和.classpath - 无需检查这些内容).特别要避免经常更改的文件,除了用户首选项之外什么都没有,或IDE之间的冲突(例如,像eclipse一样使用.project的另一个IDE).
对于eclipse用户,我发现添加代码样式(.settings/org.eclipse.jdt.core.prefs - 启用保存时自动格式化)以获得一致格式化的代码特别方便.
| 归档时间: |
|
| 查看次数: |
3299 次 |
| 最近记录: |