SVNKit (JavaSVN) 是一个纯 Java 的 SVN 客户端库,使用 SVNKit 无需安装任何 SVN 的客户端,支持各种操作系统。不是开源软件,但是可以免费使用。
其实还有一个众所周知的API JavaHL。特别是在svn相关的一些工具和插件上,两个API都被广泛使用。最经典的就是eclipse IDE上的Subclipse插件。在window->Prepfences->SVN->SVN接口一栏中,就有两个选项可供选择:JavaHL和SVNKIt。这里就不得不将他们之间不得不说的故事了。
直白说,SVNKit就是JavaHL的加强版,一个高阶的API。目前网上有SVNKit开发相关的入门资料《SVNKit开发指南》,这里就不在累赘了。这里只记录下资料内没谈到的冲突解决方案。
在利用SVNKit进行代码update、svn branches switch、merge的时候经常会出现因为小组合作而出现的代码冲突的情况。在默认情况下,SVNUpdateClient、SVNDiffClient在碰到代码update 或者merge冲突的时候,直接跳过中断,并跳过其他文件处理,并不提示任何异常。这样就给使用者造成了极大的困惑。目前提供一个方案解决下这样的尴尬。
以SVNDiffClient进行merge操作为例:
//获取SVNDiffClient
SVNDiffClient diffClient = getSVNClientManager(svnModel).getDiffClient();
diffClient.setIgnoreExternals(false);
DefaultSVNOptions options = (DefaultSVNOptions) diffClient.getOptions();
//配置一个 ConflictResolverHandler
options.setConflictHandler(new ConflictResolverHandler())
ConflictResolverHandler这里模拟SVN在命令行终端的实行方式。当代码merge产生冲突的时候,弹出窗口,让用户选择Select: (p) postpone, (mf) mine-full, (tf) theirs-full 三种不同方式后,再进行merge。
public class ConflictResolverHandler implements ISVNConflictHandler {
/*
* (non-Javadoc)
*
* @see
* org.tmatesoft.svn.core.wc.ISVNConflictHandler#handleConflict(org.tmatesoft
* .svn.core.wc.SVNConflictDescription)
*/
@Override
public SVNConflictResult handleConflict(
SVNConflictDescription conflictDescription) throws SVNException {
SVNConflictReason reason = conflictDescription.getConflictReason();
SVNMergeFileSet mergeFiles = conflictDescription.getMergeFiles();
System.out.println("Conflict discovered in:" + mergeFiles.getWCFile());
// System.out.println(reason);
System.out
.print("Select: (p) postpone, (mf) mine-full, (tf) theirs-full ");
SVNConflictChoice choice = SVNConflictChoice.POSTPONE;
Scanner reader = new Scanner(System.in);
if (reader.hasNextLine()) {
String sVNConflictChoice = reader.nextLine();
if (sVNConflictChoice.equalsIgnoreCase("mf")) {
choice = SVNConflictChoice.MINE_FULL;
} else if (sVNConflictChoice.equalsIgnoreCase("tf")) {
choice = SVNConflictChoice.THEIRS_FULL;
}
}
return new SVNConflictResult(choice, mergeFiles.getResultFile());
}
}
自此,SVNKit中的冲突解决问题就借助handler方式顺利解决了。
- 大小: 39.5 KB
- 大小: 25.3 KB
分享到:
相关推荐
目前真正自己写的svnkit底层接口使用代码,svnkit很稳定,但接口使用说明不清晰,所以会导致了使用过程中会有很多的坑,实例中有完整的解决方法
java调用SVNKit示例
SVNKit实例包括所有SVN相关的基本操作,完整项目,导入即可运行
SVNKit开发手册,使用说明。类图介绍
svnkit1.3.5完整包svnkit1.3.5完整包
svnkit是纯java实现的操作subversion的类库,使用起来非常的方便。官方文档提到,svnkit提供了三种类型的api:high level api、low level api和java hl api。本文简单介绍一下svnkit的high level api和low level api...
svnKit java操作svn :上传 下载 提交 更新 版本
SVNKit获取SVN信息
离线版svnkit帮助文档API,html
集成SVNKit检出以及获取比对不同文件清单小例子
SVNKit (JavaSVN) 是一个纯 Java 的 SVN 客户端库,使用 SVNKit 无需安装任何 SVN 的客户端,支持各种操作系统。 这不是一个开源的类库,但你可以免费使用。 通过SVNKit,你可以在SVN上开发出自己的应用
svnkit-1.7.11
SVNKIT Java 示例, 文档附有Java 下载示例代码
SVNkit的Jar包 和实例代码 , 最新可用的, 自己找了好久的
,SVNKit1.7.9最新
自己写的使用svnkit操作svn库,对比版本号、文件等等,并把需要的信息组装成json。
svnkit-1.8.6.jar
安卓studio gradle svn .jar依赖文件下载 SVNKit Java(tm) Subversion Library Java(tm) library to manage Subversion working copies and repositories
SVNKit开发指南.doc
svnkit的demosvnkit的demosvnkit的demosvnkit的demosvnkit的demosvnkit的demo