簡體   English   中英

使用SVNKit從SVN獲取已刪除文件的歷史記錄

[英]Get history of a Deleted File from SVN using SVNKit

我正在嘗試訪問已使用SVNKit刪除的文件的修訂歷史記錄。

以下是我為實現這一目標所做的工作。

SVNClientManager manager = SVNClientManager.newInstance(); 
SVNLogClient logClient = manager.getLogClient(); 
logClient.doLog(svnURL, new String[] { fileName }, SVNRevision.create(deletedRevision),
                                            SVNRevision.UNDEFINED, SVNRevision.UNDEFINED, false, false, true, -1, null,
                                            new ISVNLogEntryHandler() {
                                                public void handleLogEntry(SVNLogEntry logEntry) throws SVNException {
                                                    log.debug(" ==== " + logEntry.getChangedPaths() + " === "
                                                            + logEntry.getRevision());
                                            }
                                        });

在這里,deleteRevision =>刪除文件的SVN修訂版。

當執行此代碼時,我不斷收到以下異常:

org.tmatesoft.svn.core.SVNException: svn: '<FilePath>' path not found: 404 Not Found (https://<RepositoryURL>
        at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
        at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
        at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.logImpl(DAVRepository.java:976)
        at org.tmatesoft.svn.core.io.SVNRepository.log(SVNRepository.java:1034)
        at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:1024)
        at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:891)
        at com.blueoptima.connectors.scr.SVN.getWorkingFileList(SVN.java:711)
        ... 4 more

我在這里做錯什么了嗎? 還有其他方法可以使用SVNKit獲取已刪除文件的歷史記錄

盡管這個問題已經有一年多了的歷史了,但仍然想回答這個問題是否對別人有所幫助。

我沒有嘗試檢索已刪除文件的歷史記錄,但可以使用-檢索已刪除分支的歷史記錄。

SVNLogClient.doLog(SVNURL.parseURIEncoded(path), new String[] { "" }, pegRevision, SVNRevision.create(0),pegRevision, stopOnCopy, discoverChangedPaths, logsLimit, logHandler);

這與您進行的呼叫類似,但是您需要為pegRevisionstartRevisionendRevision提供適當的值。 使用UNDEFINED可能不會給出正確的結果,而是使用刪除文件的修訂版本作為pegRevision,將startRevision設置為0,它應該可以工作。

您應該在文件作為釘修訂存在的地方指定一個修訂。 顯然,它已刪除。 也許(我不確定在這里,只是嘗試)該文件應該同時存在於開始和結束版本中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM