前言(译者)

就个人的成长历程来说,刚参加工作用的是 CVS ,前前后后有接近三年的使用体验,从今年开始使用 SVN 。总的来说我更喜欢 SVN ,用起来的确很方便,例如在本地源代码文件中加一个空格然后删除, SVN 不会认为该代码文件有任何改变,而 CVS 就不会这么聪明了(不知是不是本人尚未搞懂 CVS ,汗 ~ )。

手上有个大型分布式项目,由于客户端牵涉到 C# 编程,询问了公司 .NET 达人,被告知 VS 可以连 SVN ,但是配置步骤复杂。我是个极其讨厌复杂的人(鬼子的 YEC 项目把我郁闷了),二话不说决定就此采用 VSS ,并为 Eclipse 配置 VSS 插件!

Google 之后发现了 VSS Plugin项目 ,按照首页的介绍配置了一下,还挺好用的。尽管进行了简单配置,但毕竟是英文,没有母语看起来方便,同时也是为了公司其他同事,我决定翻译成中文。

VSS Plugin version 1.6.2 for Eclipse 3.3

本团队提供了这个 Eclipse IDE 插件,该插件能把 VSS 操作集成到 Eclipse IDE 3.3 (Europa) 版本中。如果你愿意捐款可以在下面找到详细信息。

最后修改日: 2007-09-09


开始

本插件能运行在 Eclipse 3.3 SDK RCx 和最新的 Eclipse 3.3 SDK 。它能让用户在 Eclipse IDE 中执行 Microsoft Visual SourceSafe (VSS) 操作。 VSS Plugin 之前一直都支持旧版本的 Eclipse ,但是现在的 1.6.2 版本已经放弃这种做法,如果你的环境和 Eclipse 3.3 不兼容,那么请选择旧版本的 VSS Plugin 。

1.1 先决条件

●         运行在 Windows 98/ME/2000/XP 上的 Eclipse 3.3 SDK (Europa 版本 ) 。请注意这里需要完整的 SDK 版本。

●         一个得到授权和功能完整的 Microsoft Visual SourceSafe 6.0 客户端,并最好升级到目前最新的 SP6 服务包。更具体的信息请参考http://msdn.microsoft.com/ssafe/ ,很重要的一点是必须明白  Eclipse 的 VSS 插件不能提供你 Microsoft Visual SourceSafe 拷贝以及任何的授权。这个插件的操作是基于 Microsoft Visual SourceSafe 的。

●         该插件已经过英文版的 VSS 测试,也应该可以运行在其他语言版本的 VSS 上,但可能要进行些调整,更多信息请参考 org/vssplugin/messages.properties 。当前版本的插件使用 VSS Ole Automation API 进行集成。

1.2 安装

1.  从 http://sourceforge.net/projects/vssplugin/ 下载最新版本。请注意如果你用的是 WSAD 5.x 或 Eclipse 2.0 可以下载旧版本的插件,这种做法同样适合于Eclipse 3.0 。

2.  解压缩 zip 包放入 eclipse 的 plugin 文件夹,同时要确保旧版本的插件已经被卸载。

3.  重启 Eclipse IDE 。

4.  可以这样来检查插件是否在运行 Help->About Eclipse Platform->Plug in Details ,上下拖拉列表就能发现插件是否在其中。

5.  除了上面介绍的以外,我还推荐启用 Label Decorator 功能,这是在默认情况下是没有的。

1.3 捐款

我有一个 paypal 账户来接受捐款,如果你喜欢这个插件并愿意捐款请使用 paypal 。 
 (请参考http://vssplugin.sourceforge.net/提供的捐款信息。)

1.4 在主要的版本 (1.6.0) 更新中有什么新特性?

●         对 Compare Dialog 进行了更新:可以让用户来选择是否显示注释、展开树 / 收缩树、标签是否显示。所有的操作都在上下文菜单( RosenJiang 注:就是在视图中点击右键所出现的菜单)中。

●         更新了 Team Project Set Import/Export 。

●         支持 3.1 RCx 。

●         支持 online/offline 模式,当 VSS 资源库在离线模式不允许任何 VSS 操作,这种模式适合于在配置插件和无需访问 VSS 资源库的时候。

●         在 Check Out 视图中支持 error/warning 修饰。

●         增加了对 checkout 注释的支持,这一特性受参数选择 (preference) 页的 separate 选项控制。

●         增加了对 VSS Refresh Log 视图的支持,该视图展示了在执行 Refresh 、 Update State 、 Get Latest version 操作的时候哪些文件被添加、删除或修改了。

●         在 compare 和 replace 视图中,数据显示更加合理(检入时间、由谁提交、版本)。

●         增加了 VSS Info 页对共享的支持,现在可以查看是否有文件被共享,以及 VSS 共享路径。

1.5 开始上手

VSS Plugin 运行在以 Eclipse 为基础的环境中。在 workspace 中的每个项目都可以独立和统一挂载到某个 VSS 资源库。如果你想挂载到不同的资源库,那么这些项目应该是相互独立的。

每个项目在本地 workspace 和 VSS 之间都有一个或多个地址映射。基于这种情况,插件需要至少一个映射以便进行操作。例如:在 workspace 有一个源代码目录/java/src ,在 VSS 中所有 /java/src 下的文件都应该被映射到 $/project-x/java/src ,那么这就是一个从 /java/src 到 $/project-x/java/src 的映射。当然也可以使用 /映射 $/ ,但这是很少见的例子。

如果需要可增加多个映射。插件将采用“ best mapping ”策略递归最长的路径。

例如有三个映射:

/src/java => $/project-x/src/java

/src/jsp => $/project-x/webapp

/src => $/project-x/other

结果:

/src/java/x/y/Test.java => $/project-x/src/java/x/y/Test.java

/src/java/Test.java => $/project-x/src/java/Test.java

/src/jsp/test.jsp => $/project-x/webapp/test.jsp

/src/test.jsp => $/project-x/other/test.jsp

/test.jsp => 该文件不受插件管理。

如何激活插件?

1.  为你的项目配置团队提供者。在某个 Eclipse 项目上点击右键调出上下文菜单,接着选择 Team->Share Project ,接着将调出选择资源库的向导对话框。

2.  选择 VSS Configuration Wizard 并进行适当的设置。“ next ”按钮将带领你进行映射配置,如果你只需要一个映射,请点击“ finish ”。

●         Username 是用于进行 VSS 资源库认证的用户名。

●         Password 是与之相应的密码,可以为空。

●         VSS directory 是 VSS 资源库保存 srcsafe.ini 文件的完整的绝对路径。接着追加第一个映射。

●         Source dir 是 Eclipse 中项目的路径,是进行所有操作的根目录。例如你在 Eclipse 中的项目使用 /src 作为保存所有源码的根目录,那么你就要把那个目录选择到这里。这必须是有效的 Eclipse 项目目录路径。

●         Relative mount point 是 VSS 项目(路经),是在 VSS 资源库中进行所有操作的根。如果你想把源代码放在 VSS 项目 $/web-application 中,那么该路径就是relative mount point 。这必须是有效的 VSS 项目路径。

3.  现在你的项目已经被配置为使用 VSS 插件了。

4.  如果你对某个项目点击右键并从上下文菜单中选择 Team ,那么附加功能就都可以用了。另外,上下文菜单选项非常依赖当前这个文件的状态。一小点问题就可能导致某个选项不能用,如果遇到这样的问题最好是尝试刷新一下,找出问题所在。在插件中出现的所有错误都能在 ” 你的 workspace”\.metadata\.log 下找到。

●         Refresh ,通常是进行一次完整的 Get Latest Version 然后再查询 VSS 资源库每个文件的状态( checked out 、 existing 等等 … )。当需要的时候,你可以用VSS Plugin 的这个功能来完整的获取所有文件的当前状态。由于要单独查询每个文件,这将非常耗时。

●         Get Latest Version ,从 VSS 资源库获取最新版本。如果一个可写的文件拷贝存在,那么在使用这个功能的时候用户将会被询问是否可以覆盖本地拷贝,如果有编辑器正开着这些文件,那么都会被恢复。

●         Update Status ,类似于 Refresh 功能,但不会进行“ Get Latest Version ”操作,这是一种更快速的轻量级操作。从 1.3 版本开始本插件支持通过后台低优先权线程更新状态,你可以在参数选择中启用。

●         Check Out ,从资源库中检出文件。如果一个可写的文件拷贝存在,那么在使用这个功能的时候用户将会被询问是否可以覆盖本地拷贝,如果有编辑器正开着这些文件,那么都会被恢复。

●         Check In ,检查哪些文件被修改了并提交到 VSS 资源库。在 Check In 执行之前会提示用户保存在编辑器中开着的文件。

●         Undo Checkout ,在资源库中释放文件。如果文件有改变,用户将得到提示,最后回到检出之前的状态。所有编辑器也会在撤销之后恢复到原来的内容。

●         Commit Changes ,提交所有本地文件并检入当前已经检出的文件。用户将会被提示哪些文件应该被选出来追加到资源库。

●         Synchronize with Repository ,调出平台同步视图来显示所有本地文件、文件夹与 VSS 资源库的差别。仅有 added 、 deleted 、 changed 资源才会在视图中显示。本地将要追加的文件会以 + (加号)显示而需要从资源库删除的文件会以 - (减号)显示。

●         Add to VSS ,追加本地文件到 VSS 资源库中。

●         Delete from VSS ,从 VSS 资源库删除一个已经存在的文件,同时也会删除本地拷贝。

●         Deconfigure VSS ,这个选项仅仅对项目根目录有效,这个操作会把该项目的 VSS Plugin 功能移除。在配置被移除后需要关闭项目并重新打开以便刷新视图。

怎样查看 / 编辑插件设置或配置映射?

要查看插件设置需要在项目根目录的上下文菜单中选择 properties 选项并选择 VSS Configuration 或 VSS Mappings 项进行查看。对项目中每个资源都可以检查其状态,例如它是否被映射等等。这些信息可以在上下文菜单 ->properties->VSS Info 中找到。

如何让 scc 文件不要在导航视图中显示?

你可以在视图右上角的过滤菜单中屏蔽掉。

怎样支持多重检出?

要使用多重检出就必须在该项目的选项中激活它。

怎样使每个文件 / 文件夹的状态都能在项目中显示?

可以通过这样的手段来设置工作台参数 (workbench preference )。 Window -> Preferences -> Workbench -> Label Decorations -> 然后激活 VSS Plug in Team Decorator 复选框。

●         当检测到每个文件 / 文件夹已经存在于 VSS 资源库时将显示一个小 ”database” 图标。

●         当检测到某些文件被检出了就会有检出标识出现在文件名之后。

●         当检查到某些文件被当前用户检出将会显示一个小 ”checked” 图标。

●         如果检测到某些文件状态是未知的也会显示一个小图标直到刷新完成。

●         被映射的文件夹将有一个小图标显示映射的根在哪里。

●         当本地并不知道文件是否为最新版本时将显示小图标( *-icon (asterix) )。

Team Decorator 是很有用的,但是它也需要消耗额外的 CPU 资源,并将减缓 IDE 启动的启动速度,尤其在树形视图中有很多文件的时候。

还有其他的参数选择么?

更多的参数可以在 Window -> Preferences -> Team -> VSS 中找到。当 Show number of checked out files in each folder 复选框被激活,会在文件夹名 / 包名的后面显示检出的数目。当不激活 Always assume recursive refresh/get latest version on folders 复选框,在这个文件夹执行刷新 / 获取最新版本的时候会反复弹出对话框让用户确认。

怎样使快捷键有效?

通过 Window -> Customize Perspective -> Other -> 选中 VSS Plugin menu and shortcut keys 复选框这种方式来使快捷键有效。

快捷键的动作是调用当前活动编辑器,而当没有活动的编辑器时则调用当前选项。如果是为某些小改动而需要进行频繁的检出 / 检入,以这种方式浏览代码是非常好的。

这里有些已知问题,当菜单在任何编辑器活动 / 不活动之前启动或在某些菜单选项还未开始工作时就调用它们将导致意想不到的错误。

下面是当前版本所支持的键:

Ctrl+Alt+U -> Undo Check Out

Ctrl+Alt+I -> Check In

Ctrl+Alt+O -> Check Out

Ctrl+Alt+R -> Refresh

Ctrl+Alt+A -> Add

快捷键不工作了怎么办?

这个问题可能是由于键绑定时和 Eclipse 平台冲突。也可能是由于其他插件已经用了这些快捷键。你可以通过修改 plugin.xml 文件来解决遇到的问题。可以在该文件的最下面参考操作步骤。

有些文件会被 VSS 插件忽略,如何解决呢?

插件目前把格式为 *.class 、 *.scc 、 .project 、 .classpath 的文件认为是可以忽略的资源。如果要激活这些忽略的文件应该通过 Window -> Preferences -> Team -> Ignored Resources 进行设置。

有视图可以查看所有已检出的文件么?

有的,这个视图可以通过 Window => Show View => Other => VSS => Checked Out Files 激活。对项目进行一次完整的刷新就能找到当前所有检出的文件。可以使用过滤器实现屏蔽其他用户的检出文件,另外还可以使用排序进行查看。

我做了操作后发现没什么反应怎么办?

可以在 ” 你的工作区 ”\.metadata\.log 找到 Eclipse 的日志文件查看任何异常并根据这些异常写个 bug 报告。

可以在 VSS 中移动并重命名文件么?

在工作区中所有的重命名、删除和移动操作都会被 VSS 插件截获。在对 VSS 资源库执行这些操作之前将提示用户。要注意这个问题,在两个文件夹之间移动一个文件文件其实就是在目标文件夹添加新文件并从源文件夹删除旧文件,这样一来所有的 VSS 历史信息都将丢失。这是 VSS 的限制,只有在项目移动的时候才支持而并非文件,就不要问我为什么会这样了。

我可以导入 / 导出所有的 VSS 项目设置么?

使用 Eclipse 平台的 Team Import/Export 功能,项目已经被配置为 VSS 支持,所以所有的映射、资源库路径等都可以导出来。

在导入时,如果你有项目描述文件( .project, .classpath )存储在 VSS 中并相应的映射到了项目根目录,那么导入功能将询问是否使用已有的项目描述文件或新建一个项目。

我推荐你使用 Eclipse Project Set Editor 插件,现在这个编辑器也支持 VSS 插件,感谢 Martin Zvieger 和 Dirk Baumann 提供了这个插件。

有办法可以比较本地文件和资源库文件之间的差别么?

同步视图( Synchronize View 

新的资源库同步操作将调用 Eclipse 平台的同步视图,显示所有的本地文件 / 文件夹和 VSS 资源库文件 / 文件夹之间的差别。只有被添加 / 删除 / 修改的资源才会显示在这个视图中。本地需要添加进资源库的文件会显示一个 +( 加号 ) 符号,而需要从资源库删除的文件会显示一个 -( 减号 ) 符号。利用 Commit Changes 动作可以很方便的把你的改变提交到 VSS 资源库,当然这是很基本的功能,但我发现它很有用。

Commit Changes 动作尝试添加所有本地文件并检入所有已经检出的文件,在这期间用户将会被提示选择应该添加哪些文件。最后可以很方便的提交所有改变到 VSS 资源库了。

Compare/Merge Viewers (比较 / 融合视图)

要比较单一文件,你应该使用比较视图,就是菜单的 Comapre With 选项。这将打开一个完整的对话框显示本地和资源库文件之间不同的地方。

而在菜单中选择融合操作将显示融合视图,有点像比较视图,但不同的是视图左边的窗口是可以编辑的。

用户可以选择是否显示注释,展开树 / 收缩树,是否显示标签。所有的动作都能在上下菜单中显示。

求助!有些地方看起来不对,视图没有正确显示,上下文菜单也没显示,又出现一些 COM 错误。

如果出现了这些问题,很有可能是出现了未知错误或把一些主要的配置弄错了。你可以尝试移除 .project 中的 <nature>org.vssplugin.core.VSSPluginProvider</nature>并重启 Eclipse 来屏蔽 VSS 插件。然后再重新配置。

另外有可能是你安装 VSS 的地方遭到破坏。通常你看到 COMException 或注册 GUID(registry-GUID) ,说明安装 VSS 的地方遭到破坏。安装最新的服务包应该可以解决这些问题。可以从 http://msdn.microsoft.com/ssafe/ 了解更多信息。

另外,可以在 ” 你的工作区 ”\.metadata\.log 找到 Eclipse 的日志文件。

这个插件似乎不能运行在 WSAD 5.1 中。

因为 WSAD 5.1 是基于 Eclipse2.1 的,所以不被支持。可以用兼容 2.0 的插件来代替。

05-11 11:17