2011-04-29 65 views
4

我想我會把它扔到那裏,看看我能否得到一些可靠的建議。將一個沒有VCS的生產站點遷移到Git

我有一個相當大的代碼庫的生產網站,剛剛安裝了Git,與測試網站相同。而且我有一個本地盒子,基本上就是整合的關鍵。我們的團隊會推到當地的盒子,小侏儒會來,把所有東西都帶到我們不同的服務器 - 或者至少這是我實現Git最接近的。

我真的沒有絲毫線索從哪裏開始。我有一個很大,很挑剔的遺留代碼庫,我很害怕在一個愉快的日子裏碰到。 Git的目的是成爲一個大清理過程的起點,我只是不知道如何開始。

我想創建一個基於我的生產docroot(適用.gitignore的東西),然後克隆到測試和開發環境的裸機.git回購,然後個人克隆開發和開始工作,推回到dev,然後以某種方式神奇地告訴git在更改裸回購時更新docroot。

我打算在開發中安裝git-flow(無法讓它在我的生產服務器上運行),然後推送到生產環境。由於它們在一天結束時只是分支機構,因此我可以避免在產品/測試服務器上使用git-flow。

這似乎一切都很好,我只是不知道我是否應該推動測試/產品,或從開發拉動到測試/產品。也許只是生產docroot中的直接git init?創建一個.git目錄和git init到那個? Git init git giggidy giggigdy ...

深入瞭解。

編輯

這裏就是我終於實現了,希望別人會發現它很有用。

下載當前的生產代碼,開發服務器(LAMP) 設置的.gitignore文件,並運行目錄中的git 初始化和peformed初始導入/提交
在分期/生產服務器:
創建YOURNAME.git目錄,並創建裸存儲庫的git的init --bare
設置worktree爲/路徑/到/我/的public_html,裸露設置爲false,並設置receive.denycurrentbranch忽略
新增一行鉤/ - 接收後:git的結帳-f確保我的git用戶有寫權限的worktrees

回到開發服務器上:
git的遠程添加[分期|生產] SSH://[email protected]/path/to/my.git
混帳推[分期|生產]主

要更新我的生產和暫存場所,它的一個簡單混帳推[製作|分期],我不必大驚小怪從公共視圖隱藏.git目錄。

來源: http://www.deanoj.co.uk/programming/git/using-git-and-a-post-receive-hook-script-for-auto-deployment/
http://toroid.org/ams/git-website-howto

希望這可以幫助別人!

再次編輯
此外,在1.7.3.3或更高版本上效果最佳。我正在運行一個用於開發的虛擬ubuntu機箱,並遇到了一些通過Samba提交的問題。在與此戰鬥了幾個小時之後,請閱讀該問題已在1.7.3.3中修復。我在1.7.3.1。

回答

1

如果您對進入像Capistrano這樣較重的部署解決方案不感興趣,那麼您可以在裸倉庫中設置一個post-receive鉤子來檢查生產docroot中的最新變化。你可以爲開發和生產設置一個單獨的鉤子。這是一個pretty good guide這樣做。

+0

Capistrano只有紅寶石,不是嗎?道歉,應該指定這是一個PHP項目。現在開始瀏覽指南。乾杯! – James 2011-04-29 18:57:23

+0

真的有用的指南,不能相信我沒有偶然發現它。指南中的示例(爲了參數)以本地代碼存儲庫開始。這沒什麼大不了的,我現在可以把這個網站蜷縮起來,然後把它放在開發箱上。我想我唯一的問題是這樣的:當我推到website.git目錄和後接收掛鉤啓動時,它是否會簡單地覆蓋文件在docroot與檢出更改? – James 2011-04-29 19:07:34

+0

是的,我認爲這就是git checkout -f命令所負責的。無論如何,都會強行覆寫一切。 – 2011-04-29 20:15:53