[master] external diff/merge configuration needs serious rework

Bug #489915 reported by Alexander Belchenko on 2009-11-29
This bug affects 7 people
Affects Status Importance Assigned to Milestone
Gordon Tyler
Gordon Tyler
Nominated for Trunk by Ruslan Usifov

Bug Description

There is several bug reports files already , which can be called duplicates, but the truth is: our internal model to configure and work with external diff and merge tools is just awful.

I've just trying to specify merge tool (winMerge) to trying to fix bug https://bugs.launchpad.net/qbzr/+bug/485566, and I found it's completely broken! Because qconfig saves the data in bazaar.conf, but qconflicts then trying to read them from qbzr.conf.

Regarding diff configuration: there is no clue where to enter command line, no Browse button to select application on windows where you have to provide always the full path to application with forward slashes (sic!).

We need refactor core functionality of external diff/merge tools to separate module and teach all clients (qconfig, qdiff, qconflicts, etc.) to use methods from this module.

Also I'd like to get rid support of extmerge. I don't understand what's the benefits of this plugin, but if really need something from there, we just need to merge extmerge to our codebase and adjust it to match our internal architecture.

Also I want to have registry of known diff and merge tools with required command-line options (for launching merge), so user don;t need to even bother to enter long command line and scripting arguments like %t %r etc., just select favorite tool and you're done.

Related branches

Changed in qbzr:
status: New → Confirmed
importance: Undecided → High
tags: added: qconfig qconflicts qdiff
description: updated
summary: - [master] qconfig: diff/merge configuration needs serious rework
+ [master] diff/merge configuration needs serious rework
description: updated
summary: - [master] diff/merge configuration needs serious rework
+ [master] external diff/merge configuration needs serious rework
Craig Hewetson (craighewetson) wrote :

I support integrating extmerge into qbzr, or atleast the functionality of it.

A registry of known 3way merge tools with their parameters makes sense, but we must still allow for unregistered merge tools to work without changing the qbzr code. Maybe we can choose a default order for the %o %b %t %r parameters.

Craig Hewetson (craighewetson) wrote :

i.e: the user only has to choose his external merge tool and if its supported then it works correctly if its not support it will work but we can't guarantee that the BASE OTHER THIS files will be passed to it as it would expect them to be. the default order will be used.

Dr Al (abudden) wrote :

The current method of diff-ing multiple files with an external tool is also really clunky. It would be really nice if you could have two ways of working:

* If you're using a diff tool that supports tabs (e.g. diffuse), click "Using -> Diffuse" and it will open the complete diff with each file pair in a separate tab (diffuse old/%1 new/%1 -t old/%2 new/%2 -t old/%3 new/%3 etc etc etc)

* If you're using a diff tool that doesn't support multiple tabs (e.g. diffmerge), allow the user to select which file is opened. If you have scanned the brief view in qdiff and want to open a particular file in a full viewer with line numbers etc, you currently have to keep quitting the external diff app until you get to the right file, then have to quit it repeatedly afterwards to be able to use qbzr/bzr-explorer again

tags: added: extdiff

I would love to see support for this added soon. In my opinion it is the only thing keeping qbzr from becoming a really sweet platform on Windows. Every time I try to merge a file (even when the external merge is configured) I get a message like "Error running merge tool (code 0)". I can merge by using the command line but then I have to have so many windows open!

Greg (gregspecialsource) wrote :

I wholeheartedly support the comments in this bug description.
Improve it, and they will use it!
Setting up diff and merge is one of the first things a new user will do. Diff and merge operations are some of the most common interactions with the version control system.

Gordon Tyler (doxxx) wrote :

Is anybody working on this? If there isn't, I'll give it a bash.

Alexander Belchenko (bialix) wrote :

Nobody working yet. Please, go ahead.

Gordon Tyler (doxxx) wrote :

So the approach I am taking with this is to first add a mergetools module to bzrlib, which provides support for managing and invoking the user's configured merge tools. Then, change qconflicts to make use of this. A command line interface to invoking a merge tool could also be added to bzr.

Vincent Ladeuil (vila) on 2011-03-17
Changed in bzr:
status: New → Fix Released
assignee: nobody → Gordon Tyler (doxxx)
milestone: none → 2.4b1
Changed in qbzr:
assignee: nobody → Gordon Tyler (doxxx)
status: Confirmed → Fix Committed
milestone: none → 0.21b2
Changed in bzr:
importance: Undecided → Medium
Changed in qbzr:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers