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 @   PerfectLi  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示