Community Packages

Please read this before reporting a bug:
https://wiki.archlinux.org/title/Bug_reporting_guidelines

Do NOT report bugs when a package is just outdated, or it is in the AUR. Use the 'flag out of date' link on the package page, or the Mailing List.

REPEAT: Do NOT report bugs for outdated packages!
Tasklist

FS#65858 - [diffuse] git repo diffs does not work after update to forked project

Attached to Project: Community Packages
Opened by Uffe Jakobsen (uffe) - Tuesday, 17 March 2020, 02:16 GMT
Last edited by Alexander F. Rødseth (xyproto) - Thursday, 19 March 2020, 15:37 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Alexander F. Rødseth (xyproto)
Balló György (City-busz)
Architecture All
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:

Diffuse can no longer do git repo diff operations after update of diffuse to python3 fork of the project

pkg: diffuse-0.5.0alpha7+4+g813d6e7-1

Steps to reproduce:

- change dir into at git repo that has uncommitted changes to file (that are in the repo)
- confirm that there are uncommitted changes with normal git commands such as "git status" and "git diff"
- now run diffuse -m to see the same (uncommitted) modifications in diffuse.

also "diffuse -c <git-sha>" fails

The new fork seems to be really bad and untestet :-(

This task depends upon

Closed by  Alexander F. Rødseth (xyproto)
Thursday, 19 March 2020, 15:37 GMT
Reason for closing:  Fixed
Comment by Doug Newgard (Scimmia) - Tuesday, 17 March 2020, 03:46 GMT
actual errors?
Comment by Uffe Jakobsen (uffe) - Tuesday, 17 March 2020, 10:07 GMT
Well yes (and a lot of deprecation errors that the original diffuse-4.8 did not spew out)

% diffuse -m
/usr/bin/diffuse:6644: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('swapped-panes', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (int, int))
/usr/bin/diffuse:6645: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('num-edits-changed', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (int, ))
/usr/bin/diffuse:6646: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('mode-changed', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
/usr/bin/diffuse:6647: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('cursor-changed', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
/usr/bin/diffuse:6648: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('syntax-changed', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (str, ))
/usr/bin/diffuse:6649: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('format-changed', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (int, int))
/usr/bin/diffuse:8340: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('title-changed', Diffuse.FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (str, ))
/usr/bin/diffuse:8341: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('status-changed', Diffuse.FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (str, ))
/usr/bin/diffuse:8342: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('title-changed', Diffuse.FileDiffViewer.PaneHeader, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
/usr/bin/diffuse:8343: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('open', Diffuse.FileDiffViewer.PaneHeader, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
/usr/bin/diffuse:8344: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('reload', Diffuse.FileDiffViewer.PaneHeader, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
/usr/bin/diffuse:8345: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('save', Diffuse.FileDiffViewer.PaneHeader, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
/usr/bin/diffuse:8346: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
GObject.signal_new('save-as', Diffuse.FileDiffViewer.PaneHeader, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
/usr/bin/diffuse:7421: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "type" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
Gtk.Window.__init__(self, Gtk.WindowType.TOPLEVEL)
/usr/bin/diffuse:7430: DeprecationWarning: Gdk.Screen.width is deprecated
self.int_state['window_x'] = max(0, (Gdk.Screen.width() - self.int_state['window_width']) / 2)
/usr/bin/diffuse:7431: DeprecationWarning: Gdk.Screen.height is deprecated
self.int_state['window_y'] = max(0, (Gdk.Screen.height() - self.int_state['window_height']) / 2)
/usr/bin/diffuse:7453: DeprecationWarning: Gtk.Widget.render_icon is deprecated
p0 = self.render_icon(Gtk.STOCK_NEW, Gtk.IconSize.LARGE_TOOLBAR)
/usr/bin/diffuse:7464: DeprecationWarning: Gtk.IconSet.new_from_pixbuf is deprecated
factory.add(DIFFUSE_STOCK_NEW_2WAY_MERGE, Gtk.IconSet.new_from_pixbuf(p))
/usr/bin/diffuse:7464: DeprecationWarning: Gtk.IconFactory.add is deprecated
factory.add(DIFFUSE_STOCK_NEW_2WAY_MERGE, Gtk.IconSet.new_from_pixbuf(p))
/usr/bin/diffuse:7500: DeprecationWarning: Gtk.IconFactory.add_default is deprecated
factory.add_default()
/usr/bin/diffuse:1177: DeprecationWarning: Gtk.ImageMenuItem.new_with_mnemonic is deprecated
item = Gtk.ImageMenuItem.new_with_mnemonic(spec[0])
/usr/bin/diffuse:1184: DeprecationWarning: Gtk.Image.set_from_stock is deprecated
image.set_from_stock(spec[3], Gtk.IconSize.MENU)
/usr/bin/diffuse:1185: DeprecationWarning: Gtk.ImageMenuItem.set_image is deprecated
item.set_image(image)
/usr/bin/diffuse:7610: DeprecationWarning: Gtk.HBox.new is deprecated
hbox = Gtk.HBox.new(False, 0)
/usr/bin/diffuse:1232: DeprecationWarning: Gtk.VSeparator.new is deprecated
separator = Gtk.VSeparator.new()
Traceback (most recent call last):
File "/usr/bin/diffuse", line 8507, in <module>
funcs[mode](specs, labels, options)
File "/usr/bin/diffuse", line 8020, in createModifiedFileTabs
for specs in vcs.getFolderTemplate(self.prefs, names):
File "/usr/bin/diffuse", line 1882, in getFolderTemplate
for s in popenReadLines(self.root, args, prefs, 'git_bash', [0, 1]):
File "/usr/bin/diffuse", line 1373, in popenReadLines
return strip_eols(splitlines(popenRead(dn, cmd, prefs, bash_pref, success_results)))
File "/usr/bin/diffuse", line 262, in splitlines
j = s.find('\n', i)
TypeError: argument should be integer or bytes-like object, not 'str'
zsh: exit 1 diffuse -m
Comment by Uffe Jakobsen (uffe) - Tuesday, 17 March 2020, 10:10 GMT
The only thing that seems to work is plain traditional file-to-file diffs.

All the advanced (git) repo diff stuff seems to be broken in the new fork - and that was what made diffuse amazing compared to the other "plain file differs"

What I'm trying to say here - is that if there is no easy fix for this one - then the users are better off with the old one.

Comment by Eli Schwartz (eschwartz) - Wednesday, 18 March 2020, 00:16 GMT Comment by Alexander F. Rødseth (xyproto) - Wednesday, 18 March 2020, 20:27 GMT
I'll revert to the old version. Hopefully we can upgrade to python3 not too far in the future (or perhaps move this package to AUR).
Comment by Balló György (City-busz) - Wednesday, 18 March 2020, 20:35 GMT
Please move this package to AUR. We want to remove pygtk from the official repositories.
Comment by Alexander F. Rødseth (xyproto) - Wednesday, 18 March 2020, 20:36 GMT
Neither the old nor the new version works for me here. The font looks wrong and is just a bunch of rectangles. I'll investigate some more before maybe reverting.
Comment by Alexander F. Rødseth (xyproto) - Wednesday, 18 March 2020, 20:50 GMT
A package built from the latest PKGBUILD (the fork) freezes when I try to select a different font from the preferences.
Comment by Uffe Jakobsen (uffe) - Thursday, 19 March 2020, 07:28 GMT
@xyproto: regarding the fonts: something (other than diffuse) must be wrong on your installation (missing deps maybe) - both old and new diffuse (when working) displays correct fonts here...
Comment by Uffe Jakobsen (uffe) - Thursday, 19 March 2020, 10:09 GMT
Ok - I lost my temper with this bug and made a fix to the diffuse fork that fixes the VCS-integration - at least for me.

I made a pull request to the forked diffuse project (https://github.com/MightyCreak/diffuse/pull/27)

The attached patch is quite simple one-liner change - but it works for me :-)

PS: this patch doesn't remove the deprecation warnings - but I can live with that - as long as it works

PPS: the forked diffuse already has a pull request that according to the requester should remove som warinigs.


Comment by Alexander F. Rødseth (xyproto) - Thursday, 19 March 2020, 15:36 GMT
I'm not sure if it's still the case, but some while back, `diffuse` worked great with Sway/Wayland, while there were issues with `meld`. It can be good to have alternatives.

I'm updating the package to use the patches from the pull requests at `github.com/MightyCreak/diffuse`.

I tried `diffuse` on a different computer, and had no font-related issues. On my current machine, `diffuse` seems to work as it should.

The updated package will appear in [community] shortly.
Comment by Alexander F. Rødseth (xyproto) - Thursday, 19 March 2020, 15:37 GMT
And thanks for the patch, Uffe. Thumbs up.

Loading...