RabbitVCS 无法在 Ubuntu 16.10 中正确显示与 Meld 的比较修订版本

RabbitVCS 无法在 Ubuntu 16.10 中正确显示与 Meld 的比较修订版本

我在 Nautilus/Ubuntu Gnome 16.10 上使用 RabbitVCS。

我的外部差异工具设置为指向 Meld。

从上下文菜单中,当我选择“查看与以前修订版本的差异”时,我可以看到基于文本的差异。

但是,当我选择与以前的版本进行比较时,RabbitVCS 打开 meld 并显示消息“文件相同”。两个窗格都显示该文件的最新版本。

在“显示日志”窗口中也是如此:如果我选择两个版本,“差异版本”可以正常工作,但“比较版本”会显示“文件相同”

我尝试了以下操作:

  1. 卸载并重新安装 Nautilus、RabbitVCS 和 Meld。
  2. 对于 RabbitVCS,我最初使用的是 PPA,但后来这些说明直接从 yakkety 存储库安装。
  3. 按照以下说明安装 libsvn-java此链接
  4. 创建符号链接并按照以下说明下载最新版本的 RabbitVCS.py此链接
  5. 检查了 ~/.config/rabbitvcs/RabbitVCS.log。没有错误。
  6. 运行svn upgrade并重新启动。
  7. 将外部 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 脚本,您不需要明确地重建任何东西(因此您不需要安装构建工具或依赖项)。

相关内容