2011-12-22 53 views
4

我從svndumpfilter得到奇怪的結果 - 我需要抹掉我們的回購中的2個特定文件的24個實例,分散在許多分支之間。我按照如下所述運行命令:svndumpfilter不排除路徑的問題

例如,

type dumpfile | svndumpfilter exclude foo1/bar.dat foo2/bar.dat > filtered_dumpfile 

然而,似乎過濾的轉儲文件不刪除所有節點的預期,但只有移除2.我已經通過使用兩個轉儲文件svndumptool diff和重建回購排除的文件後,證實了這一點仍然存在。

我敢肯定,我沒有錯過任何這些文件的實例,因爲我用svnlook樹來查找回購庫中的所有路徑。此外,我已確認在命令和轉儲文件中前導斜槓是一致的。

任何人有任何想法?

+0

我有同樣的問題。按照http://svnbook.red-bean.com/en/1.7/svn.ref.svndumpfilter.commands.c.exclude.html中的說明,這應該是從我的回購中刪除四個文件夾,但它們仍然存在。我認爲這可能是一個引用問題,因爲有些文件名有空格,我也檢查了引導斜槓。 – Mnebuerquo 2014-05-29 02:14:45

+0

如果有幫助,您可以接受和/或提出答案。謝謝! – bahrep 2014-08-28 13:54:00

回答

0

你可以嘗試做如下,也許這將有助於:

type dumpfile | svndumpfilter exclude foo1/bar.dat | svndumpfilter exclude foo2/bar.dat > filtered_dumpfile 

或者這樣說:

svndumpfilter exclude `cat filterlist.txt` <old.dump> new.dump 
2

Apache Subversion FAQ entry這是關係到這個問題最近已經用一種新的方法更新它允許您過濾資料庫歷史記錄。與svndumpfilter方法相比,複雜的存儲庫歷史記錄過濾可能會更方便一些。

您可以配置path-based authorization rules否認讀取到需要從倉庫歷史過濾掉任何路徑訪問後svnsync工具複製存儲庫。

svndumpfilter不同,svnsync會自動將具有不可讀源路徑的複製操作轉換爲正常添加,如果需要過濾涉及複製操作的歷史記錄,這非常有用。

0

您可以在文件中添加的所有前綴,並使用--targets FILE選項,而不是單獨排除|包括

0

我的文件,我需要抹殺人在歷史上最後一個簽入。所以我能夠使用svnadmin轉儲來獲得轉折之前所有轉速的轉儲。

這是類似於在此頁上描述:http://robmayhew.com/delete-parts-of-subversion-history/

我需要在轉速8195擺脫錯誤簽入的,所以我跑是這樣的:

svnadmin dump /path/to/current/repo -r0:8194 > svn.dump 
svnadmin create /path/to/new/repo 
svnadmin load /path/to/new/repo < svn.dump 

這個工作,除了我檢出的工作副本仍然有來自8195的信息。這會在嘗試更新時導致錯誤,因爲我的工作副本認爲它在服務器中不存在。

我不得不做一個微小的檢查和檢查一個微不足道的變化,以獲取版本庫備份到8195,然後我可以清理,然後更新我的工作副本刪除受影響的壞簽入文件。這工作在Linux中使用svn。

一位同事在windows中使用svn,對於這個存儲庫修復,Tortoise svn一直非常困難。顯然,它保留了自己的最新版本的內部緩存,當它更新工作副本時,它從緩存中恢復「壞」修訂文件。我想我將不得不再次檢查一切,並建立一個新的工作副本,以使其正確。