2014-10-09 69 views
1

我有一個整個AFS svn存儲庫的轉儲文件。我試圖傾倒過濾Hadoop項目出了大dump.Here的是我的命令:dumpfilter一個項目出svn回購

svndumpfilter include --drop-empty-revs --skip-missing-merge-sources /hadoop < svn-asf-public-r0\:1164363 > hadoop_dumpfile1 

然後我得到了這樣的標準輸出:

... 
Revision 614268 skipped. 
Revision 614269 skipped. 
Revision 614270 skipped. 
Revision 614271 skipped. 
Revision 614272 skipped. 
Revision 614273 skipped. 
Revision 614274 skipped. 
Revision 614275 committed as 614275. 
Revision 614276 committed as 614276. 
... 

但在這裏,問題來了:

Revision 614328 skipped. 
svndumpfilter: E200003: Invalid copy source path '/lucene/hadoop/site' 

我認爲這可能是回購中的舊移動/複製操作,因爲原始轉儲文件非常大。並且在svn文件結構樹中可能會有很多變化。我現在應該怎麼做?

+0

'--skip-missing-merge-sources' **必須**避免所有合併源錯誤並允許繼續過濾 – 2014-10-09 15:12:12

+0

但是,您必須從運行正確的命令開始,現在您的語法只是糟糕而醜陋。 'svndumpfilter include hadoop --drop-empty-revs --skip-missing-merge-sources --renumber-revs 2014-10-09 15:15:31

+0

我已經嘗試過--skip-missing-merge-sources之前,它沒有工作。 – Nemo 2014-10-09 15:57:55

回答

0

修訂614329影響這些路徑:

  • hadoop/core/site/
  • lucene/hadoop/site/

因此,您必須將/lucene/hadoop/site包含到您的svndumpfilter include命令行中。

閱讀SVNBook!看來您遇到的問題在SVNBook | Filtering repository history中描述:

此外,複製的路徑可能會給您帶來一些麻煩。 Subversion支持在存儲庫中複製 操作,其中通過複製 某些已存在的路徑來創建新路徑。有可能在您的存儲庫的生命週期的某個時間點,您可能已經從svndumpfilter所排除的某個位置複製了一個文件或目錄 到其包含的位置 。爲了使轉儲數據自給自足,svndumpfilter 需要仍顯示新路徑的添加(包括由副本創建的任何文件的 內容),並且不會將 添加作爲來自源的副本存在於您的已過濾 轉儲數據流中。但是因爲Subversion存儲庫轉儲格式 僅顯示每個修訂版本中已更改的內容,所以複製 源代碼的內容可能不可用。如果您懷疑存儲庫中存在此類排序的任何副本,則可能需要重新考慮 您的一組包含/排除路徑,也可能包括 作爲您的麻煩複制操作源的路徑。