2017-01-05 135 views
0

我正在潛入Git的世界,我的第一項任務是自動化我們的構建過程。我使用的是Bash,因爲這是我熟悉的,它似乎是我需要的。用Bash腳本克隆Git回購

在構建我的代碼之前,我需要將最新版本的repo克隆到我的PC。

我似乎有一個捕獲22.我想從Bash腳本克隆回購,這將是我試圖克隆回購的一部分。

我希望我的構建/ bash腳本可以在源代碼控制下與其他任何東西一起...但我還想要一個命令操作。

其他人如何解決這個問題?我最熟悉ClearCase,因此Git正在採取一些習慣。

+3

不要將部署腳本與其部署的代碼存儲在相同的回購站中,這是沒有意義的。 – meagar

+0

這是一個捕獲22,因爲克隆存儲庫是一個動作,根據定義,* external *到存儲庫。至少,存儲庫的克隆腳本必須獨立於構建系統的其餘部分進行部署。理想情況下,整個構建系統位於存儲庫之外;它將*作爲*輸入*包含要構建的軟件的存儲庫。 – chepner

+0

所以我使用的是一個持續集成服務(在我的例子中是travis-ci),在github上傾聽我的主分支。推動觸發器構建將repo克隆到travis環境中 - 從那裏我可以訪問我的部署腳本,如果構建通過,則會觸發部署腳本。 – Lix

回答

0

Git clone與ClearCase mkview類似,它創建了一個新的工作文件夾,作爲與存儲庫中的文件進行交互的主要方式。如果你正在爲ClearCase編寫這個腳本,你真的會開始創建一個新的ClearCase視圖嗎?如果你這樣做了,你會有同樣的catch-22情況。

常用的方法是假定clone操作是作爲此構建系統的一次性設置的一部分完成的,並且該腳本已經可以訪問工作文件夾。你更感興趣的Git命令是clean,checkout,fetch,pullreset --hard。 Git命令之間有重疊,所以你不需要所有這些。顯然,Git命令的選擇以及你要調用它們的選項取決於你想要腳本執行的操作。

完成這樣的操作後,將腳本保存在存儲庫中是沒有問題的,除非您將版本控制與您正在構建的代碼放在同一分支中。這並不一定是壞的,但與ClearCase中(通常)會發生的不同。

+0

基本上我可以做一個混帳'結賬branch_name'或'git的結帳master'的同步我的本地回購與最新變化在每個分支上? @gatkin – user7379734

+0

本質上。我不會寫你的腳本,但'git fetch; git checkout master; git reset --hard origin/master'應該讓你開始。 – gatkin