On 5 November 2011 09:15, David Aguilar <davvid@xxxxxxxxx> wrote: > On Fri, Nov 04, 2011 at 07:15:01PM +0000, Alexander Usov wrote: >> Hi, >> >> However if the feature branch happened to be long-lived and had >> mainline merged into it it's not going to work -- the >> resulting diff would contain changes from the merge. The way we are >> doing things now is to merge master into it >> once more and then diff, however this is somewhat cumbersome. Is there >> easier way to do it? > > "git diff A...B" is equivalent to "git diff <merge-base A B> B". > The merge-base can be found with "git merge-base A B" > and is simply the common ancestor of A and B. > > Diffing against the merge base (which doesn't contain the merged > work done in master) is why you're seeing the merges in the diff. > > It sounds like you want the simpler form of "diff" which doesn't > do any merge-base calculation. > > e.g. "git diff A B" and its synonymn "git diff A..B". Just diffing 2 revisions (or trees) won't do the trick. Let me try to explain what I'm trying to achieve. Consider the following history: master: A---B---D---F \ \ branch: .-C--E--G Now I want to review the changes made in the branch prior to merging it. What I essentially want to be included in the diff are changes committed in C & G and conflic resolution done in E (if any). There are few ways that I know of to achieve it: - use "git log -p branch ^master " to get a sequence of patches and try to feed them into combinediff tool (part of the diffutils package). This will require some scripting and I'm not really sure if combinediff would work with git patches. - "git diff D..branch" would do a trick, but I'm not sure how to correctly determine D (if I'm to write a script). This would be the last (in topological order) commit which is reachable from both master & branch. Any suggestions on it? >> And while we are on the topic -- is there a tool for git similar to "bzr qdiff"? >> It's a simple graphical diff viewer with 2 nice features -- it shows >> complete diff (of multiple files) in a single window and >> has a checkbox to switch between diff-only & full-text modes. >> I have seen difftool, but it seems to work on per-file basis, and >> something like "vi <(git diff ...)" lacks the easy way to >> switch into full-text mode. > > difftool is a wrapper around specialized diff tools, so the > ability to switch from diff to full view is tool-dependent. > > A contrib "git-dirdiff" script was posted to the list recently. > It builds upon diff tools that can diff directory trees. > > http://thread.gmane.org/gmane.comp.version-control.git/184528 > > There may be a newer version of this script, too. Roland would > know for sure... Thanks. Will have a more carefull look at various tools & see if I can figure something out. -- Best regards, Alexander. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html