你的项目应该 几乎总是 使用过去式。无论如何,为了保持一致性和清晰度,项目应始终使用相同的时态。
我理解一些其他人提出使用现在时态的论点,但它们通常不适用。以下是写在现在时态中的常见论点以及我的回应。
- 使用现在时态告诉某人应用提交(commit)会做什么,而不是你做了什么。
这是使用现在时态的最正确的原因,但只适用于特定类型的项目。这种思考方式将所有提交(commit)都视为可选的改进或功能,您可以自由决定在特定存储库中保留哪些提交(commit),并拒绝哪些提交(commit)。
如果您正在处理真正分布式的项目,则此论点有效。如果您正在处理分布式项目,则可能正在处理开源项目。如果真的是一个非常大的项目,那么这可能是Linux内核或Git。由于Linux很可能是引起Git传播和流行的原因,因此很容易理解为什么人们认为其风格具有权威性。是的,这种风格在这两个项目中很有意义。或者,一般来说,它适用于大型、开源、分布式项目。
尽管如此,大多数源代码控制的项目不是这样工作的。对于大多数存储库而言,通常是不正确的。这是提交的现代思考方式:Subversion(SVN)和CVS存储库几乎无法支持这种存储库检入(check-in)样式。通常,集成分支处理过滤掉的错误检入(check-in),但这些通常被认为不是“可选”或“好玩”的功能。
在大多数情况下,当您向源代码库提交更改时,您正在撰写一篇日志记录,描述这次更新的变化,以便其他人在将来更容易理解为什么进行了更改。这通常不是可选的更改 - 项目中的其他人需要合并或基于它进行重置。你不会写一个像“亲爱的日记,今天我
见到了一个男孩,他向我
打招呼”这样的日记记录,而是写“我
遇到了一个男孩,他向我
打招呼。”
对于这种非分布式项目,99.99%的时间读取提交消息是为了阅读历史记录 - 历史记录以过去时态读取。只有0.01%的时间,人们才会决定是否应该应用此提交或将其集成到他们的分支/存储库中。
- 一致性。在许多项目(包括git本身)中都是这样做的。还有生成提交的git工具(如git merge或git revert)。
不,我可以保证,在版本控制系统中记录大多数项目的历史记录都是过去式(我没有参考资料,但考虑到现在时态的论点是自Git以来新出现的,这可能是正确的)。只有真正分布式的项目才开始使用以现在时态撰写的“修订”消息或提交消息 - 请参见上面的第一点。
- 人们读取历史记录不仅是为了了解“这个代码库发生了什么”,还要回答诸如“当我采用这个提交时会发生什么”,或者“因为这些提交,我可能会合并到未来的代码中产生什么样的新变化”之类的问题。
请参见第一点。99.99%的时间读取提交消息是为了阅读历史记录 - 历史记录以过去时态读取。只有0.01%的时间,人们才会决定是否应该应用此提交或将其集成到他们的分支/存储库中。99.99%击败0.01%。
我从未见过一个好的论点,认为使用不恰当的时态/语法因为它更短。对于标准的50个字符的消息,你可能只会平均节省3个字符。话虽如此,现在时态平均来说可能会少几个字符。
- 你可以更一致地使用问题/特性跟踪器中的标题来命名提交(这些标题不使用过去时,尽管有时使用将来时)
问题被写成正在发生的事情(例如,应用正在显示错误行为),或者需要在未来完成的事情(例如,文本将需要编辑审查)。
历史记录(即提交消息)是以过去完成的事情作为基础编写的(例如,问题已经被修复)。