diff: parse separate options like -S foo

Change the option parsing logic in revision.c to accept separate forms
like `-S foo' in addition to `-Sfoo'. The rest of git already accepted
this form, but revision.c still used its own option parsing.

Short options affected are -S<string>, -l<num> and -O<orderfile>, for
which an empty string wouldn't make sense, hence -<option> <arg> isn't
ambiguous.

This patch does not handle --stat-name-width and --stat-width, which are
special-cases where diff_long_opt do not apply. They are handled in a
separate patch to ease review.

Original patch by Matthieu Moy, plus refactoring by Jonathan Nieder.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Matthieu Moy
2010-08-05 10:22:52 +02:00
committed by Junio C Hamano
parent 64fdc08dac
commit dea007fb4c
5 changed files with 95 additions and 23 deletions

View File

@ -208,6 +208,7 @@ log -p --first-parent master
log -m -p --first-parent master
log -m -p master
log -SF master
log -S F master
log -SF -p master
log --decorate --all
log --decorate=full --all
@ -282,4 +283,8 @@ diff master master^ side
diff --dirstat master~1 master~2
EOF
test_expect_success 'log -S requires an argument' '
test_must_fail git log -S
'
test_done