using `-m` or `--merges-only` will only show the merge
commit messages. It will also use the body of the merge
commit message in addition to the subject, as github merges
usually have a useless subject line for commit messages.
If used with `-n/--no-merges`, the last one specified will win.
Previously the `?` in the case statement will match any single letter.
As a result, `git scp a` will act as the same as `git scp -h`.
What we actually need is a literal '?'.
The output of `git log` is not exactly in chronological order. The
default sort option (--date-order) is described in the man page as
follows:
Show no parents before all of its children are shown, but otherwise
show commits in the commit timestamp order.
The `uniq` program will only remove duplicate lines if they follow each
other. In order for this to work correctly, we need to ensure that the
list of dates is exactly in chronological order. There doesn't seem to
be a `git log` option to achieve this, but we can use the `sort`
program. I used reverse sort (`sort -r`) since the output will be roughly
reverse-sorted already.
It's also worth noting that the default --date-order option sorts by
commit date, but git-summary uses *author* date (%ai). Passing
--author-date-order doesn't fix this issue, though, so I didn't change
that.
At the time of writing, this change reduces the number of 'active days'
for git-extras.git from 367 to 331.
Why:
* The old way of handling arguments could make it
difficult to make non-breaking changes because
to be able to handle more arguments than the
'--above' argument, the logic would need to be heavily
refactored and demand restrictions on argument order.
This change addresses the need by:
* Parse arguments in a cleaner way
* Make the command more future proof with respect to arguments
Notable change is the synopsis. Please the see man page.