【问题标题】:Get history of a Deleted File from SVN using SVNKit使用 SVNKit 从 SVN 获取已删除文件的历史记录
【发布时间】:2012-03-08 12:26:03
【问题描述】:

我正在尝试访问已使用 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());
                                            }
                                        });

这里,deletedRevision => 删除 File 的 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 获取已删除文件的历史记录

【问题讨论】:

    标签: java svn svnkit


    【解决方案1】:

    虽然这个问题已经问了一年多,但如果可以得到其他人的帮助,仍然想回答它。

    我没有尝试检索已删除文件的历史记录,但我可以使用 - 检索已删除分支的历史记录 -

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

    这与您正在进行的调用类似,但您需要为pegRevisionstartRevisionendRevision 提供正确的值。使用UNDEFINED 可能不会给出正确的结果,而是使用删除文件的版本作为 pegRevision 和 startRevision 作为 0,它应该可以工作。

    【讨论】:

      【解决方案2】:

      您应该将文件所在的修订版指定为挂钩修订版。显然是删除了Revision-1。也许(我不确定,只是试试)该文件应该存在于开始和结束修订中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-10
        • 2010-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-05
        • 2013-08-02
        相关资源
        最近更新 更多