利用git 的鉤子攔截有問(wèn)題的代碼

利用git 的鉤子攔截有問(wèn)題的代碼
通過(guò)git 提供的鉤子功能,保證有問(wèn)題的代碼絕對(duì)不會(huì)被提交

Git 提供多種鉤子橘荠,在項(xiàng)目目錄的.git/hooks 目錄下面,名稱格式一般是pre-xxx。一個(gè)正常的git 的hooks 下面有多個(gè)示例文件彰亥,名稱格式為pre-xxx.sample。

在這里我們需要的是pre-commit衰齐。

修改他的內(nèi)容為./gradlew assembleDebug

chmod 777 pre-commit

然后修改文件屬性任斋。由于mac 的安全機(jī)制,我們的shell 腳本不會(huì)被執(zhí)行耻涛,需要去除相應(yīng)的屬性废酷。
命令為
xattr -c pre-commit

然后提交代碼測(cè)試吧

改進(jìn):
每次構(gòu)建需要花費(fèi)很多的時(shí)間,可選擇的方案有:
通過(guò)gradle 構(gòu)建時(shí)保存時(shí)間抹缕,如果當(dāng)前修改的文件的時(shí)間大于gradlew 時(shí)間的話澈蟆,需要重新來(lái)一次構(gòu)建
如果當(dāng)前修改文件的 時(shí)間小于gradle 上次的構(gòu)建時(shí)間,不需要重新進(jìn)行構(gòu)建

# coding=utf-8
import os
import sys
import time

from git import Repo

path = "."
if len(sys.argv) > 1:
    path = sys.argv[1]
print(path)
last_time = 0
repo = Repo(path)
staged = repo.index.diff(None)
for s in staged:
    print(s.a_path)
    mTime = os.stat(os.path.join(path, s.a_path)).st_mtime
    if mTime > last_time:
        last_time = mTime
# headCommit = repo.head.commit
# print(headCommit)
# tree = headCommit.tree

# for t in tree:  # intuitive iteration of tree members
#     print(t.type)
#     if t.type == "tree":
#         if len(t.blobs) > 0:
#             mTime = os.stat(t.blobs[0].abspath).st_mtime
#     else:
#         mTime = os.stat(t.abspath).st_mtime
#     print(type(mTime))
#     if mTime > last_time:
#         last_time = mTime
print(last_time)
if last_time == 0:
    exit(0)
file_modify_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(last_time))
print("修改時(shí)間是: {0}".format(file_modify_time))
gradle_build_time_file = os.path.join(path, "build_gradle_time")
if not os.path.exists(gradle_build_time_file):
    print("沒(méi)有時(shí)間文件")
    exit(1)
with open(gradle_build_time_file) as file_obj:
    content = file_obj.read()
    if int(content) > last_time:
        print("無(wú)需重新構(gòu)建")
        exit(0)
    else:
        print("需要重新構(gòu)建")
        exit(1)
task saveTime() {
    try(FileWriter writer = new FileWriter(new File(rootDir,"build_gradle_time"))) {
        writer.write((System.currentTimeMillis()/1000).toInteger().toString())
    }
}

preBuild.dependsOn(saveTime)
#!/bin/sh
python main.py
echo $?
if (($? == 0));then
 exit 0
fi

./gradlew assembleDebug
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卓研,一起剝皮案震驚了整個(gè)濱河市丰介,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鉴分,老刑警劉巖哮幢,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異志珍,居然都是意外死亡橙垢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門伦糯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)柜某,“玉大人,你說(shuō)我怎么就攤上這事敛纲∥够鳎” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵淤翔,是天一觀的道長(zhǎng)翰绊。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么监嗜? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任谐檀,我火速辦了婚禮,結(jié)果婚禮上裁奇,老公的妹妹穿的比我還像新娘桐猬。我一直安慰自己,他們只是感情好刽肠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布溃肪。 她就那樣靜靜地躺著,像睡著了一般音五。 火紅的嫁衣襯著肌膚如雪惫撰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天放仗,我揣著相機(jī)與錄音润绎,去河邊找鬼撬碟。 笑死诞挨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呢蛤。 我是一名探鬼主播惶傻,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼其障!你這毒婦竟也來(lái)了银室?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤励翼,失蹤者是張志新(化名)和其女友劉穎蜈敢,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汽抚,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抓狭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了造烁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片否过。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惭蟋,靈堂內(nèi)的尸體忽然破棺而出苗桂,到底是詐尸還是另有隱情,我是刑警寧澤告组,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布煤伟,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏持偏。R本人自食惡果不足惜驼卖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸿秆。 院中可真熱鬧酌畜,春花似錦、人聲如沸卿叽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)考婴。三九已至贩虾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沥阱,已是汗流浹背缎罢。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留考杉,地道東北人策精。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像崇棠,于是被迫代替她去往敵國(guó)和親咽袜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348