【轉載】替換gerrit原始的commit-msg hook

原文地址:

原標題: 升級Gerrit的commit-msg,檢查git commit時必須填寫開發(fā)任務編號TaskID]
https://www.cnblogs.com/simplestupid/p/9195491.html

公司使用git+gerrit+jenkins進行持續(xù)集成實踐辆雾,其中gerrit用來進行Code Review裸影。另外我們自己研發(fā)了一套敏捷項目管理系統(tǒng)TPM(TeamPlus Management)碘饼,用來管理開發(fā)任務和電子看板。此時有一個需求,希望開發(fā)人員提交的代碼能夠關聯(lián)到TPM上的開發(fā)任務斧账,這樣就能實現(xiàn)需求與代碼的關聯(lián)埋市,實現(xiàn) 需求->backlog->userstory->task->code->build->test->deploy->prod 的全流程數(shù)據(jù)關聯(lián)冠桃。

目前的一個方式是在開發(fā)人員提交代碼的同時,在comments中指定TaskID道宅,其中TaskID是TPM系統(tǒng)中開發(fā)任務編號食听。但是很多時候開發(fā)人員提交代碼是,忘記在comments log中指定TaskID污茵,導致數(shù)據(jù)缺失樱报,不能有效輔助研發(fā)過程改進。

為此泞当,考慮參考Gerrit的commit-msg的方式迹蛤,在commit代碼同時,檢查comments log中是否有指定合法的TaskID襟士。(Gerrit的commit-msg笤受,就是在commit代碼的同事,給comments log增加一個Change-ID編號)

首先敌蜂,修改commit-msg箩兽,增加TaskID的檢查。

# Check for if missing a unique TaskID related with TPM

#

check_TaskID() {

COMMIT_FILE=$MSG

COMMIT_MSG=$(cat $MSG)

TASK_ID=$(echo "$COMMIT_MSG" | grep -Eo "#task[A-Za-z0-9]+")

if [ -z "$TASK_ID" ]; then

echo "[ERROR] Please add TPM TaskID comment logs with a format like 'comment logs #task20180623001'"

exit 1

else

echo "[INFO] StoryId=["$TASK_ID"]"

fi

}

# Check for, and add if missing, a unique Change-Id

#

add_ChangeId() {

...

...

...

check_TaskID

add_ChangeId

其次章喉,是替換舊的commit-msg文件汗贫。

檢索了一遍gerrit-site目錄身坐,沒有發(fā)現(xiàn)commit-msg文件,懷疑是在gerrit.war中落包。解開gerrit.war部蛇,仍然沒有發(fā)現(xiàn)commit-msg文件,懷疑實在某個依賴lib中咐蝇。我們用的gerrit版本是2.12.8涯鲁。翻了一下gerrit的源代碼,commit-msg是在gerrit-server/src/main/resources/com/google/gerrit/server/tools/root/hooks/commit-msg有序,推測是在gerrit-server的依賴lib中抹腿。解開gerrit-server-server.jar后,果然發(fā)現(xiàn)commit-msg旭寿。

gerrit2.15版本的hooks在./WEB-INF/lib/gerrit-server-libserver.jar中,解壓后commit-msg路徑是com/google/gerrit/server/tools/root/hooks

之后有兩種辦法替換:

1警绩、重新編譯gerrit源碼。覺得太麻煩盅称,放棄肩祥。

2、依次解壓gerrit.war和gerrit-server-server.jar缩膝,修改commit-msg混狠,再用jar命令依次打包gerrit-server-server.jar和gerrit.war。

注意打gerrit.war的時候疾层,需要指定Manifest檀蹋,指定gerrit.war的Main-Class: Main,否則java -jar gerrit.war啟動的時候找不到MainClass云芦。

最后俯逾,升級修改后的gerrit。

網(wǎng)上找一找gerrit版本升級的網(wǎng)頁有一堆舅逸。務必注意桌肴,升級之前一定要備份gerrit-site。

1琉历、停止gerrit坠七。 cd gerrit-site/bin; sh gerrit.sh stop

2、備份gerrit-site

3旗笔、啟動新的gerrit彪置。 java -jar new-gerrit.war init -d gerrit-site

之后基本上一路回車就行。這個過程會替換gerrit-site/bin/gerrit.war蝇恶,并會重新配置一遍gerrit拳魁。

驗證效果

1、啟動gerrit撮弧。 cd gerrit-site/bin; sh gerrit.sh start

2潘懊、打開 http://gerrit地址/tools/hooks/commit-msg姚糊,查看是否是修改以后的文件。

3授舟、git clone項目測試救恨。

:~/code>git clone ssh://[項目地址] && scp -p -P 29418 [gerrit地址]:hooks/commit-msg AgileMng/.git/hooks/

Cloning into 'AgileMng'...

remote: Counting objects: 1952, done

remote: Finding sources: 100% (1952/1952)

remote: Total 1952 (delta 918), reused 1870 (delta 918)

Receiving objects: 100% (1952/1952), 1.17 MiB, done.

Resolving deltas: 100% (918/918), done.

commit-msg                                                                                                                               100% 4946     4.8KB/s   00:00   

:~/code/AgileMng>touch 1

:~/code/AgileMng>git add 1

:~/code/AgileMng>git status

# On branch master

# Changes to be committed:

#   (use "git reset HEAD <file>..." to unstage)

#

#       new file:   1

#

:~/code/AgileMng>git commit -m "add new file 1"

[ERROR] Please add TPM TaskID in comment logs with a format like 'comment logs #task20180623001'

:~/code/AgileMng>git commit -m "add new file 1 #task20180618 new file 1"

[INFO] TaskId=[#task20180618]

[master 48daaed] add new file 1 #task20180618 new file 1

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 1

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市释树,隨后出現(xiàn)的幾起案子肠槽,更是在濱河造成了極大的恐慌,老刑警劉巖奢啥,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秸仙,死亡現(xiàn)場離奇詭異,居然都是意外死亡扫尺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門炊汤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來正驻,“玉大人,你說我怎么就攤上這事抢腐」檬铮” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵迈倍,是天一觀的道長伤靠。 經(jīng)常有香客問我,道長啼染,這世上最難降的妖魔是什么宴合? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮迹鹅,結果婚禮上卦洽,老公的妹妹穿的比我還像新娘。我一直安慰自己斜棚,他們只是感情好阀蒂,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弟蚀,像睡著了一般蚤霞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上义钉,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天昧绣,我揣著相機與錄音,去河邊找鬼捶闸。 笑死滞乙,一個胖子當著我的面吹牛奏纪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斩启,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼序调,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了兔簇?” 一聲冷哼從身側響起发绢,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垄琐,沒想到半個月后边酒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡狸窘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年墩朦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翻擒。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡氓涣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陋气,到底是詐尸還是另有隱情劳吠,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布巩趁,位于F島的核電站痒玩,受9級特大地震影響,放射性物質發(fā)生泄漏议慰。R本人自食惡果不足惜蠢古,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望别凹。 院中可真熱鬧便瑟,春花似錦、人聲如沸番川。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颁督。三九已至践啄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沉御,已是汗流浹背屿讽。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伐谈。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓烂完,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诵棵。 傳聞我的和親對象是個殘疾皇子抠蚣,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359