[darcs-users] Getting a full diff for pulled patches

Alexander Staubo alex at purefiction.net
Mon Jul 23 22:31:11 UTC 2007


I am writing a small tool for MacOS X to manage Darcs repos, as a
wrapper around the Darcs command-line tool -- it has a change-aware
repository browser, a visual differ, etc.

I am trying, at the moment, to implement a good user interface for
pulling and pushing patches. Given an upstream repo, the user should
be given a list of local patches that can be pushed and remote patches
that can be pulled.

Moreover, for each in- or outgoing patch you should be able to inspect
the diffs in a two-pane view that shows the modified content in one
pane and the original content in the other, akin to "diff -y".

To do this, I need to find the contents of each side so that I can
display them. The problem is that running "darcs pull --dry-run
--verbose", for instance, does not yield sufficient information.

A file change (hunk) only contains the file name and starting line
number of the ancestor, but the push/pull output does not include the
context. I believe I could also use "darcs changes --context", but
this would only work locally -- to get the context of remote patches I
would need to manually do the SSH connection to run "darcs changes" on
the remote repo -- a pretty awkward hoop to jump through.

Furthermore, once I have the context, I would still have to use "darcs
changes" with "--to-match" in order to reconstruct the ancestor,
piecing each hunk together to form the final content. This, too, is
rather awkward. Added together, these steps will make the diffing
extremely slow.

Any ideas?

Alexander.



More information about the darcs-users mailing list