2012-02-13 116 views
12

我想將我的SVN回購異地的一部分,失敗到一個AWS實例&我下面這個頁面(Repository Maintenance過濾流與「無效的複製源路徑...」錯誤

我採取的一個dump整個回購(Windows命令):

  • svnadmin dump c:\repo > all_repo

接下來是對其進行過濾,只包括我感興趣的(這被稱爲 「M1」)的項目。

  • type all_repo | svndumpfilter include M1 --drop-empty-revs > m1

我知道這是正確的,因爲我已經做了一些已經在其他項目。


在這個項目上,它打破了這篇文章標題中指出的錯誤。確切的寫法是:

過濾流:無效的複製源路徑「/個人/理查德/ M1_Config」

過程試圖寫入到不存在的管道。

錯誤引用的文件夾是我在我的個人文件夾下編寫並提交的配置實用程序,它根本不在root/m1 ...文件夾下。我不想將它包含在過濾的文件中,但不知道如何將它指示給svn命令。

  1. 如何正確過濾整個M1文件夾及其子項,同時完全排除個人/ Richard/M1_Config文件夾?
  2. 如何確保導出的文件是否包含正確的信息,以正確重新創建遠程SVN上的M1文件夾?

回答

14

在某點/Personal/Richard/M1_Config已被複制到M1路徑。錯誤消息是說它不能執行復制,因爲源已被過濾掉。檢查svndumpfilter抱怨的修訂版本。

即使您不希望它在最終導入中,您也必須包含/Personal/Richard/M1_Config路徑。您還需要包含/Personal/Richard/Personal路徑,因爲每個路徑都駐留在它的父路徑中。你的命令必須是:

type all_repo | svndumpfilter include M1 "/Personal" --drop-empty-revs > m1 

如果您有其他路徑,說不需要/Personal/James並希望將它們排除在外,那麼你可以運行第二個過濾流剝奪他們:

type m1 | svndumpfilter exclude "/Personal/James" --drop-empty-revs > m1_2 
+0

有沒有一種方法可以找出女巫零件必須包含的東西。我正在嘗試和錯誤的時刻。 – 2014-02-04 07:37:10

+0

您可以搜索變更集並查找影響感興趣路徑的「從路徑複製」。你可以通過轉儲文件進行文本搜索,或者使用svnlook來做到這一點。 – Craig 2014-02-05 12:16:11

16

我試過至少4個不同的應用程序做,只有果然奏效使用svndumpfilterIN

svnadmin dump c:\repo > all_repo 
svndumpfilter.py all_repo --repo=c:\repo --output-dump=m1 include M1 

這是我的full answer on linux

這裏是我的嘗試和沒有工作

+0

說真的,感謝這篇文章。花了很多時間後,這是唯一完美無瑕的工作。 – rwb 2014-04-16 07:14:27

+0

這個腳本完美工作... – michabbb 2014-06-16 23:52:58

+0

工作對我來說也很好。 – 2015-06-25 18:39:58

0

我遇到了同樣的問題。我們在存儲庫中有很多遠程移動和複製的路徑,並且真正有幫助的唯一工具是svndumpsanitizer單個文件C程序可以很容易地在cygwin或Linux上編譯,並且它像一個170 GB增量轉儲文件上的魅力一樣工作,約160,000提交。