在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里定义的菜单就可以实现了。具体菜单的执行就不需要说了。
分享到:
相关推荐
IBM开放协作客户端平台解决方案是IBM提出的一种创新策略,旨在打破传统封闭式客户端系统的局限,推动企业向更加开放、集成和定制化的方向发展。这个解决方案强调使用开放标准,以提高跨平台兼容性和数据交换的透明性...
10. **发布与更新**:最后,了解Google Play的发布流程,如何打包APK,以及如何通过版本控制(如Git)来管理代码,便于团队协作和版本更新。 通过分析这个CSDN客户端的完整代码,开发者可以学习到如何实现一个功能...
1. **有道云协作**:有道云协作是网易公司推出的一款云端协作工具,它整合了文档共享、在线编辑、评论交流、任务分配等多种功能,为团队协作提供了全方位的解决方案。用户可以通过创建项目、添加成员、分享文件等...
### VC++ CSocket编程实现FTP服务器端及客户端的关键知识点 #### 概述 在南京大学计算机科学与...此外,项目展示了团队成员对网络编程、GUI设计以及多线程编程的综合运用能力,体现了良好的工程实践与团队协作精神。
11. **版本控制**:使用Git进行代码版本控制,方便团队协作和问题回溯。 12. **持续集成/持续部署(CI/CD)**:通过Jenkins、Travis CI等工具实现自动化构建和部署,提升开发效率和产品质量。 以上就是构建一个...
4. **权限管理**:用户可以设置对不同文件或文件夹的访问权限,实现团队协作时的权限控制。 5. **离线编辑**:一些客户端支持离线编辑功能,用户可以在没有网络连接的情况下修改文件,一旦联网,会自动同步更改。 ...
咚咚基于环信平台进行开发,旨在打造一款团队高效沟通的移动客户端,供企业内部协作使用,适应移动办公需要,提升企业沟通协同效率,增强企业办公管理效率。(咚咚一期实现了用户登入登出功能、通讯功能、投票功能。...
**SVN 客户端与 Web 客户端详解** SVN(Subversion)是一种广泛使用的版本控制...理解并熟练使用这些工具对于团队协作和项目管理至关重要。而压缩包中的文件则可能是部署或配置 SVN Web 客户端所需的一些关键资源。
- 使用Git进行版本控制,方便团队协作。 - 配置自动化构建工具如Azure DevOps或Jenkins,实现代码自动编译、测试和部署。 这个C#的RESTful服务端和客户端Demo,旨在帮助开发者快速理解和实践RESTful API的设计和...
SVN 服务器和客户端安装 SVN(Subversion)是一种版本控制系统,广泛...安装 SVN 服务器和客户端可以实现版本控制、团队协作和数据备份等功能。因此,了解 SVN 服务器和客户端安装的知识点对于使用 SVN 是非常重要的。
7. **版本控制与项目结构**:项目名BeautyPaPa-master暗示了项目的源代码管理可能使用了Git,并且遵循了良好的代码组织规则,将各个模块如UI、网络请求、数据处理等划分为不同的包或子模块,便于团队协作和代码维护...
这样的技术在现代工作环境中非常实用,尤其是在需要远程协助、多设备管理或者分布式团队协作的情况下。 向日葵控制端和客户端的设计理念是以用户友好性和易用性为核心,即使是对技术不太熟悉的用户也能轻松上手。...
此外,良好的代码组织和版本控制,如使用Git进行版本管理,有助于团队协作和代码质量的提升。 文件列表中的“Gmail.exe”可能意味着项目支持与Google Gmail的集成,这就需要理解OAuth2.0等授权机制,以安全地获取...
《C#实现局域网聊天程序:构建多客户端通信系统》 在信息技术高速发展的今天,局域网(LAN)内的即时通讯已经成为日常工作和生活中不可或...这种程序在小型团队协作、家庭网络环境下的沟通等方面具有很高的实用价值。
【Linux服务器端与Windows客户端CVS的集成及安装】 CVS(Concurrent Versions System)是一种开源的版本控制系统,常用于管理软件项目的源代码。...熟悉它的使用和配置,对于多平台的团队协作至关重要。
它允许团队协作,跟踪文件的每一次更改,并可以轻松回滚到之前的版本。本文将深入探讨SVN客户端,特别是TortoiseSVN,这是一个流行的图形用户界面工具。 在开发环境中,SVN客户端是与Subversion服务器进行交互的...
TQ客户端的出现,旨在提高工作效率,降低沟通成本,促进团队协作。 一、TQ客户端的主要功能: 1. 实时聊天:TQ客户端支持文字、语音、图片等多种形式的消息传递,确保团队成员能随时随地进行快速交流。 2. 多人...
SVN,全称为Subversion,是一种广泛使用的版本控制系统,它允许团队协作开发,跟踪文件和目录的更改,并恢复过去的版本。在本文中,我们将深入探讨SVN客户端的下载、安装和基本使用方法。 首先,SVN客户端是与SVN...
**中文CVS客户端软件下载** CVS(Concurrent Versions System)是一种版本控制系统,它...无论是个人项目还是团队协作,都能借助CVS实现高效、有序的代码管理。安装并熟悉这款工具,将成为每个开发者必备的技能之一。
SVN(Subversion)是一种版本控制系统,用于管理代码和其他文件的变更历史,是软件开发团队协作的重要工具。64位版本的SVN客户端是专为64位操作系统设计的,可以充分利用64位系统的内存资源,提高性能和稳定性。本文...