`
huoyanxueren
  • 浏览: 39811 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SVNKit使用冲突解决方案

阅读更多

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的Jar包 和实例代码

    同时,它还提供了冲突解决机制,当多个开发者对同一部分代码进行修改时,能够有效地识别和处理冲突。通过结合实例代码和SVNkit库,开发者可以更好地理解和掌握这些功能,从而在项目中实现高效、可靠的版本控制。

    svnkit-tool.rar

    SVNKit是一个强大的Java库,它实现了Subversion(SVN)客户端功能,允许开发者在Java应用程序中集成版本控制系统。...通过深入学习和熟练使用SVNKit,开发者可以创建出高效、稳定且用户友好的SVN解决方案。

    SVNKit实例 + jar包 + SVNKit API

    总的来说,这个压缩包提供了一个完整的SVNKit解决方案,包括了从实践示例到运行环境再到详细的API文档,对于任何希望在Java应用中集成SVN功能的开发者来说,都是极其宝贵的资源。通过深入学习和理解这些内容,开发者...

    jsvnkit安装包

    **JSVNKit安装包详解** ...无论你是构建桌面应用、Web服务还是移动应用,只要需要版本控制功能,JSVNKit都能提供可靠的解决方案。通过理解和熟练使用JSVNKit,开发者可以轻松地将版本控制的便利性融入到自己的项目中。

    svnki帮助文档(英文)

    5. **冲突解决**:在协同开发中,冲突是常有的事。SVNKit提供了处理冲突的机制,包括自动和手动解决。文档会解释如何检测和解决版本冲突,以及如何通过API检查和修改冲突状态。 6. **版本信息查询**:你可以通过...

    org.tmatesoft.svn_1.3.2.standalone.zip

    总的来说,TMate Soft SVN 1.3.2 Standalone和SVNKit的结合,为开发者提供了一种高效、便捷的版本控制解决方案,无论是在日常开发还是团队协作中,都能发挥重要作用。了解并掌握这个工具,将有助于提升开发效率,...

    eclipse、myeclipse常用插件(svn缺少部分--1)

    由于标题提到“svn缺少部分”,这可能意味着博主在讨论如何安装或配置SVN插件时遇到了问题,或者是分享了一个不完整但有用的解决方案。 描述中的“NULL”意味着没有提供具体的描述信息,所以我们只能根据标题和标签...

    MyEclipse使用的SVN插件

    【MyEclipse SVN插件详解】 在软件开发过程中,版本控制是至关重要的,它帮助团队协同工作,跟踪代码更改,并确保代码库的...在使用过程中,如果遇到问题,可以通过查看插件的帮助文档或者在线搜索解决方案来解决。

    eclipse svn 插件

    请注意,手动安装插件需要对Eclipse和SVN有一定的了解,如果遇到问题,可以查阅官方文档或在线搜索解决方案。同时,Eclipse Marketplace提供了一种更简便的安装方式,可以直接在Eclipse内搜索并安装SVN插件。

    eclipse svn1.8插件

    - **冲突解决**:当多人同时编辑同一文件时,插件能检测并提示冲突,帮助用户解决合并问题。 - **日志查看**:查看文件和目录的历史变更记录,包括修改时间、作者和注释。 - **差异比较**:对比不同版本间的文件...

    IDEA使用本地SVN导入项目的插件

    在IT行业中,集成开发环境...总的来说,IDEA结合本地SVN插件,为开发者提供了一种便捷的版本控制解决方案,使得在IDEA内进行SVN操作变得更加直观和方便。了解并熟练使用这种工具,是现代软件开发中不可或缺的一项技能。

    svn 服务端+客户端+eclipse3.5插件(实测myeclipse8.0能用)+安装教程

    SVN(Subversion)是一种广泛使用的版本控制系统,...总的来说,这个压缩包提供了一套完整的SVN解决方案,包括服务端、客户端、Eclipse集成,以及安装教程,便于开发者在Eclipse或MyEclipse环境中高效地进行版本控制。

    Eclipse SVN

    - **冲突解决**:当多个用户同时修改同一文件时,Eclipse SVN会提示冲突,并提供工具协助解决。 3. **安装Eclipse SVN插件**: 用户可以通过Eclipse的内置软件库(Help > Install New Software)添加SVN插件,...

    svn-eclipse插件

    5. **冲突解决**:处理因多人同时修改同一文件而产生的冲突。 6. **分支和标签**:创建和管理项目的分支和标签。 7. **比较和合并**:比较不同版本的文件,并合并修改。 **插件安装** 在Eclipse中安装svn-eclipse...

    MyEclipse SVN配置文件

    在实际使用中,你可能会遇到的问题及解决方案包括: - **认证问题**:如果在访问SVN仓库时遇到认证问题,可以检查`config`文件中的`auth`子目录,确保正确存储了用户名和密码。或者在MyEclipse的SVN首选项中清除或...

    Setup-Subversion-1.8.17.zip

    综上所述,Subversion 1.8.17是一个强大的版本控制解决方案,尤其适用于Java开发团队。通过安装"Setup-Subversion-1.8.17.msi",用户可以轻松地在本地环境中设置并运行Subversion服务器,从而实现高效的代码管理和...

    PHP基于Web的subversion用户管理系统(源代码+论文).zip

    Subversion提供了一种集中式的版本控制机制,允许团队成员在同一个项目上进行协作,记录每一次更改,以便于回溯、合并代码,并且提供冲突解决机制。Subversion仓库存储所有的项目文件和历史信息,用户通过客户端工具...

    sebeclipse-site-1.6.18

    这使得安装过程变得简单且方便,开发者可以快速享受到Subversion集成带来的便利,如版本比较、冲突解决、历史查看等功能。 总结来说,"sebeclipse-site-1.6.18"是一个用于Eclipse的Subversion插件包,包含了必要的...

    Eclipse SVN插件

    如果出现这样的错误,解决方案是查找并下载缺失的依赖包,确保它们在Eclipse的插件路径下被正确放置,或者通过调整Eclipse的配置来解决。 在压缩包文件中,我们可以看到一些关键文件: 1. `epl-v10.html` 和 `...

    MyEclipse上svn插件

    此时,可以通过检查SVN日志,调整SVN配置,或者在社区查找解决方案来解决问题。 总之,MyEclipse上的SVN插件为开发者提供了方便、高效的版本控制工具,使得在IDE内就能完成版本管理的所有操作,极大地提高了开发...

Global site tag (gtag.js) - Google Analytics