Pre-push Mechanism

我在推 code 之前會先跑 lint 和 unit test,確保推 code 到 remote 上的每個 commit 都是符合團隊規範並且是正確的。不過這樣的流程若靠人為確認是很麻煩也困難的,最好的方法就是能成為一種機制,來自動化幫我們處理。

通常會有兩種作法:(1) pre-commit 或 (2) pre-push 或 (3) 混合使用。關於 pre-push 可參考這裡,本文想討論的是 pre-push 機制。

pre-push 機制是指在 push code 到 remote 前,利用 pre-push hook 跑 lint 和 unit test 等一些確認工作。這麼做的好處是確保推 code 到 remote 的 repository 前,已經跑過想做的確認工作,可改善既有的工作流程,避免推 code 之後才發現有問題。

也就是說,可以達到以下效果

選用 pre-commit vs pre-push

由於 pre-commit 跑太多次 lint & unit test 或是跑太久,導致干擾和打斷開發者的工作、或花費太多時間在這上面,因此適度地將某些工作分配至 pre-push 會是不錯的作法。

流程

流程如下圖所示。

Pre-push Mechanism

說明:


投影片:Pre-push Mechanism Slides

相關閱讀:優雅整合 Linter、Husky、Lint-Staged:寫扣看扣皆大歡喜的密技


pre-push pre-commit 團隊合作 team work best practice git GitHub 職涯