2012-11-21 32 views
2

我讀過關於@ nvie的Git branching modelgitflow,我認爲這是一個很好的模型,可用於我目前正在開發的項目(Web應用程序)。在@ nvie的Git分支模型中開發和測試分支?

我是該項目的首席開發人員,並且在本地環境(類似於MAMP)上開發。每當我向客戶展示一些東西時,我都會將我的工作提交給一箇中央的Git主機。從那裏我將它部署到連接到互聯網的服務器。然後我的客戶可以看到更改。

第二個開發者剛剛開始研究該項目。他一次開發單一功能,並在準備好時將其推送到中央Git主機。我在部署之前審查他的工作。

當前所有提交均在master分支中完成,並部署到單個託管環境。在未來,我希望有一個生產環境(用於實際使用),測試環境(在應用程序發佈前測試新版本的應用程序)和開發環境(我可以展示已完成的功能或仍在進行中)。我認爲生產環境將從master開始部署,而開發環境將從develop部署。

我的問題如下:

  1. 我經常工作在多個任務在同一時間。當功能的一部分準備就緒後,我有時想在繼續使用該功能之前將其展示給我的客戶。不過,就我的理解而言,一個功能(分支)在完成並計劃發佈時將僅合併到develop。我如何向客戶(在開發環境中)顯示正在進行(或尚未計劃發佈)的功能?

  2. 我應該從哪個分支部署到測試環境?我應該手動選擇那一刻的發佈分支,還是會有專門的測試分支?

回答

3

這裏是我拿到這個:

  1. 可以部署要顯示在開發環境的特性分支。請記住,在客戶端看到新功能後部署開發分支。

  2. 對於您使用發佈分支的測試環境。測試期結束後,您已經發布了您的應用程序,那麼您需要將主分支部署到測試環境,直到下一個發佈計劃。

免責聲明:我gitflow的開發商(AVH版)
你需要記住的是,原來的gitflow軟件不會刪除遠程功能,並釋放分支。所以,當你完成一個功能或釋放原始的gitflow時,你需要手動刪除遠程分支。在git-flow (AVH Edition)該軟件負責照顧它。

+0

Bedankt(謝謝)您的答案!在託管環境中(特徵)分支之間切換的問題是我沒有SSH訪問權限。我使用[Deploy](http://www.deployhq.com)通過FTP執行部署,但我不確定是否可以(輕鬆)在分支之間切換。正因爲如此,我希望有一種解決方案,不需要在多個分支之間切換。 – Jonathan

+0

我只是[分](https://github.com/petervanderdoes/git-ftp)在Github上的工具git-ftp,並做了一些改動,使其與git流很好地工作。該工具通過FTP部署,但只上傳提交之間的差異。 –

3

功能分支可以在任何時候用1個命令(git checkout)切換到。有時(在rails中,開發模式中我保持應用程序服務器正常運行,並且無需重新啓動服務器即可切換代碼!)。無論我在哪個分支,我仍處於「發展」模式。
因此切換到你想要的分支並進行演示。然後切換回主或任何你想要的分支。
最初,我在一些組織中工作都很熟練,但現在我完成了我所有的工作 - 特徵,雜務或分支中的錯誤。通常我會使用來自跟蹤系統(本例中爲Pivotal Tracker)的ID標記分支名稱和/或提交文本。
訣竅是保持最新的分支與最新的主和git merge master(當在'topic'分支中)頻繁的git fetch時。

對於其他環境,我配置了遙控器,例如, mycoolapp階段,我分別向他們推送代碼。我有6個不同的遙控器1個應用程序,其中4個用於測試。

對於測試,測試人員可以在開發環境中下拉更改並在本地工作(適用於程序員和QA測試人員),也可以使用測試或暫存區域,將代碼推送爲遠程。

總的來說,你在分支機構工作,然後通過主人推動東西。查看更多信息我的答案在git branch, fork, fetch, merge, rebase and clone, what are the differences?

+0

你是說你有爲每個託管環境配置的遠程分支?聽起來不錯。在這種情況下,我可以在生產環境中使用'master'分支,在測試環境中使用'release'分支(包含最新發布的版本)和正在構建的功能的'test'分支。你認爲這是一個好的(或可接受的)設置? – Jonathan

+0

@Jonathan你是否按照上面的建議去執行你的評論?因爲這個原因,任何運行良好或沒有按計劃運行的東西?我打算實施一個類似的模型來繼續部署,但是我找不到任何關於討論利弊的模型。 – Hassan

+1

@哈桑我還沒有得到適當的工作流程。我經常只是在'develop'分支中工作,並將其推送到測試環境(針對客戶端)。對於更大的功能,我使用功能分支,在這種情況下我手動推送。這並不完美,但考慮到我們團隊的規模(仍然是我自己和另外一個人),這是可行的。 – Jonathan