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());
    }

posted @ 2024-10-23 22:01  PerfectLi  阅读(3)  评论(0编辑  收藏  举报