Version control 您有任何提交策略吗?

Version control 您有任何提交策略吗?,version-control,Version Control,我的老板昨天宣布了一项新的提交策略,用于签入存储库。此策略对提交到头/主干和分支有效。 提交消息必须包含以下项: 原因(错误ID、项目ID或非功能性更改) 审核人姓名 在提交之后,我们还必须在CMS中创建一个变更博客条目 我不太喜欢这种提交策略,因为当我在一个非生产性分支中做新的或实验性的东西时,我通常不需要审查者 您是否有任何必须遵守的提交策略 我认为仅仅因为Bug报告而改变生产分支是一个好主意,但是对开发分支的承诺应该限制较少 由于您提到的原因,审查者似乎毫无意义,因为并非所有内容都需要

我的老板昨天宣布了一项新的提交策略,用于签入存储库。此策略对提交到头/主干和分支有效。
提交消息必须包含以下项:

  • 原因(错误ID、项目ID或非功能性更改)
  • 审核人姓名
在提交之后,我们还必须在CMS中创建一个变更博客条目

我不太喜欢这种提交策略,因为当我在一个非生产性分支中做新的或实验性的东西时,我通常不需要审查者

您是否有任何必须遵守的提交策略


我认为仅仅因为Bug报告而改变生产分支是一个好主意,但是对开发分支的承诺应该限制较少

由于您提到的原因,审查者似乎毫无意义,因为并非所有内容都需要他人审查


在过去,我们唯一的提交策略(我以前工作的地方)是包含一条评论,指出您更改了什么以及更改的原因,但这比其他任何事情都更符合常识。

尽早提交并经常提交。

实际上,我们使用/trunk作为开发和标记来分支不同的版本。只有结构侵入性更改进入/分支

我们积极地使用标签进行生产和验收发布,因此我们可以轻松地返回时间。主干中提交的任何内容都应该只包含一条消息,描述提交更改或添加的内容

我不太喜欢使用消息空间链接Bug ID,它仍然需要查找ID,在这种情况下,你也可以在Bug跟踪软件中查找并关闭它,这对我来说也是同样的努力

不是说我不喜欢任何svn集成: -我们使用自动化nant脚本的更多优点来发布将它们分支到/tags中的版本 -svn道具实际上存储了我们的版本号:p。
-用于电子邮件通知和消息日志记录的钩子脚本(非常适合复制粘贴发行说明)。

我们有许多策略,这些策略是通过Visual Studio的内部插件强制实施的。我们检查代码是否编译,以及单元测试是否已成功运行。目前,我们还检查代码覆盖率,并对没有足够测试的代码发出警告。我们还进行各种一致性检查,并验证变更管理系统中是否存在适当的任务,以便为所有变更提供可追溯性


工具支持的优势是巨大的,因为它实际上并不取决于人们是否尊重策略,但显然有一个缺点,因为这些检查需要时间运行。然而,对于许多开发人员来说,如果没有适当的工具支持,很难实施标准

一个常见的提交策略是将bug ID与提交到主干相关联,作为理由。有时,版本控制和错误跟踪系统被配置为强制执行此策略。

我的提交消息包括我在类中实现或更改的简短描述

我在新代码上方的注释中添加的bug编号和其他描述。当我们将更改合并到带标记的分支中时,我们放置在提交消息中的ID

每天晚上,自动构建都会检查不同的功能和产品,确保代码库是稳定的

但最后,我认为,对于新的或更改的类,您不能有太多的描述,而是在提交之前必须执行太多的策略。审阅者的名字是我不会放在提交消息中的


想想看,有时候你不得不不理解你两年前实现的代码。然后,您会对提交消息感到高兴,这些消息与“调试后更新”不同。

我们的提交策略听起来有点像您的,只是我们不在任务分支上强制执行它(任务分支就像开发人员的沙箱,用于试验)


我们的提交注释必须包括变更控制ID(新功能、增强)或问题ID(bug修复)。您还必须简要说明您做出此更改的原因;版本控制跟踪谁、什么、何时和何地。

我们为每个已发布的主要软件版本提供分支,这些版本仍然受到积极支持。检查这些分支中的任何一个都需要一个bug ID——这是由强制执行的,它不仅会检查注释是否以bug ID为前缀,而且还会在bug数据库中查找此bug,确保它被分配给提交者,并可能检查其他条件(例如,“fix in branch”字段是提交到的分支)

其中一个产品更可能以令人尴尬的方式失败,并且签入该产品不仅需要bug ID,还需要代码检查。但是,代码审查的标准在我们的bug数据库中处理-我们有自定义字段,在审查之前,bug不能被接受和关闭。对我来说,这是从概念层面上起作用的——最好是在未经审查的存储库中检查被认为有效的代码,然后重新打开错误并在必要时进行更改,而不是等到确定它可以发布后再提交

除此之外,主干没有明确的策略(当然,通常在不破坏构建的情况下签入的一般原则,包括良好的描述性提交消息,原子地签入工作单元仍然适用)