2011-03-23 119 views
3

我們的團隊最近已遷移到git。使用Git更新生產服務器

我們有一些小的修改製作Web應用程序服務器

  • 具體的超熱修補程序不能在我們的測試環境重現這些錯誤代碼,這installaton
  • 一些調試語句

我認爲,我們不能提交那些在服務器回購。

當我們有svn update合併更改文件或不合並。現在

git stash; git pull; git stash pop 

確實爲我

的伎倆我怎麼能自動檢測這些情況下,當git stash pop會導致衝突

使得生產工作拷貝壞了?

我想他們會出現像be advised, pull cancelled (conflicts)

+2

可以在新分支中跟蹤生產服務器上的這些小更改嗎?我對任何未存儲在存儲庫中的重要代碼保持警惕,並且此設置感覺脆弱。 – sarnold 2011-03-23 08:36:49

+0

不,這些是「調試語句」,在這種情況下,我們需要另一個應用程序安裝,而不是分支 – jonny 2011-03-23 08:48:25

回答

5

我不想承擔在生產服務器上發生合併衝突的風險。這聽起來對我來說都是錯誤的。

從你的文章中,我可以推斷你有生產中的問題,你不能在測試/分期複製。爲了幫助檢測這些問題,您在應用程序中添加了其他儀器。這是一種常見的方法,儘管您應該嘗試從Q & A(通常它的長期利益來看,這是最值得期待的)。

我推斷的下一件事是您直接操縱生產服務器上的代碼。你永遠不應該這樣做。你已經在使用git,它可以爲你提供一個很好的靈活性來管理你的問題,還有更聰明的解決方案。 這裏就是我想要到:

  1. 從服務器獲取這些更改(創建一個補丁或東西)把這些變化到一個地方分支在你的開發回購
  2. 每當你改變你的主人頭頂上的本地分支。本地解決衝突。
  3. 由於您已經嘲笑歷史,因此您需要強制推入生產存儲庫,有關詳細信息,請參閱How do I push amended commit to the remote Git repository?

也可以辯論你是否不想「增加」你添加的額外日誌記錄,使它成爲你的非功能性需求的一部分。

+0

生產上的清潔工作樹是紀律問題,我沒有任何權力來強制執行 – jonny 2011-03-23 09:00:10

+0

'「productize」你添加的附加記錄:非常好的一點 – jonny 2011-06-06 15:17:36

2

我寧願發送郵件到解決手動

這些情況前:

  • 有Git倉庫和Web文件之間的完全分離:
  • 不直接在工作樹目錄中工作(存儲問題,以便有一個乾淨的工作樹拉運算離子)

這將是最好推到bare repo with a post-update hook,並在一個單獨的Git回購工作,你可以做你需要的拉動。


的說,我寧願嘗試解決在臨時黨支部的任何衝突(從git stash man page

git branch <branchname> [<stash>] 

創建並簽出一個名爲<branchname>從提交在啓動新的分支其中<stash>最初創建,將<stash>中記錄的更改應用到新的工作樹和索引。
如果成功,並且<stash>是形式[email protected]{<revision>}的參考,則會丟棄<stash>。如果沒有給出<stash>,則應用最新的一個。

如果您運行git存儲保存的分支發生了足夠多的變化,git存儲應用因衝突而失敗,這非常有用。由於在運行git存儲庫時,存儲器被應用於HEAD的提交之上,因此它將恢復原始存儲的狀態而不產生衝突。

衝突解決後,該分支可以合併回主。

+0

我們有我們的中心回購gitosis。我意識到生產上的清潔工作樹是紀律問題 – jonny 2011-03-23 08:54:04

+0

@jonny:剛剛添加了一種可能的方式來處理分支中的隱藏彈出步驟。 – VonC 2011-03-23 09:05:12