[譯]AngularJS Git提交信息規範

  • 目標linux

    • 生成 CHANGELOG.mdgit

    • 識別不重要的提交angularjs

    • 在瀏覽 Git 歷史時提供更多信息github

  • 格式化提交信息工具

    • 恢復(Revert)測試

    • 信息頭部fetch

      - 必需<type>
        - 必需<scope>
        - <subject>文本
    • 信息主體spa

    • 信息尾部日誌

      - 重大更改(Breaking changes)
        - 引用討論(Referencing issues)

目標

  • 可以經過腳本生成 CHANGELOG.mdcode

  • 能讓 git bisect 過程忽略不重要的提交

  • 在瀏覽歷史時提供更好的信息

生成 CHANGELOG.md

咱們在 changeling 裏使用這三個標誌: new features, bug fixes, breaking changes.
在作一個發行版的時候,這個列表能夠經過腳原本生成,經過關聯這些相關的提交。
天然,你能夠在實際發行以前編輯這些變動日誌,可是這樣子能夠很容易的生成骨架。

列出自最近一次發行以來全部的主體(提交信息第一行)

>> git log <last tag> HEAD —pretty=format:%s

在本次發行內的新功能

>> git log <last release> HEAD —grep feature

識別不重要的提交

一般有不少的Formatting changes(adding/removing spaces/empty lines, indentation), missing semicolons, comments.因此當你查找一些變動的時候,你能夠忽略這些提交 - 這些提交裏面沒有業務邏輯變動。

當二分查找的時候,你能夠忽視這些提交經過鍵入如下命令:

>> git bisect skip $(git rev-list —grep irrelevant <good place> HEAD)

在瀏覽歷史時提供更多信息

這將會增長一種「context」信息
看這些信息(經過查看最近的 angularjs 的提交信息)

  • Fix small typo in docs widget (tutorial instructions)

  • Fix test for scenario.Application - should remove old iframe

  • docs - various doc fixes

  • docs - stripping extra new lines

  • Replaced double line break with single when text is fetched from Google

  • Added support for properties in documentation

全部這些信息都嘗試去代表更改的位置,可是它們沒有使用公共的規範
再看看這些信息:

  • fix comment stripping

  • fixing broken links

  • Bit of refactoring

  • Check whether links do exist and throw exception

  • Fix sitemap include (to work on case sensitive linux)

你能猜出這裏面到底裝了些什麼?這些信息缺少重點。
也許還有這些代碼:docs, docs-parser, compiler, scenario-runner, ...
我知道,你能夠經過查看哪些文件被改變來肯定這個提交到底作了什麼,可是這樣子太麻煩了。
當查看 git 歷史信息的時候咱們能夠看到你們都在努力保持一致,可是缺乏一個公共規範。

提交信息的格式化

<type>(<scope>):<subject>
 <BLANK LINE>
 <body>
 <BLANK LINE>
 <footer>

提交信息的任意一行都不能超過100個英文字符!這個能讓信息在 github 上和 git 工具裏更容易查看。

恢復

若是提交是用於恢復一個更早的提交,這個頭部應該以「revert:」開始,接下來是被恢復提交的頭部,在主體內應該寫「This reverts commit <hash>.」,hash 的位置就是被恢復提交的 sha 值

信息頭部

信息頭部應該是包含改變的一條單行簡要描述,包括一個類型,一個可選的範圍和一個主題

必需的<type>
這是用於說明提交的類型,下列是7個標誌。

  • feat: 新功能

  • fix : 修補bug

  • docs: 文檔

  • style: 格式化,缺乏分號等

  • refactor

  • test: 增長缺乏的測試

  • chore 維護

必需的<scope>
範圍能夠是任何制定的提交更改的地方。例如 $location, $browser, $compile, $rootScope, ngHref, ngClick, ngView等等
<subject>文本
這是變動的簡單描述

  • 以動詞開頭,使用第一人稱如今時,好比change,而不是changed或changes

  • 第一個字母小寫

  • 結尾不加句號

信息主體

這部分是對本次提交的詳細描述,能夠分紅多行

  • 使用第一人稱如今時,好比使用 change 而不是 changed 或者 changes。

  • 說明代碼變動的冬季,以及和之前代碼的對比

信息尾部

只有兩種狀況:不兼容變更全部不兼容變更應該被列爲不兼容變更塊放在信息尾部,應該以「BREAKING CHANGE:」開始,後面是對變更的描述,以及變更的動機和遷移方法引用討論若是當前提交是針對某個討論,那麼能夠在尾部關閉這個討論Closes #234或者同時關閉多個討論Closes #123, #245, #992

相關文章
相關標籤/搜索