2012-10-12 42 views
4

我使用msysgit git在windows上運行中央svn存儲庫。我使用git作爲 我希望它擁有令人敬畏的小本地分支機構,並且可以互相重組。msysgit git-am不能應用它自己的git格式補丁序列

我還需要從中央回購經常更新,所以使用單獨的SVN/Git是不是一種選擇。

問題是 - git svn --help(手冊頁)說,這是不使用git merge分支(其設置爲從SVN的幹線跟蹤)從地方分支機構是一個好主意,因爲這會毀了黨和git svn dcommit將不再工作。

我知道這是不完全正確,你可以使用git merge如果從 分支,它被正確地重建基礎上之前合併的合併,但我想使它更安全,實際使用git format-patchgit am。我們正在使用代碼審查,所以我正在修補補丁。我也知道git cherry-pick,但我只想git am /reviewed/patches/dir/*,而實際上並沒有回想這些補丁相應的提交(沒有讀補丁,就是這樣)。

那麼,什麼是錯git svngit am?這很簡單 - git am幾個非常辛苦點做CRLFLF轉換爲提供補丁(git-mailsplit是這樣做的,要準確),如果不是墊底。 git format-patch也正在生成適當的(LF結束)補丁。

由於我的回購主要是CRLF(它應該保持如此),由於錯誤的EOL,補丁明顯失效。將差異轉換爲CRLF並以某種方式破解git am以防止轉換也不起作用。如果任何文件被刪除或刪除,它將失敗 - git apply會抱怨預期的/ dev/null(但他得到了/dev/null^M)。

如果我將它與git am --ignore-space-change --ignore-whitespace一起使用,它將 直接將LF結尾提交給索引,這也很奇怪。我不知道它是否會保留在svn(通過git svn dcommit)並檢查出來,我不想嘗試。

當然,它仍然可以嘗試圍繞補丁,只轉換實際的diff黑客攻擊,但這是簡單的任務太多的黑客。

所以,我不知道,真的沒有產生補丁,並將其應用到同一回購在同一系統上建立的方法是什麼?它只是覺得奇怪,msysgit不能應用它自己的補丁。

+0

也有類似的問題,前一段時間,並使用'git am的--keep-cr' IIRC解決它? – eckes

回答

3

git的格式補丁 - 忽略空間變化 - 忽略空格

混帳上午--keep-CR - 忽略空格

這幫助了我。如果你閱讀這個,你可以得到更好的理解。