Rabbitvcs 是linux下一款可视化版本管理工具,使用方式非常像windows下的TortoiseSVN,对于用惯了svn做版本管理工具的人来说是一款非常容易上手的替代软件。
rabbitvcs 有四个组件:rabbitvcs-core,rabbitvcs-cli,rabbitvcs-gedit,文件管理器插件。其中文件管理器插件要看各linux发行版的桌面套件,对于ubuntu来说一般是是rabbitvcs-nautilus,或者对于mint来说就是rabbitvcs-nemo,遗憾的是目前没有mate发行版下caja的插件。
其中,core是核心代码,一般在/usr/lib/python2.7/dist-packages/rabbitvcs或者/usr/share/pyshared/rabbitvcs下面;cli是命令行接口:如果你不用文件管理器插件的话,就可以直接用命令行如rabbitvcs diff这种方式操作,但这种方式的缺点是无法更新文件夹图标的状态;如果习惯用gedit作文本编辑器的话,还可以安装gedit插件,提供版本管理菜单集成。文件管理器插件给可视化桌面用户提供右键菜单,用法和svn一样。要注意不同的文件管理器用不同的插件,否则不生效。因此,只要有core和nautilus插件就能工作,其它的非必须。
Rabbitvcs官网以及安装说明:http://rabbitvcs.org/,目前最新版本为0.16。
但我在ubuntu下安装了0.16之后,发现在当repository browser的时候无法checkout。偶然切换到mint下面,发现mint下默认安装的0.15没有这个问题,于是我在ubuntu下强制安装了0.15的版本,nautilus右键菜单操作依然有几个问题,折腾了很久才解决,记录一下,下文仅适用于ubuntu+nautilus+rabbitvcs0.15。另外,我的仓库subversion服务进程用的是默认的svn协议3690端口,不是http也不是ssh隧道方式连接,不知道这两种方式是否正常,没有测试。
1.diff with base ,弹出来一个ui 对话框,一直loadding 没有反应
原因是调用了陈旧的gnome-open 函数,需要用新的xdg-open,/usr/share/pyshared/rabbitvcs/util/helper.py 474行代码修改为:
2.diff with previos version 没有反应,什么对话框都没有
原因是nautilus插件提供本地文件、对应svn路径的时候参数反转,导致core根据错误的参数回溯,找不到.svn文件夹,判断不出来是什么协议。解决办法:找不到协议的时候默认指定为svn。如下/usr/share/pyshared/rabbitvcs/ui/diff.py第314行插入代码:
3.compare with previos version 没有反应,什么对话框都没有
查看系统日志/var/log/syslog:
Jan 14 20:22:22 ubuntu gnome-session[1383]: Traceback (most recent call last): Jan 14 20:22:22 ubuntu gnome-session[1383]: File "/usr/lib/python2.7/dist-packages/rabbitvcs/util/contextmenu.py", line 406, in compare_tool_previous_revision Jan 14 20:22:22 ubuntu gnome-session[1383]: pathrev1 = rabbitvcs.util.helper.create_path_revision_string(self.vcs_client.get_repo_url(self.paths[0]), previous_revision_number) Jan 14 20:22:22 ubuntu gnome-session[1383]: AttributeError: VCS instance has no attribute 'get_repo_url'
原来,rabbitvcs代码有个很低级的错误,类对象缺失,/usr/share/pyshared/rabbitvcs/util/contextmenu.py 第406行插入".svn()":
ok,ubuntu下rabbitvcs 0.15 就基本能用了。