最近上Github看見(jiàn)了大漠的DemoHouse項(xiàng)目,看到Issues說(shuō)準(zhǔn)備做一個(gè)首頁(yè),于是我的第一想法就是做一個(gè)md列表頁(yè)面,md文件可以很容易的生成一個(gè)html文件。剛剛做好腳本文件,可以生成list.md。隨后提了pr。同時(shí)看到 @jerexyz 使用gulp構(gòu)建工具做好了一個(gè)生成index.html的工具,我也就暫時(shí)放棄了繼續(xù)后面的工作,還好沒(méi)做,繼續(xù)做的話生成出來(lái)的也比較粗糙,還得再繼續(xù)美化修改。想象一下,如果這時(shí)我新收集了一個(gè)Demo,準(zhǔn)備提交版本庫(kù),我是不是還得先執(zhí)行一下命令 node index.js 然后再添加暫存區(qū),提交版本庫(kù),推遠(yuǎn)程。如何省略執(zhí)行命令行這一句呢?

git hook (鉤子)

說(shuō)到鉤子,不知道大家喜歡釣魚(yú)嗎?喜歡不喜歡應(yīng)該都知道魚(yú)鉤,不知道的再看一下,魚(yú)鉤長(zhǎng)這樣的。

這是有一期我愛(ài)發(fā)明里面介紹的,一個(gè)釣魚(yú)狂熱愛(ài)好者發(fā)明的釣魚(yú)神器,看節(jié)目似乎很有效。通常我們見(jiàn)到的魚(yú)鉤就只是上半部分,這里卻多了一個(gè)小鉤,其實(shí)他就是我們這里準(zhǔn)備學(xué)習(xí)的hook。

為了達(dá)到某種效果,我們添加的一個(gè)腳本,在正常流程執(zhí)行的時(shí)候觸發(fā)這個(gè)腳本(個(gè)人拙略,如有偏頗忘指出)。

git的鉤子存放在 .git/hooks 目錄下, git init 時(shí)會(huì)自動(dòng)生成一些示例腳本在該目錄下,腳本都是 .simple 后綴結(jié)尾,如果需要使用的時(shí)候,重命名取消后綴即可。

這里是希望在存入版本庫(kù)之前生成列表頁(yè),查詢文檔發(fā)現(xiàn) pre_commit 是在 鍵入提交信息前運(yùn)行

git add demo => pre_commit => git add list.md => git commit -m 'add new demo and update list.md'

pre_commit 是一個(gè)腳本文件,由于nodejs寫(xiě)好了一個(gè)腳本文件,于是添加了一個(gè)頭部,然后最后添加生成的list.md到暫存區(qū)間

git add demo => git commit -m 'add new demo and update list.md'

實(shí)際上我們的操作流程就變成如上描述的樣子。這個(gè)就是正常流程, git commit 命名回車后先執(zhí)行的是 pre_commit 腳本,再存入版本庫(kù)

自動(dòng)生成list.md的工作到這里就完成了,更多的鉤子文件這里暫時(shí)不繼續(xù)擴(kuò)展了。

又看到還有一個(gè)需求就是為每個(gè)demo添加一些其他信息,例如:分類/作者等信息。這樣 @jerexyz 的項(xiàng)目工具怎么修改實(shí)現(xiàn)一下呢,或者說(shuō)其他方案怎么實(shí)現(xiàn)呢?

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式