SvnKit提交代码
官网地址:https://svnkit.com/documentation.html#high-level-api
svnkit提交代码提供的API
官方api地址
官网地址:https://svnkit.com/javadoc/org/tmatesoft/svn/core/wc/SVNClientManager.html
官方案例地址
https://wiki.svnkit.com/Committing_To_A_Repository
svnkit调用的API分底层的和高层的API,高层API如下图示
svnkit提交代码,提交编辑,新增,删除文件
SVNRevision:
- HEAD:版本库中最新的版本;
- BASE:某个工作副本项的版本,注意这个是你上次update该项时的版本号,可能晚于当前最新的版本号;
- COMMITTED:某个工作副本项最近修改的版本,与BASE相同或更早;
SVNDepth:
- Empty:只包含目录自身,不包含目录下的任何文件和子目录。
- FILES: 包含目录和目录下的文件,不包含子目录。
- IMMEDIATES: 包含目录和目录下的文件及子目录。但不对子目录递归。
- INFINITY: 这是默认的,包含整个目录树。
代码来自:https://stackoverflow.com/questions/12297516/svnkit-get-modifications-to-commit
try {
SVNClientManager cm = SVNClientManager.newInstance(new DefaultSVNOptions(), username, password);
cm.getStatusClient()
.doStatus(getAbstractLocalPath(type), HEAD, INFINITY, false, false, false, false, new ISVNStatusHandler() {
@Override
public void handleStatus(SVNStatus status) throws SVNException {
if (STATUS_UNVERSIONED.equals(status.getNodeStatus())) {
cm.getWCClient().doAdd(status.getFile(), true, false, false, INFINITY, false, false);//这里的SVNDepth是INFINITY
} else if (STATUS_MISSING.equals(status.getNodeStatus())) {//这里的NodeStatus为STATUS_MISSING
cm.getWCClient().doDelete(status.getFile(), true, false, false);
}
}
}, null);
cm.getCommitClient().doCommit(new File[] { getAbstractLocalPath(type) }, FALSE, "<commit> ", null, null, false, true, INFINITY);
} catch (SVNException e) {
throw new VcsException(e.getMessage());
}