SVNKIT getCommitMessage()获取提交信息为空

今天使用java的svnkit库的时候,想要获取提交代码时的备注信息,却发现为空值,原始的代码为这样:

	List<SVNDirEntry> es = new ArrayList<>();
		clientManager.getLogClient().doList(SVNURL.parseURIEncoded(url), SVNRevision.HEAD, SVNRevision.HEAD,
                true, false, new ISVNDirEntryHandler() {
            @Override
            public void handleDirEntry(SVNDirEntry e) throws SVNException {
                es.add(e);
            }
        });

通常获取SVN中的条目都是使用logClient也就是日志客户端,然后列出子目录下的每个条目,一个SVNDirEntry表示一个条目,刚开始看到e.getCommitMessage()的时候欣喜若狂,然后试了很多次,返回值为null. 没办法,java开发的宗旨,work with doc,还是认真看下DOC。
public String getCommitMessage()
Returns the commit log message for the revision of this entry.
This is guaranteed to be non-null only for the target entry returned by the SVNRepository.getDir(String, long, boolean, java.util.Collection) method.
doc的意思说,getCommitMessage方法只能保证SVNRepository.getDir(String, long, boolean, java.util.Collection) 返回的SVNDirEntry 备注信息不为空, 于是将代码改成下面的方式:

		List<SVNDirEntry> es = new ArrayList<>();
        SVNRepository svnRepository = clientManager.createRepository(
                SVNURL.parseURIEncoded(url), true);
        svnRepository.getDir("", SVNRevision.HEAD.getNumber(), true, es);
        es.sort(Comparator.comparing((SVNDirEntry e)->e.getKind().toString()));
        return es;

终于在页面显示出了备注信息的值,但是在提交SVN的时候,必须先写上备注才行:

clientManager.getCommitClient().doImport(localFile, SVNURL.parseURIEncoded(url),
                "此处是备注的值哦", new SVNProperties(), false, false, SVNDepth.FILES);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值