2012-08-24 216 views
3

我正在將svn repo轉換爲git repo,並且我們有多年來不應該檢查的二進制文件,以及圖像和其他文件,我真的不希望這些文件出現在git倉庫中佔用空間。git svn忽略路徑使用忽略文件

我與混帳SVN發揮各地的回購轉換,並利用其-ignorepaths財產,但我希望能夠養活一個列表到忽略路徑,而不是爲每個模式指定ignorepaths /目錄我想排除,如果我可以在轉換過程中使用svnignore/gitignore文件來取代這個更好的垃圾。

有沒有辦法做到這一點,或者我只需要點擊子彈並單獨指定每個模式/路徑?

編輯:更新的問題,要以更清楚我是問

+0

不* .DLL工作之前? –

+0

它可能不會,但我真的只是使用作爲一個例子,我想有擴展/路徑的整個堆容易 –

+0

我想有沒有簡單的方法了這個 - 你必須列出要忽略了什麼 - 要麼但創意正則表達式,或只是將它們全部列出 –

回答

2

Subversion是一個有點複雜那裏,如果你已經習慣了的Git。 svn:ignore是以每個文件夾爲基礎工作的屬性。在特定的文件夾中,您只能忽略特定文件或直接子文件夾。 您可以將文件傳遞給設置忽略目錄的屬性,你也可以在.gitignore文件以傳遞給它用命令:

svn propset svn:ignore -F .gitignore DIRECTORY 

但對於上面提到的原因,真正實用的部分中的.gitignore像*/build在Subversion中不會有效果。

你可以做的唯一的事情就是使用--depth參數svn propset例如,如果你通過--depth immediates,它將設置DIRECTORY和每個子文件夾的屬性。還有一些方法可以指定深度,或者只是使其深入 - 我認爲TAB完成可以在那裏工作,或者查看幫助。

還有一個很大的缺點,但:每次你添加一個包含你想忽略文件的文件夾,你將不得不再次運行svn propset命令。

+0

不幸的是我不認爲這就是我要找的,我想一個svn回購轉換爲混帳回購協議,並採取了一些在前進的道路上增加了污物的彷彿什麼都沒有發生 –

0

如果你要轉換的svn:忽略到的.gitignore或反之亦然,你可以使用SubGit而不是混帳SVN,它會自動執行這種轉換。在最簡單的配置轉換命令如下:

$ subgit install path/to/svn/repository 
+0

那不是真的是我要找的,我想創建使用gitignore過濾掉文件的Git倉庫而創建回購 –

+0

gitignore沒有任何關係,你的問題是誤導位。要過濾的文件,你可以使用「svnadmin的轉儲」 +過濾流/ svndumptool +「的svnadmin負荷」或由我一個工具--- svnkitfilter(你可以修補它來過濾任何你想要的)---過濾在SVN邊的東西,「 git filter-branch「來過濾Git端或--ignore-paths選項git-svn –

+0

是的,我正在尋找一種方法來爲git-svn提供一個ignore-path選項列表,而不是單獨列出每個選項基本上可以達到同樣的效果 –

0

我可以證實,git svn採取的從Subversion獲取的情況下,中.gitignore內容的任何通知,不管.gitignore是否已經檢查到回購。

解決辦法是,在你的問題說,就是用--ignore-pathsgit svn clone。完成此操作後,它將被添加到.git/config文件中,因此您不必在每次獲取內容時都指定它。

將現有.gitignore文件轉換成一個Perl的正則表達式與--ignore-paths使用並不複雜,因爲既然你可以方面共同它看起來。

例如:

/[Dd]ebug/|^rootfile.txt$|\.bak$ 

排除debug文件夾路徑中的任何地方,具體的文件rootfile.txt在回購協議的根源,以及所有*.bak文件。

提示:

  • 以正斜槓結束將排除命名的文件夾的內容,但沒有文件夾本身
  • ^表達式從根別倉庫和路徑的根相匹配牛逼開始以斜線
  • 如果需要的話,你可以使用lookaround expressions in the regexes,如排除所有Bin文件夾除非它們是由一些特定的目錄