2012-12-20 61 views
2

可以過濾由svndamin dump生成的SVN轉儲,因此不會包含編碼的二進制數據,只是文本增量和數據?svnadmin僅轉儲文本,不含二進制文件

我想有一個現有的大型SVN倉庫轉儲,但只有代碼。我對存儲的二進制文件沒有興趣。但是,二進制文件會使轉儲文件不必要的大。我如何生成轉儲並排除二進制內容?

嘗試和失敗,早已:

  1. 這是不實際的處理svn log diff文件。它是一個大型和舊的存儲庫,僅在短時間內獲取差異會花費大量時間,並且經常卡住。
  2. 二進制文件分散各地,和一個已知的路徑下沒有存儲,所以我不能用svndumpfilter排除他們 - 除非有一些方法來使用此過濾器使用正則表達式,如*.jar

回答

2

svndumpfilter是任何的Subversion安裝

svndumpfilter exclude的一部分 - 篩選出節點與從轉儲流給定前綴。

從Subversion 1.7開始,svndumpfilter可以選擇性地將PATH_PREFIXs視爲顯式子字符串,而不是作爲文件模式。

$ svndumpfilter exclude --pattern "*.OLD" <dumpfile> filtered-dumpfile 
Excluding prefix patterns: 
    '/*.OLD' 
+0

這應該有幫助,我現在正在嘗試。謝謝! –

+0

你碰巧知道,如果過濾流接受「或圖案」,如「'的* .jar | * .pdf'」? –

+0

@LittleBobbyTables - 不,只有一種模式。但是你可以在單個命令中使用多個'exclude' –

1

我不知道股票工具要做到這一點。但是,如果你開始這個Perl模塊,它不應該是很難做到:在那裏(svndump_delpathfilter)SVN::Dumpfilter

一個示例腳本的可能是非常接近你想要什麼。我對這個模塊的使用經驗是,你可能需要修改一下它才能做到你想做的。現在

,我不認爲有任何的方式來告訴可靠地從文本文件的二進制,因爲Subversion(在最低水平)並不真正關心。快速掃描我的存儲庫顯示,svn:mime-type屬性並不總是設置的,我看不到其他任何指示性字段。所以你必須通過名稱或(以某種方式)檢查文件的內容(但我從來沒有完成後者)。

相關問題