2017-01-10 53 views
5

我有一個feature分支和一個testing分支(用於初始迴歸)。我想爲我的testing分支機構提供測試環境的工作副本。但是,我需要通過腳本壓縮一些源代碼(不是二進制,只是優化)。我可以通過post-receive Git鉤子來制定這個腳本。如何正確使用CI腳本與Git掛鉤來壓縮源碼

我試圖設計我的bash腳本(CI),以便它相當健壯,並且希望避免導致Git衝突的自動化。我正在考慮讓主存儲庫(origin)和測試環境存儲庫(ci_test)簡單地允許CI提交。

我在考慮在推廣源時推送到ci_test/testing。 CI應該壓縮,添加,提交,從origin/testing獲取,必要時合併(取其全部iff衝突),然後推送至origin/testing

我上面的模型的問題是,當我試圖推送到ci_test/testing因爲它有一個工作副本(有道理,因爲他們可能不同步),Git抱怨。有沒有適當的(自動)方式來使用持續集成腳本與Git,以便他們仍然被追蹤?

回答

2

上面我的模型的問題是,當我嘗試推送到ci_test/testing因爲它有一個工作副本(有意義,因爲它們可能不同步),Git抱怨。

您可以:

  • 確保您ci_test是裸露的回購協議,以post-receive hook這將:

    • ​​
    • 觸發所有的操作
  • 或者,如果您是唯一推送到該ci_testing遠程回購的人,請將遠程Git配置爲接受推送到非裸回購。
    這是可能since Git 2.3+有:

    git config receive.denyCurrentBranch updateInstead 
    

而且with Git 2.4+,你可以設置遠程ci_testing與「push-to-checkout」掛鉤,這可以在服務器上安裝時,用戶按下定製究竟發生了什麼到檢出分支。

+0

[Push-to-checkout](https://git-scm.com/docs/githooks#_push_to_checkout)鉤看起來很有希望。我不知道那個鉤子存在。 我希望ci_test有一個工作副本的原因是因爲掛鉤會修改源,並且我想提交更改(我無法想象如果沒有工作副本就能夠做到這一點)。我還使用工作副本作爲用於讀取應用程序測試版本的目錄。 – BLaZuRE

+0

@BLaZuRE是的,就你而言,推送結帳似乎是一個不錯的選擇。 – VonC