Re: [PATCH 3/3] diffstat generation in hooks--update was passing "^baserev" to git-diff-tree
- From
Johannes Sixt <j.sixt@eudaptics.com>
- Date
- Feb 13, 2007, 17:16 UTC
- Message-ID
- <45D1F26A.28FEADD8@eudaptics.com>
- In-Reply-To
- <200702131632.37401.andyparkins@gmail.com>
Andy Parkins wrote:
Show 10 quoted lines
> > 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