2012-01-24 43 views
5

我正在使用git svn將來自本地git存儲庫的更改合併到SVN服務器。但是,當我發出git svn dcommit時,它實際上會提交我的源代碼樹中的任何.gitignore文件。這甚至在我本地簽出SVN倉庫(使用SVN)後,設置svn:ignore屬性(遞歸地列出.gitignore作爲要忽略的文件之一),然後將該屬性直接提交給SVN。是否有可能將.gitignore文件保留在SVN之外?

這是預期的行爲?一個錯誤?是否有任何人知道將SVG中的.gitignore保留下來?

我剛剛知道我團隊中的一個非git用戶會看到這些文件並開始刪除它們,然後下一次我去rebase/dcommit時,很多不需要的文件將在SVN中結束。

回答

8

您可以使用Git的特定於repo的「排除」文件,而不是使用.gitignore文件。 「排除」文件駐留在$GIT_DIR/info/exclude(其中$GIT_DIR是Git存儲庫目錄,通常爲.git)。該文件的格式與.gitignore文件的格式完全相同。區別在於這是一個特定於存儲庫的文件 - 它只會存在於您的存儲庫中。它不會傳播到任何其他存儲庫(例如,通過git clonegit svn dcommit)。

無法從SVN回購中忽略.gitignore文件,但將它們保留在Git中。任何嘗試這樣做都會導致您的本地提交與git-svn從SVN服務器檢索到的提交不匹配。換句話說,您的本地存儲庫的歷史記錄與SVN的歷史記錄不兼容;他們將永遠失去同步。

+0

有關回購忽略的好消息,以及我不是唯一一個無法將那些煩人的.gitignore文件留在SVN中的人! – ThaDon

+0

看來現在這個文件被稱爲'$ GIT_DIR/info/exclude'沒有複數形式。 –

+0

@JannikJochem我認爲這只是我的一個錯字。據我所知,它一直被命名爲「排除」,而不是「排除」。謝謝你指出! :) –

相關問題