我在 Nautilus/Ubuntu Gnome 16.10 上使用 RabbitVCS。
我的外部差异工具设置为指向 Meld。
从上下文菜单中,当我选择“查看与以前修订版本的差异”时,我可以看到基于文本的差异。
但是,当我选择与以前的版本进行比较时,RabbitVCS 打开 meld 并显示消息“文件相同”。两个窗格都显示该文件的最新版本。
在“显示日志”窗口中也是如此:如果我选择两个版本,“差异版本”可以正常工作,但“比较版本”会显示“文件相同”
我尝试了以下操作:
- 卸载并重新安装 Nautilus、RabbitVCS 和 Meld。
- 对于 RabbitVCS,我最初使用的是 PPA,但后来这些说明直接从 yakkety 存储库安装。
- 按照以下说明安装 libsvn-java此链接
- 创建符号链接并按照以下说明下载最新版本的 RabbitVCS.py此链接
- 检查了 ~/.config/rabbitvcs/RabbitVCS.log。没有错误。
- 运行
svn upgrade
并重新启动。 - 将外部 diff 工具从 Meld 更改为 gedit,只是为了检查问题是否出在 meld 上。但 gedit 给出了相同的结果 - 相同的文件。
RabbitVCS:Yakkety 默认版本,0.16.0
Ubuntu:16.10
Nautilus:GNOME nautilus 3.20.3
任何帮助都将不胜感激。是时候停止使用 Rabbit 了吗……?我希望不是。
答案1
这是因为 rabbitvcs-core 版本 0.16-1.1 中出现了一个错误,该版本是 ubuntu repo 中 16.10/yakkety 的版本。该错误导致“与之前的修订版本比较”操作总是导出头部修订版本而不是所需的修订版本。
有人写了一个修复程序,但尚未被接受:这里。
一个简单的解决方案就是将 rabbitvcs-core 降级到 0.16-1,它可以正常工作并在 16.04/xenial 的 ubuntu repo 中可用。不要忘记随后将包标记为已持有,这样软件更新程序就不会对其进行升级。
sudo apt-add-repository "deb http://us.archive.ubuntu.com/ubuntu xenial universe"
sudo apt install rabbitvcs-core=0.16-1
sudo apt-mark hold rabbitvcs-core
答案2
我找到了解决此问题的方法,请执行以下操作:
首先让我们从 Ubuntu 存储库安装最新的官方版本:
sudo apt install rabbitvcs-nautilus
现在让我们安装一些依赖项以便从源代码重建 rabbitvcs:
sudo apt install python-configobj python-gobject python-gtkspellcheck python-svn subversion python-dulwich python-pygments git meld
获取源代码,构建并安装它!
git clone https://github.com/rabbitvcs/rabbitvcs.git
cd rabbitvcs
sudo python setup.py install --install-layout=deb
现在让我们将 RabbitVCS python 脚本复制到 nautilus,这样它就会出现在 nautilus 上下文菜单中:
cd clients/nautilus/
sudo mkdir -p /usr/share/nautilus-python/extensions/
sudo cp RabbitVCS.py /usr/share/nautilus-python/extensions/RabbitVCS.py
** 现在我们将重新启动任何仍打开的 nautilus:请先完成任何工作 **
nautilus -q
pgrep -f service.py | xargs kill
现在就测试一下!
nohup nautilus > /dev/null &
[ 参考 ] RabbitVCS GitHub
答案3
作为一种解决方法,复制修复实际上非常简单:
查找
rabbitvcs/vcs/svn/__init__.py
已安装的位置:dpkg -L rabbitvcs-core | grep svn
打开它进行编辑,例如我的情况:
sudo vi /usr/lib/python2.7/dist-packages/rabbitvcs/vcs/svn/__init__.py
找到
export
方法删除/注释掉第一行有问题的代码,即
revision=Revision("head")
为了安全起见,请重新启动。
瞧,一切按预期工作;作为一个 Python 脚本,您不需要明确地重建任何东西(因此您不需要安装构建工具或依赖项)。