2012-04-06 166 views
6

我想圍繞Git包裝頭部並且部署網站(或不包含)。我一直在谷歌搜索和閱讀,但無法找到我的具體情況或疑慮的答案。我仍然處於這樣做的計劃階段,但希望從一開始就找到它並找到適合我的工作流程。我會嘗試儘可能地解釋情況:從Git存儲庫部署PHP網站

我有一個遠程VPS,它在www.example.com上運行我的實時網站,並在dev.example.com上開發版本(它們駐留在/ var/www/example/htdocs /和/ var/www/example/subdomains/dev /)。

開發從/opt/git/example.git/中的裸倉庫運行。裸回購中有一個主發展部門。我和其他開發人員都在我們的本地機器上擁有該存儲庫的克隆。我們從開發分支拉出來並從那裏開始工作。我們的想法是,dev.example.com擁有開發分支的最新代碼,一旦經過適當測試,我們將合併到master,添加標籤並更新example.com(基本上,這個git flow)。

我在Git IRC頻道上找到的第一種方法是使用掛鉤來更新存儲庫,但這種感覺非常有限,有時也不需要,我想在推送後自己在服務器上運行一個命令,以更新開發環境。另一個命令(或shell腳本)將在開發合併後從主分支更新活動站點)。我也發現了卡皮斯特拉諾,但那一刻似乎有點過頭了。

在閱讀時,我發現很多人建議在遙控器上創建兩個克隆:一個用於活動站點,另一個用於開發站點,必要時拉動分支。然而,這也使版本控制文件可以通過網絡訪問,這是我不想要的。理想情況下,我想要一個沒有任何git文件或文件夾的「乾淨」副本。

我還發現使用git archive的方法,但是從我的裸倉庫運行git archive只允許我歸檔master分支。我使用/opt/git/example.git/中的命令git archive --format=tar HEAD | (cd /var/www/example/htdocs/ && tar xf -)執行此操作。

我覺得git archive方法使我最接近答案,但我受限於我缺乏Git知識。我可以改變命令使用分支而不是HEAD(當我嘗試使用origin/master而不是HEAD時,出現錯誤)?有沒有人可以指引我走向正確的方向?

回答

4

你可以使用任何tree-ish(任何分支,標籤,sha1哈希等)作爲git歸檔的參數。您不能使用origin/master,因爲您處於裸回購狀態,並且沒有源。您需要使用本地分支名稱,例如

git archive --format=tar develop 
+0

我希望我可以upvote這5次。這麼簡單...太簡單了。 – Bram 2012-04-06 15:03:17

+0

Hehehe謝謝:) – ralphtheninja 2012-04-06 15:04:19

+0

終於接受這個之前的最後一個問題:是否可以刪除.gitignore文件? – Bram 2012-04-06 15:05:08