2010-06-23 41 views
5

我正在使用Export()成員函數來獲取正在工作的特定修訂版的文件,但由於某種原因,在其他情況下並非如此。對於所有修改的路徑,它似乎正在工作,但是在該修訂中刪除了並且有時添加了文件,我得到了異常,指出在使用的URL上沒有文件。當我在這些路徑上使用TurtoiseSVNs「Copy Revision to ...」時,它工作正常,我只是想知道如果我缺少SharpSVN的某些內容,我想要修改所有修改後的文件的完整版本。繼承人我的代碼的一般想法:爲什麼SharpSVN SvnClient.Export(...)不總是找到應該在那裏的文件?

if (logentry.ChangedPaths != null) 
{ 
    foreach (SvnChangeItem svnChangeItem in logentry.ChangedPaths) 
    { 
     SvnExportArgs ex = new SvnExportArgs(); 
     ex.Revision = revisionNum; 
     client.Export(SvnTarget.FromUri(new Uri(pathInsideRepo)), exportFile, ex); 
    } 
} 

任何幫助或建議,將不勝感激,謝謝。

回答

2

我發現使用SvnUriTarget而不是使用SvnExportArgs的uri,我可以獲得正確的信息。不太確定他們爲什麼不同,但它的工作原理。

所以不是我上面的出口用:

client.Export(new SvnUriTarget(new Uri(pathInsideRepo), revisionNumber), exportFile, ex); 

我找到的答案是在link text

2

命令行客戶端具有相同的行爲。發生什麼事是指向文件的URL可以來去去去。這意味着指向現在被刪除的文件的網址無效,除非您指定要使用較舊的網址。這被稱爲peg修訂。

在svnbook上閱讀peg revisions

相關問題