您能推荐一个好的提交消息模板/指南在公司中执行吗?[关闭]


38

在Git中,可以设置并强制执行良好的提交模板。

您能推荐(最好是带有论点的)好的提交模板/准则在公司中执行吗?

Answers:


42

我用

[Abc]: Message.

使用Add,Mod(ify),Ref(actoring),Fix,Rem(ove)和Rea(dability),可以轻松提取日志文件。

范例:

Add: New function to rule the world.  
Mod: Add women factor in Domination.ruleTheWorld().  
Ref: Extract empathy stuff to an abstract class.  
Fix: RUL-42 or #42 Starvation need to be initialised before Energy to avoid the nullpointer in People.  
Rem: freeSpeech is not used anymore.  
Rea: Removed old TODO and extra space in header.  

如果我有多条线,我会以最重要的顺序对它们进行排序。


1
+1这是一种很好的处理方式,您可以轻松地grep进行更改。
Sardathrion-恢复莫妮卡2011年

12
好极了!您带走了言论自由!
CaffGeek 2011年

1
您能解释一下Mod和之间的一些区别Ref吗?有时我只是在做一些小的重构,这是一种重构。
yegle 2012

2
@yegle Mod是关于添加某些东西或更改行为,Ref是关于更改内部内容而不添加任何功能,添加API等。例如:如果我有一个add(Object)函数并且实现了一个add(List<Object>)函数,我将用进行注释Mod。稍后,我将删除重复项并直接使用add(Object)add(List<Object>)然后再使用Ref
rangzen 2013年

14

我们使用以下内容:

[JIRA中的票证编号]:[消息:已完成] 例如-ABC-123:增加了按区域配置演示的功能。

在这种情况下,通过适当的集成,您将能够在问题跟踪器中获取更改/删除/添加的文件。但是,请注意,应尽可能避免使用ABC-123:已完成ABC-123:已通过过滤器修复的措施


+1修复错误,但新功能如何?除非在JIRA中也创建了所有新功能,否则...
Sardathrion-恢复Monica 2011年

3
@Sardathrion-我个人将为JIRA中的新功能创建跟踪器。我们使用Bugzilla进行此操作,它使测试团队(及其他所有人)对发布中的所有内容都具有良好的可见性,并在未经过测试/未经代码审查/任何检查的情况下,将发生的问题减至最少。
乔恩·霍普金斯,

@JonHopkins:虽然可以将Bug跟踪器用于新功能,但它可能不是理想的工具。当然,你的里程将有所不同^ _〜
Sardathrion -恢复莫妮卡

3
我很喜欢每个提交分配一个票证(当然,有些票证可以轻松地包含多个提交):这是一种非常简单的方法,可以在以后检查代码时获取更多背景信息。“他们为什么这样?” 当您有提交注释问题跟踪条目时,回答起来会容易得多。
约阿希姆·绍尔

在单独的分支机构卖票不是更好吗?
陶Szelei

11

有一个简单的规则,这是一个约定,许多(如果不是全部)SCM和与SCM一起使用的大多数工具都遵循该约定:

提交消息的第一行是简短的摘要,而消息的其余部分包含详细信息。

因此,大多数工具仅显示第一行,并按需显示整个消息。

提交消息的典型滥用是项目符号更改列表(仅显示第一个项目符号)。另一个误用是在一行上写了一个详细的消息。

因此,如果有一件事情需要执行,我会说这是第一行的最大长度。


我从来没有见过用Git编写详细详细的提交消息的理由。详细信息包含在问题跟踪器中,因此我的提交消息只是我对该提交所做的(小的)更改的一句话描述。
Marnen Laibow-Koser

9

我个人从未见过值得使用的通用提交模板。评论应简明扼要地说明提交与哪些内容有关,例如,哪些功能/错误修复或简要说明更改原因。

不应包含有关已提交内容的信息,这可以由scm系统确定。更多的错误/功能信息属于跟踪错误和功能的位置。

提交后更新错误报告时,我发现最好在错误报告中注明提交修订以及注释。这样,您就可以找到从提交注释到错误报告的方式,对于错误报告中的每个注释,您都可以找到已提交的内容,但是不会在错误报告和提交消息中同时包含信息,因此不会重复信息。

然后,在查看文件修订历史时,您不仅可以看到描述历史的简短消息,而且还知道在哪里可以找到更多详细信息,错误报告或任务说明以获取更多详细信息。


4
如果您以正确的格式输入详细信息,许多错误工具将使您直接链接到SCM工具中的修订。同样,如果以正确的格式输入错误详细信息,许多SCM工具将直接链接到错误数据库。海事组织,只要你这样做,那么你就是金。
迪恩·史密斯

4

在Git中,几乎可以使用Git钩子强制执行任何操作。查看.git / hooks中的示例以获取想法。

至于该消息,在一个非常普通的情况下,您希望包含有关所要解决的问题以及解决方案本身的足够信息,以便以后能够找到并识别此提交。在大多数情况下,将以错误编号(与错误跟踪系统正确集成)作为问题的参考。如果您的流程与其他系统集成在一起(例如代码审查跟踪系统),则还包括相应的位:

Extracted checking foobar range from bar() into foo(min, max) to re-use
in yadda() and blah(). foo() returns true if foobar is in the
specified range and false otherwise.

BugID: 123456
ReviewedBy: mabuddy
AutomergeTo: none

但您想保持简单。否则,人们将找到一种方法来欺骗系统并产生无用的提交消息。


0

我们使用的模板包含

  • 错误/功能/修复的ID号
  • 是/否描述代码是否经过测试
  • 并在详细信息部分中简要说明了提交的意图

但是,大多数情况下前两个时间(大多数情况下都是三个)都被忽略了,因此这并不是什么大问题。


0

通常,我会在所使用的票务跟踪系统中找到标识符,或者将其作为第一行进行简要介绍。然后,我获得了提交中特定更改的行项目“项目符号”点。所以我可以这样:

MyVideoGameProject-123 OR Inventory System Improvements
Made inventory GUI drap and drap
Added ability to have multiple bag slots to expand inventory capacity

这是我喜欢的最干净的提交格式。这是直接而直接的。我这样做的另一个原因是,如果我要创建更改日志,则可以很容易地获取所有提交消息并将其解析为更改日志。


0

[ticketId] [ABC] [topicId] [WIP]消息,其中:

  • ticketId-任务存储库中项目的ID
  • ABC-添加(功能),修复(错误修复),str(结构),dep(依赖),rem(向后不兼容/删除),rea(可读性),ref(重构)
  • topicId-可以是詹金斯和/或分支名称和/或gerrit的主题名称的作业选择器
  • 在制品-是否在进行中(即持续集成可能需要这样做)
  • 消息-修改的详细信息

示例:
[#452567] [添加] [菜单项]新项目-留言簿
[#452363] [修复] [banner_top] [WIP]现在可以使用
1024x300 [#452363] [修复] [banner_top] 500x200现在可以使用
[ #452713] [rem] [page]左中间广告


如果您解释了为什么您觉得这是一个很好的格式,您的答案会更强。尽管这种格式的价值对您来说是不言而喻的,但对其他人而言却不那么明显。

感谢您的评论-是的,我会尽快详细解释-我只是想从一个事实开始-将会是一个很好的堆栈功能,您可以使用WIP签署答案:)
laplasz

对于“进行中的工作”,这是给您自己一个提示,您将回来修改该注释,还是您打算精通此操作?如果是这样,为什么?
JBR威尔金森

CI工作流程可能需要它-这样你推掌握未完成的改变只是为了整合其尽快
laplasz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.