RabbitVCS是Linux的svn客户端,对于在windows下用惯了TortoiseSVN的人来说,在linux下使用纯命令行的svn命令实在是太折磨人了,RabbitVCS就是一个类似于TortoiseSVN的linux平台工具。
我的linux平台是CentOS6.5,安装RabbitVCS已经好久了,是用yum install安装的0.14.2版本。
当时安装一切正常,但是突然有一天我发现右健菜单中的设置(settings)界面打不开了,当时没有影响svn的提交和更新功能也没理会,这两天必须要使用这个设置界面,却用不成,就不得不想办法解决了。
想升级到最新版本,yum 却没提供更新的版本,必须得自己去RabbitVCS官网下载源码编译,好麻烦。还是决定从现有的版本着手,尝试能不能解决。
这个帖子给了我提示《centos 6 install rabbitvcs》,
我尝试在命令行执行settings菜单显示
rabbitvcs settings
报错如下
Traceback (most recent call last):
File “settings.py”,line 352,in
window = Settings(options.base_dir)
File “settings.py”,line 126,in init
self.get_widget(“pages”).get_nth_page(5).set_visible(show_git)
AttributeError: ‘gtk.VBox’ object has no attribute ‘set_visible’
哈,总算知道错误信息了,这个'gtk.VBox' object has no attribute 'set_visible'
是什么鬼?
我对pythong不熟悉,才入门,只能大概知道就是没有set_visible这个属性。。。
在google上一通乱找,找到这个贴子《[pygtk] Getting widget visibility》又给了我提示,可能是python依赖的pygtk库升级导致的兼容性问题,貌似set_visiable
方法被废弃,改为直接对visiable
变量赋值了。
于是打开/usr/lib/python2.6/site-packages/rabbitvcs/ui/settings.py找到126行set_visible
所在的位置,代码片段如下:
if base_dir:
vcs = rabbitvcs.vcs.VCS()
git_config_files = []
if vcs.is_in_a_or_a_working_copy(base_dir) and vcs.guess(base_dir)["vcs"] == rabbitvcs.vcs.VCS_GIT:
git = vcs.git(base_dir)
git_config_files = git.get_config_files(base_dir)
self.file_editor = rabbitvcs.ui.widget.MultiFileTextEditor(
self.get_widget("git_config_container"),_("Config file:"),git_config_files,show_add_line=False
)
show_git = True
#出错代码位置--本文作者注释 self.get_widget("pages").get_nth_page(5).set_visible(show_git)
self._populate_checker_tab()
先把settings.py备份,然后修改代码,
将self.get_widget("pages").get_nth_page(5).set_visible(show_git)
改为self.get_widget("pages").get_nth_page(5).visible=show_git
。
然后执行
rabbitvcs settings
再执行nautilus -q
更新nautilus
点右键\RabbitVCS SVN\设置,界面正常打开: