我正在開發一個主要具有兩個分支的軟件,主人和功能。問題是我需要同時處理這兩個問題。維護不同分支的不同版本
我通常所做的是激發功能分支的測試套件迴歸,然後繼續在主分支上進行開發。因爲直到現在我們使用CVS,這很容易,不同的分支在不同的文件夾中,因此有不同的最終構建(最終的exe)。
現在我們已經切換到GIT,因爲現在兩個分支都駐留在同一個地方(兩個構建都會在相同的地方生成,並且名稱相同!),我如何在主分支上繼續開發以便我的特性構建保持完好,迴歸不會混亂。
我正在開發一個主要具有兩個分支的軟件,主人和功能。問題是我需要同時處理這兩個問題。維護不同分支的不同版本
我通常所做的是激發功能分支的測試套件迴歸,然後繼續在主分支上進行開發。因爲直到現在我們使用CVS,這很容易,不同的分支在不同的文件夾中,因此有不同的最終構建(最終的exe)。
現在我們已經切換到GIT,因爲現在兩個分支都駐留在同一個地方(兩個構建都會在相同的地方生成,並且名稱相同!),我如何在主分支上繼續開發以便我的特性構建保持完好,迴歸不會混亂。
cd /your/git/repository
export GIT_WORK_TREE=/build/directory
git checkout -f $BRANCH_TO_DEPLOY
cd /build/directory
<run build/test/other>
通過分離構建目錄,可以爲每個分支運行不同的構建。
我實際上是將它用於我所從事的一個項目,我從兩個不同的分支部署到生產和測試環境。這是一個很好的系統,但要注意一件事情:根據您的設置,您可能需要首先清空要部署的構建目錄,因爲此檢查方法可能會有其他問題。
看到這個約git deployment strategies瞭解更多詳情
什麼是真正發生在這裏的鏈接?
我們只是檢查一個分支到一個完全不同的目錄,也就是說我們將庫與結帳分開。所以我們只能得到$BRANCH_TO_DEPLOY
上次提交後對應於回購狀態的文件。我們可以在一個文件夾中爲主分支執行此操作,而在另一個文件夾中執行此功能分支,並對這兩個文件夾執行不同操作。我上面示例中的最後一步是您要運行測試套件的位置。
我建議你只使用CVS的久經考驗的路由 - 只需將你的git倉庫克隆兩次到不同的目錄。然後,您可以同時在兩個分支上工作並分別構建它們。
一般而言,當在緊密相關或不重要的分支之間切換時,單個克隆效果最佳。如果您在實質上不同的分支之間切換,那麼切換文件和重建所花費的時間開始成爲負擔。而且你很可能想要在分支機構上並行工作,而且這樣做也不容易。
我現在不能,CVS模塊只能讀取,而GIT是唯一的選擇。 –
我不是說使用CVS,我說的是使用像CVS一樣的Git。在CVS中,您會將每個分支的快照簽出到單獨的路徑中。在Git中,爲單獨路徑上的每個分支創建一個克隆。換句話說,在一個克隆中的一個分支上工作,而在另一個克隆中工作在另一個分支上。要同步它們,只需從中央回購站點推入並拉出即可。沒必要共享相同的克隆,並且如果兩個分支需要同時檢出,那麼這就是使用多個克隆的一個很好的理由。 – locka
感謝您的快速回答!我仍然不明白每個分支有多獨立構建。你能詳細說一下嗎? –
我會添加一些細節。 –