`
liugang594
  • 浏览: 990794 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实现自己的团队协作客户端一

阅读更多

在Eclipse里自带了团队协作客户端CVS;另外还有好几个SVN的插件可以用。

 

当使用这些插件时,可以方便的进行同步、提交、更新等操作。

 

如果比较了CVS与SVN的实现成使用方式就会发现它们大同小异。这里因为和eclipse提供的其他功能一样,在eclipse里有一个专门提供团队协作的插件Team。而CVS和SVN就是通过实现这个Team的扩展来提供协作功能。

 

因此,如果我们想在eclipse里提供一个自己的协作实现,毫无疑问,也需要通过扩展这个team来实现。

 

(我理解部分):一般来说,一个资源在同步视图中通常有以下几种情况:

 

  • 1.同步中
  • 2.可提交
  • 3.可更新
  • 4.本地增加
  • 5.本地删除
  • 6.远程增加
  • 7.远程删除
  • 8.冲突中

 

要想实现这些状态的正确显示,我们需要一些东西来得到这些状态。在Team框架里,他是通过三类对象进行比较来得到这些状态:

 

  • 1.本地资源 Local
  • 2.记录资源 Base
  • 3.远程资源 Remote

同步时分两步进行操作:首先判断base和remote是否存在,用以判断增删状态;如果都存在,则分别用base同local的比较和base和remote的比较来得到关系剩余的状态。

 

这两步在类:ResourceVariantTree 和 IResourceVariantComparator 中实现,所以我们需要提供自己的这两个类的实现。

 

得到了同步状态之后,需要做的就是操作的实现了。默认情况下同步视图会有一些默认的菜单,如果我们要对这些默认的菜单提供实现,那我们要实现以下类:SubscriberMergeContext。

 

除此之外,通常我们要有自己的操作实现,例如:提交、更新等等。

 

这个我花了一小段时间才找着路子。首先我们要提供一个扩展,在plugin.xml里声明一些插件入,例如:

 

   <extension
         point="org.eclipse.ui.navigator.viewer">
       <viewer
             viewerId="#viewId">
           <popupMenu
                allowsPlatformContributions="false"
                id="#menuId">  
             <insertionPoint name="file"/>
             <insertionPoint name="file-bottom"/>  
             <insertionPoint name="edit" separator="true"/>          
             <insertionPoint name="synchronize"/>
             <insertionPoint
                   name="navigate"
                   separator="true"/>
             <insertionPoint
                   name="update"
                   separator="true"/>
             <insertionPoint
                   name="commit"
                   separator="false"/>
             <insertionPoint
                   name="overrideActions"
                   separator="true"/>
             <insertionPoint
                   name="otherActions1"
                   separator="true"/>
             <insertionPoint
                   name="otherActions2"
                   separator="true"/> 
             <insertionPoint
                   name="changeSetActions"
                   separator="true"/> 
             <insertionPoint
                   name="sort"
                   separator="true"/>
             <insertionPoint
                   name="additions"
                   separator="true"/>              
             <insertionPoint
                   name="properties"
                   separator="true"/>
          </popupMenu>
       </viewer>
   </extension>

 

这里这个viewerId比较重要,它是之后我们的操作找到插入点的中介。

 

声明了这些插入点之后,在同步视图的右键菜单中就会新建这些group,最后我们的菜单就可以加到对应的group里了。

 

菜单的实现在ModelSynchronizeParticipant中提供。这是一个participant类,每个提供协作实现都需要扩展org.eclipse.team.ui.synchronizeParticipants扩展点,然后提供一个实现类,那个实现类就可以继承这个ModelSynchronizeParticipant类。

 

在这个类中,我们要注册上面扩展的viewerId和contextMenuId绑定,如下:

 

	protected void initializeConfiguration(ISynchronizePageConfiguration configuration) {
		configuration.setProperty(ISynchronizePageConfiguration.P_VIEWER_ID, VIEWER_ID);
		super.initializeConfiguration(configuration);
	}

 

然后再实现以下方法:

 

	protected ModelSynchronizeParticipantActionGroup createMergeActionGroup() {
		return new WorkspaceMergeActionGroup();
	}

 

完了以后,在WorkspaceMergeActionGroup里定义的菜单就可以实现了。具体菜单的执行就不需要说了。

 

 

 

 

分享到:
评论

相关推荐

    1.IBM开放协作客户端平台解决方案(孙希坤).ppt

    IBM开放协作客户端平台解决方案是IBM提出的一种创新策略,旨在打破传统封闭式客户端系统的局限,推动企业向更加开放、集成和定制化的方向发展。这个解决方案强调使用开放标准,以提高跨平台兼容性和数据交换的透明性...

    CSDN客户端 Android新闻客户端 完整代码

    10. **发布与更新**:最后,了解Google Play的发布流程,如何打包APK,以及如何通过版本控制(如Git)来管理代码,便于团队协作和版本更新。 通过分析这个CSDN客户端的完整代码,开发者可以学习到如何实现一个功能...

    有道云协作 Windows、Mac客户端.zip

    1. **有道云协作**:有道云协作是网易公司推出的一款云端协作工具,它整合了文档共享、在线编辑、评论交流、任务分配等多种功能,为团队协作提供了全方位的解决方案。用户可以通过创建项目、添加成员、分享文件等...

    VC++_CSocket编程实现FTP服务器端及客户端(+开发文档)

    ### VC++ CSocket编程实现FTP服务器端及客户端的关键知识点 #### 概述 在南京大学计算机科学与...此外,项目展示了团队成员对网络编程、GUI设计以及多线程编程的综合运用能力,体现了良好的工程实践与团队协作精神。

    Android案例之新闻客户端服务器实现,完全属于自己的新闻展示平台

    11. **版本控制**:使用Git进行代码版本控制,方便团队协作和问题回溯。 12. **持续集成/持续部署(CI/CD)**:通过Jenkins、Travis CI等工具实现自动化构建和部署,提升开发效率和产品质量。 以上就是构建一个...

    webdav客户端中文版

    4. **权限管理**:用户可以设置对不同文件或文件夹的访问权限,实现团队协作时的权限控制。 5. **离线编辑**:一些客户端支持离线编辑功能,用户可以在没有网络连接的情况下修改文件,一旦联网,会自动同步更改。 ...

    团队高效沟通的移动客户端咚咚.zip

    咚咚基于环信平台进行开发,旨在打造一款团队高效沟通的移动客户端,供企业内部协作使用,适应移动办公需要,提升企业沟通协同效率,增强企业办公管理效率。(咚咚一期实现了用户登入登出功能、通讯功能、投票功能。...

    svn web client svn客户端

    **SVN 客户端与 Web 客户端详解** SVN(Subversion)是一种广泛使用的版本控制...理解并熟练使用这些工具对于团队协作和项目管理至关重要。而压缩包中的文件则可能是部署或配置 SVN Web 客户端所需的一些关键资源。

    C# 一个简单的 Restful 服务端和 Restful 客户端 Demo

    - 使用Git进行版本控制,方便团队协作。 - 配置自动化构建工具如Azure DevOps或Jenkins,实现代码自动编译、测试和部署。 这个C#的RESTful服务端和客户端Demo,旨在帮助开发者快速理解和实践RESTful API的设计和...

    SVN 服务器和客户端安装

    SVN 服务器和客户端安装 SVN(Subversion)是一种版本控制系统,广泛...安装 SVN 服务器和客户端可以实现版本控制、团队协作和数据备份等功能。因此,了解 SVN 服务器和客户端安装的知识点对于使用 SVN 是非常重要的。

    Android-整体开发基于MVPRxJavaRetrofitokhttp实现视频新闻客户端

    7. **版本控制与项目结构**:项目名BeautyPaPa-master暗示了项目的源代码管理可能使用了Git,并且遵循了良好的代码组织规则,将各个模块如UI、网络请求、数据处理等划分为不同的包或子模块,便于团队协作和代码维护...

    向日葵控制端和客户端

    这样的技术在现代工作环境中非常实用,尤其是在需要远程协助、多设备管理或者分布式团队协作的情况下。 向日葵控制端和客户端的设计理念是以用户友好性和易用性为核心,即使是对技术不太熟悉的用户也能轻松上手。...

    程序设计实践 邮件客户端的实现

    此外,良好的代码组织和版本控制,如使用Git进行版本管理,有助于团队协作和代码质量的提升。 文件列表中的“Gmail.exe”可能意味着项目支持与Google Gmail的集成,这就需要理解OAuth2.0等授权机制,以安全地获取...

    C# 局域网聊天程序 一个服务器多个客户端

    《C#实现局域网聊天程序:构建多客户端通信系统》 在信息技术高速发展的今天,局域网(LAN)内的即时通讯已经成为日常工作和生活中不可或...这种程序在小型团队协作、家庭网络环境下的沟通等方面具有很高的实用价值。

    linux服务器端和windows客户端cvs.rar

    【Linux服务器端与Windows客户端CVS的集成及安装】 CVS(Concurrent Versions System)是一种开源的版本控制系统,常用于管理软件项目的源代码。...熟悉它的使用和配置,对于多平台的团队协作至关重要。

    svn客户端svn客户端svn客户端svn客户端

    它允许团队协作,跟踪文件的每一次更改,并可以轻松回滚到之前的版本。本文将深入探讨SVN客户端,特别是TortoiseSVN,这是一个流行的图形用户界面工具。 在开发环境中,SVN客户端是与Subversion服务器进行交互的...

    TQ客户端.rarTQ客户端.rarTQ客户端.rarTQ客户端.rarTQ客户端.rarTQ客户端.rar

    TQ客户端的出现,旨在提高工作效率,降低沟通成本,促进团队协作。 一、TQ客户端的主要功能: 1. 实时聊天:TQ客户端支持文字、语音、图片等多种形式的消息传递,确保团队成员能随时随地进行快速交流。 2. 多人...

    svn客户端的下载

    SVN,全称为Subversion,是一种广泛使用的版本控制系统,它允许团队协作开发,跟踪文件和目录的更改,并恢复过去的版本。在本文中,我们将深入探讨SVN客户端的下载、安装和基本使用方法。 首先,SVN客户端是与SVN...

    中文CVS客户端软件下载

    **中文CVS客户端软件下载** CVS(Concurrent Versions System)是一种版本控制系统,它...无论是个人项目还是团队协作,都能借助CVS实现高效、有序的代码管理。安装并熟悉这款工具,将成为每个开发者必备的技能之一。

    SVN 客户端 64位

    SVN(Subversion)是一种版本控制系统,用于管理代码和其他文件的变更历史,是软件开发团队协作的重要工具。64位版本的SVN客户端是专为64位操作系统设计的,可以充分利用64位系统的内存资源,提高性能和稳定性。本文...

Global site tag (gtag.js) - Google Analytics