掌握你的 (Tortoise) 版本控制






4.75/5 (4投票s)
在多 SCM 环境中简化管理系统识别的技巧。
背景
我最近一直在处理几个不同的开源项目,这些项目托管在 Google Code、Github、CodePlex 等平台上。这些项目倾向于使用不同的软件进行版本管理,这反过来又需要在开发系统上安装多个 SCM 客户端。
如今,开源项目常用的版本控制软件包括 Subversion、Git 和 Mercurial。默认情况下,版本控制软件通过命令行界面访问。但是,有几种不同的 GUI 包装器可用,可以方便地进行版本控制管理。在 Windows 上,主要使用的是各种 Tortoise 工具。这些工具主要是外壳扩展,允许在 Windows 资源管理器中进行版本控制管理。用于 CVS 版本控制的 TortoiseCVS 是第一个出现的,它启发或构成了 TortoiseSVN、TortoiseGit 和 TortoiseHg 等后续工具的基础。
各种 Tortoise 工具使得版本控制管理更加轻松高效,并且通常没有问题将多个这些工具同时安装在同一台计算机上。
不过,有一个令人讨厌的问题:所有上述工具在 Windows 资源管理器中都使用相同的图标和图标叠加。因此,在 Windows 资源管理器中无法立即确定正在使用哪个版本控制软件来管理特定文件夹。
当然,如果您进入文件夹,如果您已将 Windows 资源管理器配置为显示隐藏文件夹,则会列出版本控制管理子文件夹(.svn、.git、.hg 等)。但这是一种不理想的行为;理想情况下,版本控制软件应通过 Windows 资源管理器列表中的某种指示,或者在鼠标悬停在相关文件夹上时进行检测。
寻找解决方案
如果有人和我一样遇到同样的烦恼,并找到了解决办法,我在 StackOverflow 上发了一个关于这个问题的问题。我收到了一些主要解释*为什么*使用相同图标叠加的答案,然后我还收到了来自 TortoiseSVN 的首席开发人员 Stefan Küng 的一个令人大开眼界的答案。Stefan 建议我使用此处描述的方法来自定义版本控制的顶层文件夹。这正是我想要的:一种自定义文件夹布局*并*在鼠标指针悬停在文件夹上时在工具提示中提供说明性文本的方法!
我唯一剩下的顾虑是,我必须为每个版本控制的文件夹手动进行此自定义,当涉及大量项目时,这将非常繁琐且容易出错。但是,如果开发人员不解决重复性问题,他们还会做什么呢?
因此,我迎难而上,设计了一个简单而高效的控制台应用程序来管理文件夹自定义。该应用程序识别指定文件夹中使用的版本控制软件,添加工具提示,并设置文件夹图标以指示正在使用哪种软件来*版本控制*该文件夹。目前,该应用程序识别 Subversion、Git 和 Mercurial,但如果条件合适(子文件夹中有具有固定名称的版本控制管理文件),则可以轻松扩展此软件列表。应用程序源代码根据开源许可证(Eclipse Public License version 1.0)提供,可在此处获得:https://github.com/cureos/scmdecorator。
在上述图像中的版本控制文件夹上运行该应用程序后,Windows 资源管理器将(刷新几次后)提供以下显示:
将鼠标指针悬停在版本控制装饰的文件夹上将清楚地表明正在使用的版本控制软件。
甚至可以在不更改文件夹图标的情况下运行文件夹装饰器应用程序。如果图标不在文件夹装饰器应用程序的同一目录中,则将保留经典的文件夹图标,但工具提示仍会更新。
图标来自 Open Icon Library。Subversion 图标“不理想”;我找不到更好的*可再分发*的 Subversion 图标。对于个人、不可再分发的用途,有一个更易识别的 Subversion 图标可在此处获得:http://www.veryicon.com/icons/system/smoothicons-12/subversion.html。如果您愿意,可以下载此 Subversion 图标文件,将其重命名为*svn.ico*,并替换 Visual Studio 项目中现有的 Subversion 图标。
祝版本控制愉快!
在哪里找到代码
本文描述的工具的源代码另外可以在 GitHub 上找到:https://github.com/cureos/scmdecorator。
历史
2012 年 12 月 11 日:初始版本,最初发布在我的博客上。
2012 年 12 月 19 日:添加了 GitHub 上的最新源代码修订版。