使用idea 生成changelog文件自動更新說明

每次提交代碼時熄浓,由于每個人的習(xí)慣不同,導(dǎo)致commit信息不明確,
所以工禾,為了能使得日后復(fù)(zhao)盤(guo)的時候更加的方便运提,團(tuán)隊(duì)之間遵守同一套 commit message 規(guī)范還是很有必要的。(轉(zhuǎn))

commit message 的作用

  • 提供更多的歷史信息闻葵,方便快速瀏覽民泵。
  • 可以過濾某些commit(比如文檔改動),便于快速查找信息槽畔。
  • 可以直接從commit生成Change log栈妆。

定制 commit message規(guī)范

IDEA安裝插件 Git Commit Template
1、搜索commit message template并安裝竟痰,安裝完重啟


780_1.png

2签钩、提交代碼


Image [2].png

781_1.png
  1. Header
    Header的部分只有一行,包括三個字段: type(必需), scope(可選), subject(必需)

對應(yīng)到idea插件上圖的配置分別為 Header部分的:

type(必需) Type of change commit類別
scope(可選) Scope of this change commint影響的范圍
subject(必需) Short description 簡短的描述
(1)type用于說明 commit 的類別,只允許使用下面7個標(biāo)識
feat:新功能(feature)
fix:修補(bǔ)bug
docs:文檔(documentation)
style: 格式(不影響代碼運(yùn)行的變動,空格,格式化,等等)
refactor:重構(gòu)(即不是新增功能坏快,也不是修改bug的代碼變動)
perf: 性能 (提高代碼性能的改變)
test:增加測試或者修改測試
build: 影響構(gòu)建系統(tǒng)或外部依賴項(xiàng)的更改(maven,gradle,npm 等等)
ci: 對CI配置文件和腳本的更改
chore:對非 src 和 test 目錄的修改
revert: Revert a commit
(2) scope
scope用于說明 commit 影響的范圍铅檩,比如數(shù)據(jù)層、控制層莽鸿、視圖層等等昧旨,視項(xiàng)目不同而不同。

(3) subject
subject是 commit 目的的簡短描述祥得,不超過50個字符兔沃。

以動詞開頭,使用第一人稱現(xiàn)在時级及,比如change乒疏,而不是changed或changes
第一個字母小寫
結(jié)尾不加句號(.)

  1. Body
    Body 部分是對本次 commit 的詳細(xì)描述,可以分成多行饮焦。

有兩個注意點(diǎn)怕吴。

(1)使用第一人稱現(xiàn)在時,比如使用change而不是changed或changes县踢。

(2)應(yīng)該說明代碼變動的動機(jī)转绷,以及與以前行為的對比。

  1. Footer
    Footer 部分只用于兩種情況硼啤。

(1)不兼容變動

如果當(dāng)前代碼與上一個版本不兼容议经,則 Footer 部分以BREAKING CHANGE開頭,后面是對變動的描述谴返、以及變動理由和遷移方法煞肾。

BREAKING CHANGE: isolate scope bindings definition has changed.

To migrate the code follow the example below:

Before:

scope: {
  myAttr: 'attribute',
}

After:

scope: {
  myAttr: '@',
}

The removed `inject` wasn't generaly useful for directives so there should be no code using it.

(2)關(guān)閉 Issue

如果當(dāng)前 commit 針對某個issue,那么可以在 Footer 部分關(guān)閉這個 issue 嗓袱。

Closes #234
也可以一次關(guān)閉多個 issue 扯旷。

Closes #123, #245, #992

示例

782_1.png

commit規(guī)范已經(jīng)做完了,接下來就是要把所有的commit信息記錄在changelog里索抓。

1钧忽、commitizen安裝

cnpm install -g commitizen

會自動在項(xiàng)目根路徑生成package.json

2毯炮、安裝適配器

cnpm install cz-conventional-changelog --save-dev

commitizen 工具會自動在package.json中添加配置相應(yīng)的配置,具體如下:"config": {"commitizen": {"path": "cz-conventional-changelog"}}

3耸黑、安裝conventional-changelog-cli

cnpm install -g conventional-changelog-cli
基本使用
conventional-changelog -p angular -i CHANGELOG.md -s 

以上命令中參數(shù)-p angular用來指定使用的 commit message 標(biāo)準(zhǔn)
參數(shù)-i CHANGELOG.md表示從 CHANGELOG.md 讀取 changelog, -s 表示讀寫 changelog 為同一文件桃煎。需要注意的是,上面這條命令產(chǎn)生的 changelog 是基于上次 tag 版本之后的變更(Feature大刊、Fix为迈、Breaking Changes等等)所產(chǎn)生的,所以如果你想生成之前所有 commit 信息產(chǎn)生的 changelog 則需要使用這條命令:$ conventional-changelog -p angular -i CHANGELOG.md -s -r 0其中 -r 表示生成 changelog 所需要使用的 release 版本數(shù)量缺菌,默認(rèn)為1葫辐,全部則是0。

那么 tag 版本是怎么指定的呢伴郁,請看package.json

{
  "devDependencies": {
    "commitizen": "^4.0.3",
    "cz-conventional-changelog": "^3.0.2"
  },
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
  },
  "version": "1.0.2",
  "scripts": {
    "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md"
    }
}

version即是當(dāng)前版本號耿战,需要手動指定
那么如何生成changelog呢
changelog是記錄版本之間的變化
通常情況線下,我們會在 master 分支進(jìn)行如下的版本發(fā)布操作

  1. git pull origin master
  2. 根據(jù) pacakage.json 中的 version 更新版本號焊傅,更新 changelog
  3. git add -A, 然后 git commit
  4. git tag 打版本操作
  5. push 版本 tag 和 master 分支到倉庫

tag打完之后會有新的版本號剂陡,將此版本號更新到pacakage.json 中的 version字段,執(zhí)行

npm run changelog

之后changelog已經(jīng)有更新了狐胎,更新會自動分類


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸭栖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子握巢,更是在濱河造成了極大的恐慌晕鹊,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暴浦,死亡現(xiàn)場離奇詭異溅话,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)肉渴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門公荧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來带射,“玉大人同规,你說我怎么就攤上這事】呱纾” “怎么了券勺?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長灿里。 經(jīng)常有香客問我关炼,道長,這世上最難降的妖魔是什么匣吊? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任儒拂,我火速辦了婚禮寸潦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘社痛。我一直安慰自己见转,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布蒜哀。 她就那樣靜靜地躺著斩箫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撵儿。 梳的紋絲不亂的頭發(fā)上乘客,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音淀歇,去河邊找鬼易核。 笑死,一個胖子當(dāng)著我的面吹牛房匆,可吹牛的內(nèi)容都是我干的耸成。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼浴鸿,長吁一口氣:“原來是場噩夢啊……” “哼井氢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岳链,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤花竞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后掸哑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體约急,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年苗分,在試婚紗的時候發(fā)現(xiàn)自己被綠了厌蔽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡摔癣,死狀恐怖奴饮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情择浊,我是刑警寧澤戴卜,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站琢岩,受9級特大地震影響投剥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜担孔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一江锨、第九天 我趴在偏房一處隱蔽的房頂上張望吃警。 院中可真熱鬧,春花似錦啄育、人聲如沸汤徽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谒府。三九已至,卻和暖如春浮毯,著一層夾襖步出監(jiān)牢的瞬間完疫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工债蓝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壳鹤,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓饰迹,卻偏偏與公主長得像芳誓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子啊鸭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容