Andy Parkins wrote: > > You still need to derive a merge-base, but only to detect the forced > > update and to format the message. Then you should use --not $baserev > > instead of ^$baserev just in case there is more than one merge-base. > > Are you suggesting something like this? > > git-rev-parse --not --all $baserev | git-rev-list --stdin --pretty $newrev > > Which would start showing from $newrev but would exclude all baserevs and all > existing branches. You are using ^$baserev in two instances. (1) in a for loop which obviously is intended as a table of contents (revs plus rev-type (can this be anything else than 'commit'?)). Here you should use git-rev-list $newrev --not $baserev (2) later to print the log messages for all new revs. Here you use just this: git-rev-list --pretty $oldrev..$newrev Then the diffstat: git-diff-tree --no-color --stat -M -C --find-copies-harder \ $oldrev $newrev This reflects the modifications of the revisions that have just been listed *only* in the fast-forward case. But even in the forced update case it tells how the old tree transformed into the new tree, and for this reason nothing more complicated is needed, IMO. -- Hannes - 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