2013-05-13 50 views
1

背景資料提高Git的工作流程和優化PHP [Magento的]

我們正在使用SVN到GIT變化,我們的工作主要是在Magento的商店和對每一個項目一個臨時服務器和生產服務器。

這個過程很簡單:首先在本地機器上開發代碼,並在每臺開發機器上安裝項目,然後致力於分期回購並由客戶端和QA進行測試,然後掌握它在何處進行生產並由QA進行最終測試。

我們使用codebase/github存儲庫,部署過程自動使用deployhq,部署從主機到生產由系統管理員使用deployhq完成。

GIT工作流程是在受到互聯網上建議的不同工作流程的影響後衍生出來的,並且使用http://nvie.com/posts/a-successful-git-branching-model/Proper Way To Use Git/GitHub - PHP System with Dev/Testing/Production servers以及其他一些塊,但也包括我認爲與此模型一致的命令。

GIT工作流

0]設置新的GIT項目局部

  • GIT中克隆[path_to_repo] -b [branch_name] [local_dir]
  • path_to_repo可以是遠程存儲庫或分支束( repo.bundle)

1]束進口的情況下設置遠程路徑

  • git的遠程設置網址起源[path_to_repo]
  • path_to_repo是遠程倉庫

2]創建基於分配任務的新特性分支。

  • git的結帳-b [branch_name] //創建新的分支並切換到
  • 混帳推起源[branch_name]

3]在當地的分支機構本地完成,所有更改推到遠程分支機構定期(批量分批,不能單獨更換) 如果有人想在同一個分支上工作,他需要從相同的遠程分支中取出數據,而不是從主數據中取出數據。

  • 日常
  • git的結帳[branch_name] //切換到分支
  • 混帳拉//拉遠程最新的變化(例如在早晨纔開始工作)
  • 做出改變文件
  • git add。或git添加[文件夾] //準備要提交的文件或文件/文件夾列表
  • git commit //提交更改到本地分支
  • git pull //在一天結束時預推同步成爲知道任何衝突
  • 混帳推//在一旦在遠程/本地分支機構的變化正在一天

4月底將更改推送到遠程分支和需要的要在臨時服務器審查本地分支將被合併到遠程升級分支中。

  • GIT中結帳分期//如果已經存在開關將其
  • GIT中合併[remote_branch_to_merge_to_master]
  • GIT中推

5],如果客戶確認遠程分支工作正常和準備部署到現場服務器,併入主服務器

  • 合併到主服務器
  • git的結帳[master_branch_name] //切換到主
  • GIT中拉原點/主
  • GIT中合併[remote_branch_name_to_merge_to_master] //合併到主
  • GIT中推

主到生產是通過進行由系統管理員手動部署。 Q]

Q]是否應該有另一個分支生產,這個分支生產將以主人爲基礎,只取得主人即將生活的變化,即總是最穩定的代碼或者是多餘的。

我們正在尋求減少步驟數量以及工作流程是否與GIT中的最佳實踐一致的建議,包括所提及的命令。

回答

1

一個做到這一點的方法:

主要有三個分支:主機(開發),分期和生產。 Staging和dev通過git post-receive hook和一些bash腳本自動部署,生產由技術主管手動運行部署腳本部署。

工作完成在主設備上,直到功能完成(除非功能非常複雜並徹底改變很多事情)。開發人員測試功能在開發網站上(構建腳本在每次推送後啓動),將功能發送給QA部門(如果有的話),QA人員完成後,編碼人員將工作發送給技術負責人的代碼審查,客戶端批准dev 。

一旦x天主程序升級合併,QA運行通過升級,客戶機第二次確認功能。

在升級中確認了所有問題後,升級在生產和生產分支中被合併生效。 P:所有三種環境都託管在不同的機器上,登臺和生產具有完全相同的配置,開發人員不必嚴格遵守每個活動服務器配置調整 - 因此,您可以爲所有開發站點安裝一臺機器。

重要P.P.S:爲了讓所有工作都在一個分支中,您需要使用一些問題跟蹤系統並在每個相關提交中指定一個問題編號。

P.P.P.S:使用pull --rebase而不是pull可以保持git歷史更清晰,更易於閱讀。