2007-12-25 19:06:47 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
test_description='git log'
|
|
|
|
|
|
|
|
. ./test-lib.sh
|
2014-07-09 10:10:21 +08:00
|
|
|
. "$TEST_DIRECTORY/lib-gpg.sh"
|
2017-03-24 13:46:31 +08:00
|
|
|
. "$TEST_DIRECTORY/lib-terminal.sh"
|
2007-12-25 19:06:47 +08:00
|
|
|
|
|
|
|
test_expect_success setup '
|
|
|
|
|
|
|
|
echo one >one &&
|
|
|
|
git add one &&
|
|
|
|
test_tick &&
|
|
|
|
git commit -m initial &&
|
|
|
|
|
|
|
|
echo ichi >one &&
|
|
|
|
git add one &&
|
|
|
|
test_tick &&
|
|
|
|
git commit -m second &&
|
|
|
|
|
2009-01-23 00:37:24 +08:00
|
|
|
git mv one ichi &&
|
2007-12-25 19:06:47 +08:00
|
|
|
test_tick &&
|
|
|
|
git commit -m third &&
|
|
|
|
|
2009-01-23 00:37:24 +08:00
|
|
|
cp ichi ein &&
|
|
|
|
git add ein &&
|
2007-12-25 19:06:47 +08:00
|
|
|
test_tick &&
|
|
|
|
git commit -m fourth &&
|
|
|
|
|
2009-01-23 00:37:24 +08:00
|
|
|
mkdir a &&
|
|
|
|
echo ni >a/two &&
|
|
|
|
git add a/two &&
|
|
|
|
test_tick &&
|
|
|
|
git commit -m fifth &&
|
|
|
|
|
|
|
|
git rm a/two &&
|
2007-12-25 19:06:47 +08:00
|
|
|
test_tick &&
|
2009-01-23 00:37:24 +08:00
|
|
|
git commit -m sixth
|
2007-12-25 19:06:47 +08:00
|
|
|
|
|
|
|
'
|
|
|
|
|
2009-02-25 05:06:37 +08:00
|
|
|
printf "sixth\nfifth\nfourth\nthird\nsecond\ninitial" > expect
|
|
|
|
test_expect_success 'pretty' '
|
|
|
|
|
|
|
|
git log --pretty="format:%s" > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
printf "sixth\nfifth\nfourth\nthird\nsecond\ninitial\n" > expect
|
|
|
|
test_expect_success 'pretty (tformat)' '
|
|
|
|
|
|
|
|
git log --pretty="tformat:%s" > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'pretty (shortcut)' '
|
|
|
|
|
|
|
|
git log --pretty="%s" > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'format' '
|
|
|
|
|
|
|
|
git log --format="%s" > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2009-11-23 00:15:29 +08:00
|
|
|
cat > expect << EOF
|
|
|
|
This is
|
|
|
|
the sixth
|
|
|
|
commit.
|
|
|
|
This is
|
|
|
|
the fifth
|
|
|
|
commit.
|
|
|
|
EOF
|
|
|
|
|
utf8: fix off-by-one wrapping of text
The wrapping logic in strbuf_add_wrapped_text() does currently not allow
lines that entirely fill the allowed width, instead it wraps the line one
character too early.
For example, the text "This is the sixth commit." formatted via
"%w(11,1,2)" (wrap at 11 characters, 1 char indent of first line, 2 char
indent of following lines) results in four lines: " This is", " the",
" sixth", " commit." This is wrong, because " the sixth" is exactly
11 characters long, and thus allowed.
Fix this by allowing the (width+1) character of a line to be a valid
wrapping point if it is a whitespace character.
Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-10-18 22:43:28 +08:00
|
|
|
test_expect_success 'format %w(11,1,2)' '
|
2009-11-23 00:15:29 +08:00
|
|
|
|
utf8: fix off-by-one wrapping of text
The wrapping logic in strbuf_add_wrapped_text() does currently not allow
lines that entirely fill the allowed width, instead it wraps the line one
character too early.
For example, the text "This is the sixth commit." formatted via
"%w(11,1,2)" (wrap at 11 characters, 1 char indent of first line, 2 char
indent of following lines) results in four lines: " This is", " the",
" sixth", " commit." This is wrong, because " the sixth" is exactly
11 characters long, and thus allowed.
Fix this by allowing the (width+1) character of a line to be a valid
wrapping point if it is a whitespace character.
Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-10-18 22:43:28 +08:00
|
|
|
git log -2 --format="%w(11,1,2)This is the %s commit." > actual &&
|
2009-11-23 00:15:29 +08:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'format %w(,1,2)' '
|
|
|
|
|
|
|
|
git log -2 --format="%w(,1,2)This is%nthe %s%ncommit." > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2009-02-25 05:06:37 +08:00
|
|
|
cat > expect << EOF
|
|
|
|
804a787 sixth
|
|
|
|
394ef78 fifth
|
|
|
|
5d31159 fourth
|
|
|
|
2fbe8c0 third
|
|
|
|
f7dab8e second
|
|
|
|
3a2fdcb initial
|
|
|
|
EOF
|
|
|
|
test_expect_success 'oneline' '
|
|
|
|
|
|
|
|
git log --oneline > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2007-12-25 19:06:47 +08:00
|
|
|
test_expect_success 'diff-filter=A' '
|
|
|
|
|
2016-02-25 16:59:21 +08:00
|
|
|
git log --no-renames --pretty="format:%s" --diff-filter=A HEAD > actual &&
|
|
|
|
git log --no-renames --pretty="format:%s" --diff-filter A HEAD > actual-separate &&
|
2010-08-05 16:22:52 +08:00
|
|
|
printf "fifth\nfourth\nthird\ninitial" > expect &&
|
|
|
|
test_cmp expect actual &&
|
|
|
|
test_cmp expect actual-separate
|
2007-12-25 19:06:47 +08:00
|
|
|
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'diff-filter=M' '
|
|
|
|
|
|
|
|
actual=$(git log --pretty="format:%s" --diff-filter=M HEAD) &&
|
|
|
|
expect=$(echo second) &&
|
2015-03-20 18:09:00 +08:00
|
|
|
verbose test "$actual" = "$expect"
|
2007-12-25 19:06:47 +08:00
|
|
|
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'diff-filter=D' '
|
|
|
|
|
2016-02-25 16:59:21 +08:00
|
|
|
actual=$(git log --no-renames --pretty="format:%s" --diff-filter=D HEAD) &&
|
2009-01-23 00:37:24 +08:00
|
|
|
expect=$(echo sixth ; echo third) &&
|
2015-03-20 18:09:00 +08:00
|
|
|
verbose test "$actual" = "$expect"
|
2009-01-23 00:37:24 +08:00
|
|
|
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'diff-filter=R' '
|
|
|
|
|
|
|
|
actual=$(git log -M --pretty="format:%s" --diff-filter=R HEAD) &&
|
|
|
|
expect=$(echo third) &&
|
2015-03-20 18:09:00 +08:00
|
|
|
verbose test "$actual" = "$expect"
|
2009-01-23 00:37:24 +08:00
|
|
|
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'diff-filter=C' '
|
|
|
|
|
|
|
|
actual=$(git log -C -C --pretty="format:%s" --diff-filter=C HEAD) &&
|
|
|
|
expect=$(echo fourth) &&
|
2015-03-20 18:09:00 +08:00
|
|
|
verbose test "$actual" = "$expect"
|
2009-01-23 00:37:24 +08:00
|
|
|
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'git log --follow' '
|
|
|
|
|
|
|
|
actual=$(git log --follow --pretty="format:%s" ichi) &&
|
|
|
|
expect=$(echo third ; echo second ; echo initial) &&
|
2015-03-20 18:09:00 +08:00
|
|
|
verbose test "$actual" = "$expect"
|
2015-07-08 09:29:34 +08:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'git config log.follow works like --follow' '
|
|
|
|
test_config log.follow true &&
|
|
|
|
actual=$(git log --pretty="format:%s" ichi) &&
|
|
|
|
expect=$(echo third ; echo second ; echo initial) &&
|
|
|
|
verbose test "$actual" = "$expect"
|
|
|
|
'
|
2007-12-25 19:06:47 +08:00
|
|
|
|
2015-07-08 09:29:34 +08:00
|
|
|
test_expect_success 'git config log.follow does not die with multiple paths' '
|
|
|
|
test_config log.follow true &&
|
|
|
|
git log --pretty="format:%s" ichi ein
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'git config log.follow does not die with no paths' '
|
|
|
|
test_config log.follow true &&
|
|
|
|
git log --
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'git config log.follow is overridden by --no-follow' '
|
|
|
|
test_config log.follow true &&
|
|
|
|
actual=$(git log --no-follow --pretty="format:%s" ichi) &&
|
|
|
|
expect="third" &&
|
|
|
|
verbose test "$actual" = "$expect"
|
2007-12-25 19:06:47 +08:00
|
|
|
'
|
|
|
|
|
2009-07-17 22:28:06 +08:00
|
|
|
cat > expect << EOF
|
|
|
|
804a787 sixth
|
|
|
|
394ef78 fifth
|
|
|
|
5d31159 fourth
|
|
|
|
EOF
|
|
|
|
test_expect_success 'git log --no-walk <commits> sorts by commit time' '
|
|
|
|
git log --no-walk --oneline 5d31159 804a787 394ef78 > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
teach log --no-walk=unsorted, which avoids sorting
When 'git log' is passed the --no-walk option, no revision walk takes
place, naturally. Perhaps somewhat surprisingly, however, the provided
revisions still get sorted by commit date. So e.g 'git log --no-walk
HEAD HEAD~1' and 'git log --no-walk HEAD~1 HEAD' give the same result
(unless the two revisions share the commit date, in which case they
will retain the order given on the command line). As the commit that
introduced --no-walk (8e64006 (Teach revision machinery about
--no-walk, 2007-07-24)) points out, the sorting is intentional, to
allow things like
git log --abbrev-commit --pretty=oneline --decorate --all --no-walk
to show all refs in order by commit date.
But there are also other cases where the sorting is not wanted, such
as
<command producing revisions in order> |
git log --oneline --no-walk --stdin
To accomodate both cases, leave the decision of whether or not to sort
up to the caller, by allowing --no-walk={sorted,unsorted}, defaulting
to 'sorted' for backward-compatibility reasons.
Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-08-29 14:15:54 +08:00
|
|
|
test_expect_success 'git log --no-walk=sorted <commits> sorts by commit time' '
|
|
|
|
git log --no-walk=sorted --oneline 5d31159 804a787 394ef78 > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2016-09-01 07:27:20 +08:00
|
|
|
cat > expect << EOF
|
|
|
|
=== 804a787 sixth
|
|
|
|
=== 394ef78 fifth
|
|
|
|
=== 5d31159 fourth
|
|
|
|
EOF
|
|
|
|
test_expect_success 'git log --line-prefix="=== " --no-walk <commits> sorts by commit time' '
|
|
|
|
git log --line-prefix="=== " --no-walk --oneline 5d31159 804a787 394ef78 > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2009-07-17 22:28:06 +08:00
|
|
|
cat > expect << EOF
|
|
|
|
5d31159 fourth
|
|
|
|
804a787 sixth
|
|
|
|
394ef78 fifth
|
|
|
|
EOF
|
teach log --no-walk=unsorted, which avoids sorting
When 'git log' is passed the --no-walk option, no revision walk takes
place, naturally. Perhaps somewhat surprisingly, however, the provided
revisions still get sorted by commit date. So e.g 'git log --no-walk
HEAD HEAD~1' and 'git log --no-walk HEAD~1 HEAD' give the same result
(unless the two revisions share the commit date, in which case they
will retain the order given on the command line). As the commit that
introduced --no-walk (8e64006 (Teach revision machinery about
--no-walk, 2007-07-24)) points out, the sorting is intentional, to
allow things like
git log --abbrev-commit --pretty=oneline --decorate --all --no-walk
to show all refs in order by commit date.
But there are also other cases where the sorting is not wanted, such
as
<command producing revisions in order> |
git log --oneline --no-walk --stdin
To accomodate both cases, leave the decision of whether or not to sort
up to the caller, by allowing --no-walk={sorted,unsorted}, defaulting
to 'sorted' for backward-compatibility reasons.
Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-08-29 14:15:54 +08:00
|
|
|
test_expect_success 'git log --no-walk=unsorted <commits> leaves list of commits as given' '
|
|
|
|
git log --no-walk=unsorted --oneline 5d31159 804a787 394ef78 > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2009-07-17 22:28:06 +08:00
|
|
|
test_expect_success 'git show <commits> leaves list of commits as given' '
|
|
|
|
git show --oneline -s 5d31159 804a787 394ef78 > actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2008-08-25 14:15:05 +08:00
|
|
|
test_expect_success 'setup case sensitivity tests' '
|
|
|
|
echo case >one &&
|
|
|
|
test_tick &&
|
2010-10-31 09:46:54 +08:00
|
|
|
git add one &&
|
2008-08-25 14:15:05 +08:00
|
|
|
git commit -a -m Second
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'log --grep' '
|
|
|
|
echo second >expect &&
|
|
|
|
git log -1 --pretty="tformat:%s" --grep=sec >actual &&
|
log: teach --invert-grep option
"git log --grep=<string>" shows only commits with messages that
match the given string, but sometimes it is useful to be able to
show only commits that do *not* have certain messages (e.g. "show
me ones that are not FIXUP commits").
Originally, we had the invert-grep flag in grep_opt, but because
"git grep --invert-grep" does not make sense except in conjunction
with "--files-with-matches", which is already covered by
"--files-without-matches", it was moved it to revisions structure.
To have the flag there expresses the function to the feature better.
When the newly inserted two tests run, the history would have commits
with messages "initial", "second", "third", "fourth", "fifth", "sixth"
and "Second", committed in this order. The commits that does not match
either "th" or "Sec" is "second" and "initial". For the case insensitive
case only "initial" matches.
Signed-off-by: Christoph Junghans <ottxor@gentoo.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2015-01-13 09:33:32 +08:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
cat > expect << EOF
|
|
|
|
second
|
|
|
|
initial
|
|
|
|
EOF
|
|
|
|
test_expect_success 'log --invert-grep --grep' '
|
|
|
|
git log --pretty="tformat:%s" --invert-grep --grep=th --grep=Sec >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'log --invert-grep --grep -i' '
|
|
|
|
echo initial >expect &&
|
|
|
|
git log --pretty="tformat:%s" --invert-grep -i --grep=th --grep=Sec >actual &&
|
2008-08-25 14:15:05 +08:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
2007-12-25 19:06:47 +08:00
|
|
|
|
2010-08-05 16:22:55 +08:00
|
|
|
test_expect_success 'log --grep option parsing' '
|
|
|
|
echo second >expect &&
|
|
|
|
git log -1 --pretty="tformat:%s" --grep sec >actual &&
|
|
|
|
test_cmp expect actual &&
|
|
|
|
test_must_fail git log -1 --pretty="tformat:%s" --grep
|
|
|
|
'
|
|
|
|
|
2008-08-25 14:15:05 +08:00
|
|
|
test_expect_success 'log -i --grep' '
|
|
|
|
echo Second >expect &&
|
|
|
|
git log -1 --pretty="tformat:%s" -i --grep=sec >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'log --grep -i' '
|
|
|
|
echo Second >expect &&
|
|
|
|
git log -1 --pretty="tformat:%s" --grep=sec -i >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
2007-12-25 19:06:47 +08:00
|
|
|
|
2012-10-04 05:50:51 +08:00
|
|
|
test_expect_success 'log -F -E --grep=<ere> uses ere' '
|
|
|
|
echo second >expect &&
|
|
|
|
git log -1 --pretty="tformat:%s" -F -E --grep=s.c.nd >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
grep: further simplify setting the pattern type
When c5c31d33 (grep: move pattern-type bits support to top-level
grep.[ch], 2012-10-03) introduced grep_commit_pattern_type() helper
function, the intention was to allow the users of grep API to having
to fiddle only with .pattern_type_option (which can be set to "fixed",
"basic", "extended", and "pcre"), and then immediately before compiling
the pattern strings for use, call grep_commit_pattern_type() to have
it prepare various bits in the grep_opt structure (like .fixed,
.regflags, etc.).
However, grep_set_pattern_type_option() helper function the grep API
internally uses were left as an external function by mistake. This
function shouldn't have been made callable by the users of the API.
Later when the grep API was used in revision traversal machinery,
the caller then mistakenly started calling the function around
34a4ae55 (log --grep: use the same helper to set -E/-F options as
"git grep", 2012-10-03), instead of setting the .pattern_type_option
field and letting the grep_commit_pattern_type() to take care of the
details.
This caused an unnecessary bug that made a configured
grep.patternType take precedence over the command line options
(e.g. --basic-regexp, --fixed-strings) in "git log" family of
commands.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-07-23 02:43:14 +08:00
|
|
|
test_expect_success 'log with grep.patternType configuration' '
|
|
|
|
>expect &&
|
|
|
|
git -c grep.patterntype=fixed \
|
|
|
|
log -1 --pretty=tformat:%s --grep=s.c.nd >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'log with grep.patternType configuration and command line' '
|
|
|
|
echo second >expect &&
|
|
|
|
git -c grep.patterntype=fixed \
|
|
|
|
log -1 --pretty=tformat:%s --basic-regexp --grep=s.c.nd >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2009-02-19 19:13:38 +08:00
|
|
|
cat > expect <<EOF
|
|
|
|
* Second
|
|
|
|
* sixth
|
|
|
|
* fifth
|
|
|
|
* fourth
|
|
|
|
* third
|
|
|
|
* second
|
|
|
|
* initial
|
|
|
|
EOF
|
|
|
|
|
|
|
|
test_expect_success 'simple log --graph' '
|
|
|
|
git log --graph --pretty=tformat:%s >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2016-09-01 07:27:20 +08:00
|
|
|
cat > expect <<EOF
|
|
|
|
123 * Second
|
|
|
|
123 * sixth
|
|
|
|
123 * fifth
|
|
|
|
123 * fourth
|
|
|
|
123 * third
|
|
|
|
123 * second
|
|
|
|
123 * initial
|
|
|
|
EOF
|
|
|
|
|
|
|
|
test_expect_success 'simple log --graph --line-prefix="123 "' '
|
|
|
|
git log --graph --line-prefix="123 " --pretty=tformat:%s >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2009-02-19 19:13:38 +08:00
|
|
|
test_expect_success 'set up merge history' '
|
|
|
|
git checkout -b side HEAD~4 &&
|
|
|
|
test_commit side-1 1 1 &&
|
|
|
|
test_commit side-2 2 2 &&
|
|
|
|
git checkout master &&
|
|
|
|
git merge side
|
|
|
|
'
|
|
|
|
|
|
|
|
cat > expect <<\EOF
|
|
|
|
* Merge branch 'side'
|
|
|
|
|\
|
|
|
|
| * side-2
|
|
|
|
| * side-1
|
|
|
|
* | Second
|
|
|
|
* | sixth
|
|
|
|
* | fifth
|
|
|
|
* | fourth
|
|
|
|
|/
|
|
|
|
* third
|
|
|
|
* second
|
|
|
|
* initial
|
|
|
|
EOF
|
|
|
|
|
|
|
|
test_expect_success 'log --graph with merge' '
|
|
|
|
git log --graph --date-order --pretty=tformat:%s |
|
2010-01-27 07:08:31 +08:00
|
|
|
sed "s/ *\$//" >actual &&
|
2009-02-19 19:13:38 +08:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2016-09-01 07:27:20 +08:00
|
|
|
cat > expect <<\EOF
|
|
|
|
| | | * Merge branch 'side'
|
|
|
|
| | | |\
|
|
|
|
| | | | * side-2
|
|
|
|
| | | | * side-1
|
|
|
|
| | | * | Second
|
|
|
|
| | | * | sixth
|
|
|
|
| | | * | fifth
|
|
|
|
| | | * | fourth
|
|
|
|
| | | |/
|
|
|
|
| | | * third
|
|
|
|
| | | * second
|
|
|
|
| | | * initial
|
|
|
|
EOF
|
|
|
|
|
|
|
|
test_expect_success 'log --graph --line-prefix="| | | " with merge' '
|
|
|
|
git log --line-prefix="| | | " --graph --date-order --pretty=tformat:%s |
|
|
|
|
sed "s/ *\$//" >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2017-01-19 19:41:23 +08:00
|
|
|
cat > expect.colors <<\EOF
|
|
|
|
* Merge branch 'side'
|
|
|
|
<BLUE>|<RESET><CYAN>\<RESET>
|
|
|
|
<BLUE>|<RESET> * side-2
|
|
|
|
<BLUE>|<RESET> * side-1
|
|
|
|
* <CYAN>|<RESET> Second
|
|
|
|
* <CYAN>|<RESET> sixth
|
|
|
|
* <CYAN>|<RESET> fifth
|
|
|
|
* <CYAN>|<RESET> fourth
|
|
|
|
<CYAN>|<RESET><CYAN>/<RESET>
|
|
|
|
* third
|
|
|
|
* second
|
|
|
|
* initial
|
|
|
|
EOF
|
|
|
|
|
|
|
|
test_expect_success 'log --graph with merge with log.graphColors' '
|
color_parse_mem: allow empty color spec
Prior to c2f41bf52 (color.c: fix color_parse_mem() with
value_len == 0, 2017-01-19), the empty string was
interpreted as a color "reset". This was an accidental
outcome, and that commit turned it into an error.
However, scripts may pass the empty string as a default
value to "git config --get-color" to disable color when the
value is not defined. The git-add--interactive script does
this. As a result, the script is unusable since c2f41bf52
unless you have color.diff.plain defined (if it is defined,
then we don't parse the empty default at all).
Our test scripts didn't notice the recent breakage because
they run without a terminal, and thus without color. They
never hit this code path at all. And nobody noticed the
original buggy "reset" behavior, because it was effectively
a noop.
Let's fix the code to have an empty color name produce an
empty sequence of color codes. The tests need a few fixups:
- we'll add a new test in t4026 to cover this case. But
note that we need to tweak the color() helper. While
we're there, let's factor out the literal ANSI ESC
character. Otherwise it makes the diff quite hard to
read.
- we'll add a basic sanity-check in t4026 that "git add
-p" works at all when color is enabled. That would have
caught this bug, as well as any others that are specific
to the color code paths.
- 73c727d69 (log --graph: customize the graph lines with
config log.graphColors, 2017-01-19) added a test to
t4202 that checks some "invalid" graph color config.
Since ",, blue" before yielded only "blue" as valid, and
now yields "empty, empty, blue", we don't match the
expected output.
One way to fix this would be to change the expectation
to the empty color strings. But that makes the test much
less interesting, since we show only two graph lines,
both of which would be colorless.
Since the empty-string case is now covered by t4026,
let's remove them entirely here. They're just in the way
of the primary thing the test is supposed to be
checking.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-02-01 08:21:29 +08:00
|
|
|
test_config log.graphColors " blue,invalid-color, cyan, red , " &&
|
2017-01-19 19:41:23 +08:00
|
|
|
git log --color=always --graph --date-order --pretty=tformat:%s |
|
|
|
|
test_decode_color | sed "s/ *\$//" >actual &&
|
|
|
|
test_cmp expect.colors actual
|
|
|
|
'
|
|
|
|
|
2009-07-25 07:45:00 +08:00
|
|
|
test_expect_success 'log --raw --graph -m with merge' '
|
|
|
|
git log --raw --graph --oneline -m master | head -n 500 >actual &&
|
|
|
|
grep "initial" actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'diff-tree --graph' '
|
|
|
|
git diff-tree --graph master^ | head -n 500 >actual &&
|
|
|
|
grep "one" actual
|
|
|
|
'
|
|
|
|
|
2009-02-19 19:13:38 +08:00
|
|
|
cat > expect <<\EOF
|
|
|
|
* commit master
|
|
|
|
|\ Merge: A B
|
|
|
|
| | Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | Merge branch 'side'
|
|
|
|
| |
|
|
|
|
| * commit side
|
|
|
|
| | Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | side-2
|
|
|
|
| |
|
|
|
|
| * commit tags/side-1
|
|
|
|
| | Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | side-1
|
|
|
|
| |
|
|
|
|
* | commit master~1
|
|
|
|
| | Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | Second
|
|
|
|
| |
|
|
|
|
* | commit master~2
|
|
|
|
| | Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | sixth
|
|
|
|
| |
|
|
|
|
* | commit master~3
|
|
|
|
| | Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | fifth
|
|
|
|
| |
|
|
|
|
* | commit master~4
|
|
|
|
|/ Author: A U Thor <author@example.com>
|
|
|
|
|
|
|
|
|
| fourth
|
|
|
|
|
|
|
|
|
* commit tags/side-1~1
|
|
|
|
| Author: A U Thor <author@example.com>
|
|
|
|
|
|
|
|
|
| third
|
|
|
|
|
|
|
|
|
* commit tags/side-1~2
|
|
|
|
| Author: A U Thor <author@example.com>
|
|
|
|
|
|
|
|
|
| second
|
|
|
|
|
|
|
|
|
* commit tags/side-1~3
|
|
|
|
Author: A U Thor <author@example.com>
|
|
|
|
|
|
|
|
initial
|
|
|
|
EOF
|
|
|
|
|
|
|
|
test_expect_success 'log --graph with full output' '
|
|
|
|
git log --graph --date-order --pretty=short |
|
|
|
|
git name-rev --name-only --stdin |
|
2010-01-27 07:08:31 +08:00
|
|
|
sed "s/Merge:.*/Merge: A B/;s/ *\$//" >actual &&
|
2009-02-19 19:13:38 +08:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'set up more tangled history' '
|
|
|
|
git checkout -b tangle HEAD~6 &&
|
|
|
|
test_commit tangle-a tangle-a a &&
|
|
|
|
git merge master~3 &&
|
|
|
|
git merge side~1 &&
|
|
|
|
git checkout master &&
|
2009-04-23 05:27:15 +08:00
|
|
|
git merge tangle &&
|
|
|
|
git checkout -b reach &&
|
|
|
|
test_commit reach &&
|
|
|
|
git checkout master &&
|
|
|
|
git checkout -b octopus-a &&
|
|
|
|
test_commit octopus-a &&
|
|
|
|
git checkout master &&
|
|
|
|
git checkout -b octopus-b &&
|
|
|
|
test_commit octopus-b &&
|
|
|
|
git checkout master &&
|
|
|
|
test_commit seventh &&
|
2010-10-31 09:46:54 +08:00
|
|
|
git merge octopus-a octopus-b &&
|
2009-04-23 05:27:15 +08:00
|
|
|
git merge reach
|
2009-02-19 19:13:38 +08:00
|
|
|
'
|
|
|
|
|
|
|
|
cat > expect <<\EOF
|
2011-11-05 12:31:28 +08:00
|
|
|
* Merge tag 'reach'
|
2009-04-23 05:27:15 +08:00
|
|
|
|\
|
|
|
|
| \
|
|
|
|
| \
|
2011-11-05 12:31:28 +08:00
|
|
|
*-. \ Merge tags 'octopus-a' and 'octopus-b'
|
2009-04-23 05:27:15 +08:00
|
|
|
|\ \ \
|
|
|
|
* | | | seventh
|
|
|
|
| | * | octopus-b
|
|
|
|
| |/ /
|
|
|
|
|/| |
|
|
|
|
| * | octopus-a
|
|
|
|
|/ /
|
|
|
|
| * reach
|
|
|
|
|/
|
2009-02-19 19:13:38 +08:00
|
|
|
* Merge branch 'tangle'
|
|
|
|
|\
|
|
|
|
| * Merge branch 'side' (early part) into tangle
|
|
|
|
| |\
|
|
|
|
| * \ Merge branch 'master' (early part) into tangle
|
|
|
|
| |\ \
|
|
|
|
| * | | tangle-a
|
|
|
|
* | | | Merge branch 'side'
|
|
|
|
|\ \ \ \
|
|
|
|
| * | | | side-2
|
2009-04-21 20:47:01 +08:00
|
|
|
| | |_|/
|
2009-02-19 19:13:38 +08:00
|
|
|
| |/| |
|
|
|
|
| * | | side-1
|
|
|
|
* | | | Second
|
|
|
|
* | | | sixth
|
2009-04-21 20:47:01 +08:00
|
|
|
| |_|/
|
2009-02-19 19:13:38 +08:00
|
|
|
|/| |
|
|
|
|
* | | fifth
|
|
|
|
* | | fourth
|
|
|
|
|/ /
|
|
|
|
* | third
|
|
|
|
|/
|
|
|
|
* second
|
|
|
|
* initial
|
|
|
|
EOF
|
|
|
|
|
2009-04-27 03:29:13 +08:00
|
|
|
test_expect_success 'log --graph with merge' '
|
2009-02-19 19:13:38 +08:00
|
|
|
git log --graph --date-order --pretty=tformat:%s |
|
2010-01-27 07:08:31 +08:00
|
|
|
sed "s/ *\$//" >actual &&
|
2009-02-19 19:13:38 +08:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2010-02-18 02:20:49 +08:00
|
|
|
test_expect_success 'log.decorate configuration' '
|
2017-03-24 13:46:31 +08:00
|
|
|
git log --oneline --no-decorate >expect.none &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline --decorate >expect.short &&
|
|
|
|
git log --oneline --decorate=full >expect.full &&
|
2010-02-18 02:20:49 +08:00
|
|
|
|
|
|
|
echo "[log] decorate" >>.git/config &&
|
2010-04-07 05:48:55 +08:00
|
|
|
git log --oneline >actual &&
|
2010-04-09 01:17:17 +08:00
|
|
|
test_cmp expect.short actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
|
2013-03-25 05:06:06 +08:00
|
|
|
test_config log.decorate true &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.short actual &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline --decorate=full >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.full actual &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline --decorate=no >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.none actual &&
|
|
|
|
|
2013-03-25 05:06:06 +08:00
|
|
|
test_config log.decorate no &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.none actual &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline --decorate >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.short actual &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline --decorate=full >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.full actual &&
|
|
|
|
|
2013-03-25 05:06:06 +08:00
|
|
|
test_config log.decorate 1 &&
|
2010-11-18 01:00:45 +08:00
|
|
|
git log --oneline >actual &&
|
|
|
|
test_cmp expect.short actual &&
|
|
|
|
git log --oneline --decorate=full >actual &&
|
|
|
|
test_cmp expect.full actual &&
|
|
|
|
git log --oneline --decorate=no >actual &&
|
|
|
|
test_cmp expect.none actual &&
|
|
|
|
|
2013-03-25 05:06:06 +08:00
|
|
|
test_config log.decorate short &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.short actual &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline --no-decorate >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.none actual &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline --decorate=full >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.full actual &&
|
|
|
|
|
2013-03-25 05:06:06 +08:00
|
|
|
test_config log.decorate full &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.full actual &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline --no-decorate >actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
test_cmp expect.none actual &&
|
2010-04-09 01:17:17 +08:00
|
|
|
git log --oneline --decorate >actual &&
|
2015-03-20 18:06:15 +08:00
|
|
|
test_cmp expect.short actual &&
|
2010-02-18 02:20:49 +08:00
|
|
|
|
2013-03-25 05:06:06 +08:00
|
|
|
test_unconfig log.decorate &&
|
2011-05-19 01:56:04 +08:00
|
|
|
git log --pretty=raw >expect.raw &&
|
2013-03-25 05:06:06 +08:00
|
|
|
test_config log.decorate full &&
|
2011-05-19 01:56:04 +08:00
|
|
|
git log --pretty=raw >actual &&
|
|
|
|
test_cmp expect.raw actual
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2017-03-24 13:46:31 +08:00
|
|
|
test_expect_success TTY 'log output on a TTY' '
|
|
|
|
git log --oneline --decorate >expect.short &&
|
|
|
|
|
|
|
|
test_terminal git log --oneline >actual &&
|
|
|
|
test_cmp expect.short actual
|
|
|
|
'
|
|
|
|
|
2011-05-19 01:56:04 +08:00
|
|
|
test_expect_success 'reflog is expected format' '
|
|
|
|
git log -g --abbrev-commit --pretty=oneline >expect &&
|
|
|
|
git reflog >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'whatchanged is expected format' '
|
|
|
|
git log --no-merges --raw >expect &&
|
|
|
|
git whatchanged >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'log.abbrevCommit configuration' '
|
|
|
|
git log --abbrev-commit >expect.log.abbrev &&
|
|
|
|
git log --no-abbrev-commit >expect.log.full &&
|
|
|
|
git log --pretty=raw >expect.log.raw &&
|
|
|
|
git reflog --abbrev-commit >expect.reflog.abbrev &&
|
|
|
|
git reflog --no-abbrev-commit >expect.reflog.full &&
|
|
|
|
git whatchanged --abbrev-commit >expect.whatchanged.abbrev &&
|
|
|
|
git whatchanged --no-abbrev-commit >expect.whatchanged.full &&
|
|
|
|
|
2013-03-25 05:06:06 +08:00
|
|
|
test_config log.abbrevCommit true &&
|
2011-05-19 01:56:04 +08:00
|
|
|
|
|
|
|
git log >actual &&
|
|
|
|
test_cmp expect.log.abbrev actual &&
|
|
|
|
git log --no-abbrev-commit >actual &&
|
|
|
|
test_cmp expect.log.full actual &&
|
|
|
|
|
|
|
|
git log --pretty=raw >actual &&
|
|
|
|
test_cmp expect.log.raw actual &&
|
|
|
|
|
|
|
|
git reflog >actual &&
|
|
|
|
test_cmp expect.reflog.abbrev actual &&
|
|
|
|
git reflog --no-abbrev-commit >actual &&
|
|
|
|
test_cmp expect.reflog.full actual &&
|
|
|
|
|
|
|
|
git whatchanged >actual &&
|
|
|
|
test_cmp expect.whatchanged.abbrev actual &&
|
|
|
|
git whatchanged --no-abbrev-commit >actual &&
|
|
|
|
test_cmp expect.whatchanged.full actual
|
2010-02-18 02:20:49 +08:00
|
|
|
'
|
|
|
|
|
2010-08-15 18:16:25 +08:00
|
|
|
test_expect_success 'show added path under "--follow -M"' '
|
|
|
|
# This tests for a regression introduced in v1.7.2-rc0~103^2~2
|
|
|
|
test_create_repo regression &&
|
|
|
|
(
|
|
|
|
cd regression &&
|
|
|
|
test_commit needs-another-commit &&
|
|
|
|
test_commit foo.bar &&
|
|
|
|
git log -M --follow -p foo.bar.t &&
|
|
|
|
git log -M --follow --stat foo.bar.t &&
|
|
|
|
git log -M --follow --name-only foo.bar.t
|
|
|
|
)
|
|
|
|
'
|
2008-07-23 05:23:31 +08:00
|
|
|
|
2013-05-28 06:49:57 +08:00
|
|
|
test_expect_success 'git log -c --follow' '
|
|
|
|
test_create_repo follow-c &&
|
|
|
|
(
|
|
|
|
cd follow-c &&
|
|
|
|
test_commit initial file original &&
|
|
|
|
git rm file &&
|
|
|
|
test_commit rename file2 original &&
|
|
|
|
git reset --hard initial &&
|
|
|
|
test_commit modify file foo &&
|
|
|
|
git merge -m merge rename &&
|
|
|
|
git log -c --follow file2
|
|
|
|
)
|
|
|
|
'
|
|
|
|
|
2012-03-20 16:05:34 +08:00
|
|
|
cat >expect <<\EOF
|
|
|
|
* commit COMMIT_OBJECT_NAME
|
|
|
|
|\ Merge: MERGE_PARENTS
|
|
|
|
| | Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | Merge HEADS DESCRIPTION
|
|
|
|
| |
|
|
|
|
| * commit COMMIT_OBJECT_NAME
|
|
|
|
| | Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | reach
|
|
|
|
| | ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| | reach.t | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
| | 1 file changed, 1 insertion(+)
|
|
|
|
| |
|
|
|
|
| | diff --git a/reach.t b/reach.t
|
|
|
|
| | new file mode 100644
|
|
|
|
| | index 0000000..10c9591
|
|
|
|
| | --- /dev/null
|
|
|
|
| | +++ b/reach.t
|
|
|
|
| | @@ -0,0 +1 @@
|
|
|
|
| | +reach
|
|
|
|
| |
|
|
|
|
| \
|
|
|
|
*-. \ commit COMMIT_OBJECT_NAME
|
|
|
|
|\ \ \ Merge: MERGE_PARENTS
|
|
|
|
| | | | Author: A U Thor <author@example.com>
|
|
|
|
| | | |
|
|
|
|
| | | | Merge HEADS DESCRIPTION
|
|
|
|
| | | |
|
|
|
|
| | * | commit COMMIT_OBJECT_NAME
|
|
|
|
| | |/ Author: A U Thor <author@example.com>
|
|
|
|
| | |
|
|
|
|
| | | octopus-b
|
|
|
|
| | | ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| | | octopus-b.t | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
| | | 1 file changed, 1 insertion(+)
|
|
|
|
| | |
|
|
|
|
| | | diff --git a/octopus-b.t b/octopus-b.t
|
|
|
|
| | | new file mode 100644
|
|
|
|
| | | index 0000000..d5fcad0
|
|
|
|
| | | --- /dev/null
|
|
|
|
| | | +++ b/octopus-b.t
|
|
|
|
| | | @@ -0,0 +1 @@
|
|
|
|
| | | +octopus-b
|
|
|
|
| | |
|
|
|
|
| * | commit COMMIT_OBJECT_NAME
|
|
|
|
| |/ Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | octopus-a
|
|
|
|
| | ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| | octopus-a.t | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
| | 1 file changed, 1 insertion(+)
|
|
|
|
| |
|
|
|
|
| | diff --git a/octopus-a.t b/octopus-a.t
|
|
|
|
| | new file mode 100644
|
|
|
|
| | index 0000000..11ee015
|
|
|
|
| | --- /dev/null
|
|
|
|
| | +++ b/octopus-a.t
|
|
|
|
| | @@ -0,0 +1 @@
|
|
|
|
| | +octopus-a
|
|
|
|
| |
|
|
|
|
* | commit COMMIT_OBJECT_NAME
|
|
|
|
|/ Author: A U Thor <author@example.com>
|
|
|
|
|
|
|
|
|
| seventh
|
|
|
|
| ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| seventh.t | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
| 1 file changed, 1 insertion(+)
|
|
|
|
|
|
|
|
|
| diff --git a/seventh.t b/seventh.t
|
|
|
|
| new file mode 100644
|
|
|
|
| index 0000000..9744ffc
|
|
|
|
| --- /dev/null
|
|
|
|
| +++ b/seventh.t
|
|
|
|
| @@ -0,0 +1 @@
|
|
|
|
| +seventh
|
|
|
|
|
|
|
|
|
* commit COMMIT_OBJECT_NAME
|
|
|
|
|\ Merge: MERGE_PARENTS
|
|
|
|
| | Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | Merge branch 'tangle'
|
|
|
|
| |
|
|
|
|
| * commit COMMIT_OBJECT_NAME
|
|
|
|
| |\ Merge: MERGE_PARENTS
|
|
|
|
| | | Author: A U Thor <author@example.com>
|
|
|
|
| | |
|
|
|
|
| | | Merge branch 'side' (early part) into tangle
|
|
|
|
| | |
|
|
|
|
| * | commit COMMIT_OBJECT_NAME
|
|
|
|
| |\ \ Merge: MERGE_PARENTS
|
|
|
|
| | | | Author: A U Thor <author@example.com>
|
|
|
|
| | | |
|
|
|
|
| | | | Merge branch 'master' (early part) into tangle
|
|
|
|
| | | |
|
|
|
|
| * | | commit COMMIT_OBJECT_NAME
|
|
|
|
| | | | Author: A U Thor <author@example.com>
|
|
|
|
| | | |
|
|
|
|
| | | | tangle-a
|
|
|
|
| | | | ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| | | | tangle-a | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
| | | | 1 file changed, 1 insertion(+)
|
|
|
|
| | | |
|
|
|
|
| | | | diff --git a/tangle-a b/tangle-a
|
|
|
|
| | | | new file mode 100644
|
|
|
|
| | | | index 0000000..7898192
|
|
|
|
| | | | --- /dev/null
|
|
|
|
| | | | +++ b/tangle-a
|
|
|
|
| | | | @@ -0,0 +1 @@
|
|
|
|
| | | | +a
|
|
|
|
| | | |
|
|
|
|
* | | | commit COMMIT_OBJECT_NAME
|
|
|
|
|\ \ \ \ Merge: MERGE_PARENTS
|
|
|
|
| | | | | Author: A U Thor <author@example.com>
|
|
|
|
| | | | |
|
|
|
|
| | | | | Merge branch 'side'
|
|
|
|
| | | | |
|
|
|
|
| * | | | commit COMMIT_OBJECT_NAME
|
|
|
|
| | |_|/ Author: A U Thor <author@example.com>
|
|
|
|
| |/| |
|
|
|
|
| | | | side-2
|
|
|
|
| | | | ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| | | | 2 | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
| | | | 1 file changed, 1 insertion(+)
|
|
|
|
| | | |
|
|
|
|
| | | | diff --git a/2 b/2
|
|
|
|
| | | | new file mode 100644
|
|
|
|
| | | | index 0000000..0cfbf08
|
|
|
|
| | | | --- /dev/null
|
|
|
|
| | | | +++ b/2
|
|
|
|
| | | | @@ -0,0 +1 @@
|
|
|
|
| | | | +2
|
|
|
|
| | | |
|
|
|
|
| * | | commit COMMIT_OBJECT_NAME
|
|
|
|
| | | | Author: A U Thor <author@example.com>
|
|
|
|
| | | |
|
|
|
|
| | | | side-1
|
|
|
|
| | | | ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| | | | 1 | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
| | | | 1 file changed, 1 insertion(+)
|
|
|
|
| | | |
|
|
|
|
| | | | diff --git a/1 b/1
|
|
|
|
| | | | new file mode 100644
|
|
|
|
| | | | index 0000000..d00491f
|
|
|
|
| | | | --- /dev/null
|
|
|
|
| | | | +++ b/1
|
|
|
|
| | | | @@ -0,0 +1 @@
|
|
|
|
| | | | +1
|
|
|
|
| | | |
|
|
|
|
* | | | commit COMMIT_OBJECT_NAME
|
|
|
|
| | | | Author: A U Thor <author@example.com>
|
|
|
|
| | | |
|
|
|
|
| | | | Second
|
|
|
|
| | | | ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| | | | one | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
| | | | 1 file changed, 1 insertion(+)
|
|
|
|
| | | |
|
|
|
|
| | | | diff --git a/one b/one
|
|
|
|
| | | | new file mode 100644
|
|
|
|
| | | | index 0000000..9a33383
|
|
|
|
| | | | --- /dev/null
|
|
|
|
| | | | +++ b/one
|
|
|
|
| | | | @@ -0,0 +1 @@
|
|
|
|
| | | | +case
|
|
|
|
| | | |
|
|
|
|
* | | | commit COMMIT_OBJECT_NAME
|
|
|
|
| |_|/ Author: A U Thor <author@example.com>
|
|
|
|
|/| |
|
|
|
|
| | | sixth
|
|
|
|
| | | ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| | | a/two | 1 -
|
2012-03-20 16:05:34 +08:00
|
|
|
| | | 1 file changed, 1 deletion(-)
|
|
|
|
| | |
|
|
|
|
| | | diff --git a/a/two b/a/two
|
|
|
|
| | | deleted file mode 100644
|
|
|
|
| | | index 9245af5..0000000
|
|
|
|
| | | --- a/a/two
|
|
|
|
| | | +++ /dev/null
|
|
|
|
| | | @@ -1 +0,0 @@
|
|
|
|
| | | -ni
|
|
|
|
| | |
|
|
|
|
* | | commit COMMIT_OBJECT_NAME
|
|
|
|
| | | Author: A U Thor <author@example.com>
|
|
|
|
| | |
|
|
|
|
| | | fifth
|
|
|
|
| | | ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| | | a/two | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
| | | 1 file changed, 1 insertion(+)
|
|
|
|
| | |
|
|
|
|
| | | diff --git a/a/two b/a/two
|
|
|
|
| | | new file mode 100644
|
|
|
|
| | | index 0000000..9245af5
|
|
|
|
| | | --- /dev/null
|
|
|
|
| | | +++ b/a/two
|
|
|
|
| | | @@ -0,0 +1 @@
|
|
|
|
| | | +ni
|
|
|
|
| | |
|
|
|
|
* | | commit COMMIT_OBJECT_NAME
|
|
|
|
|/ / Author: A U Thor <author@example.com>
|
|
|
|
| |
|
|
|
|
| | fourth
|
|
|
|
| | ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| | ein | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
| | 1 file changed, 1 insertion(+)
|
|
|
|
| |
|
|
|
|
| | diff --git a/ein b/ein
|
|
|
|
| | new file mode 100644
|
|
|
|
| | index 0000000..9d7e69f
|
|
|
|
| | --- /dev/null
|
|
|
|
| | +++ b/ein
|
|
|
|
| | @@ -0,0 +1 @@
|
|
|
|
| | +ichi
|
|
|
|
| |
|
|
|
|
* | commit COMMIT_OBJECT_NAME
|
|
|
|
|/ Author: A U Thor <author@example.com>
|
|
|
|
|
|
|
|
|
| third
|
|
|
|
| ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| ichi | 1 +
|
|
|
|
| one | 1 -
|
2012-03-20 16:05:34 +08:00
|
|
|
| 2 files changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
|
|
|
|
|
| diff --git a/ichi b/ichi
|
|
|
|
| new file mode 100644
|
|
|
|
| index 0000000..9d7e69f
|
|
|
|
| --- /dev/null
|
|
|
|
| +++ b/ichi
|
|
|
|
| @@ -0,0 +1 @@
|
|
|
|
| +ichi
|
|
|
|
| diff --git a/one b/one
|
|
|
|
| deleted file mode 100644
|
|
|
|
| index 9d7e69f..0000000
|
|
|
|
| --- a/one
|
|
|
|
| +++ /dev/null
|
|
|
|
| @@ -1 +0,0 @@
|
|
|
|
| -ichi
|
|
|
|
|
|
|
|
|
* commit COMMIT_OBJECT_NAME
|
|
|
|
| Author: A U Thor <author@example.com>
|
|
|
|
|
|
|
|
|
| second
|
|
|
|
| ---
|
2012-05-01 04:38:58 +08:00
|
|
|
| one | 2 +-
|
2012-03-20 16:05:34 +08:00
|
|
|
| 1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
|
|
|
|
|
| diff --git a/one b/one
|
|
|
|
| index 5626abf..9d7e69f 100644
|
|
|
|
| --- a/one
|
|
|
|
| +++ b/one
|
|
|
|
| @@ -1 +1 @@
|
|
|
|
| -one
|
|
|
|
| +ichi
|
|
|
|
|
|
|
|
|
* commit COMMIT_OBJECT_NAME
|
|
|
|
Author: A U Thor <author@example.com>
|
|
|
|
|
|
|
|
initial
|
|
|
|
---
|
2012-05-01 04:38:58 +08:00
|
|
|
one | 1 +
|
2012-03-20 16:05:34 +08:00
|
|
|
1 file changed, 1 insertion(+)
|
|
|
|
|
|
|
|
diff --git a/one b/one
|
|
|
|
new file mode 100644
|
|
|
|
index 0000000..5626abf
|
|
|
|
--- /dev/null
|
|
|
|
+++ b/one
|
|
|
|
@@ -0,0 +1 @@
|
|
|
|
+one
|
|
|
|
EOF
|
|
|
|
|
|
|
|
sanitize_output () {
|
|
|
|
sed -e 's/ *$//' \
|
|
|
|
-e 's/commit [0-9a-f]*$/commit COMMIT_OBJECT_NAME/' \
|
|
|
|
-e 's/Merge: [ 0-9a-f]*$/Merge: MERGE_PARENTS/' \
|
|
|
|
-e 's/Merge tag.*/Merge HEADS DESCRIPTION/' \
|
|
|
|
-e 's/Merge commit.*/Merge HEADS DESCRIPTION/' \
|
|
|
|
-e 's/, 0 deletions(-)//' \
|
|
|
|
-e 's/, 0 insertions(+)//' \
|
|
|
|
-e 's/ 1 files changed, / 1 file changed, /' \
|
|
|
|
-e 's/, 1 deletions(-)/, 1 deletion(-)/' \
|
|
|
|
-e 's/, 1 insertions(+)/, 1 insertion(+)/'
|
|
|
|
}
|
|
|
|
|
|
|
|
test_expect_success 'log --graph with diff and stats' '
|
2016-02-25 16:59:21 +08:00
|
|
|
git log --no-renames --graph --pretty=short --stat -p >actual &&
|
2012-03-20 16:05:34 +08:00
|
|
|
sanitize_output >actual.sanitized <actual &&
|
2012-08-27 13:36:51 +08:00
|
|
|
test_i18ncmp expect actual.sanitized
|
2012-03-20 16:05:34 +08:00
|
|
|
'
|
|
|
|
|
2016-09-01 07:27:20 +08:00
|
|
|
cat >expect <<\EOF
|
|
|
|
*** * commit COMMIT_OBJECT_NAME
|
|
|
|
*** |\ Merge: MERGE_PARENTS
|
|
|
|
*** | | Author: A U Thor <author@example.com>
|
|
|
|
*** | |
|
|
|
|
*** | | Merge HEADS DESCRIPTION
|
|
|
|
*** | |
|
|
|
|
*** | * commit COMMIT_OBJECT_NAME
|
|
|
|
*** | | Author: A U Thor <author@example.com>
|
|
|
|
*** | |
|
|
|
|
*** | | reach
|
|
|
|
*** | | ---
|
|
|
|
*** | | reach.t | 1 +
|
|
|
|
*** | | 1 file changed, 1 insertion(+)
|
|
|
|
*** | |
|
|
|
|
*** | | diff --git a/reach.t b/reach.t
|
|
|
|
*** | | new file mode 100644
|
|
|
|
*** | | index 0000000..10c9591
|
|
|
|
*** | | --- /dev/null
|
|
|
|
*** | | +++ b/reach.t
|
|
|
|
*** | | @@ -0,0 +1 @@
|
|
|
|
*** | | +reach
|
|
|
|
*** | |
|
|
|
|
*** | \
|
|
|
|
*** *-. \ commit COMMIT_OBJECT_NAME
|
|
|
|
*** |\ \ \ Merge: MERGE_PARENTS
|
|
|
|
*** | | | | Author: A U Thor <author@example.com>
|
|
|
|
*** | | | |
|
|
|
|
*** | | | | Merge HEADS DESCRIPTION
|
|
|
|
*** | | | |
|
|
|
|
*** | | * | commit COMMIT_OBJECT_NAME
|
|
|
|
*** | | |/ Author: A U Thor <author@example.com>
|
|
|
|
*** | | |
|
|
|
|
*** | | | octopus-b
|
|
|
|
*** | | | ---
|
|
|
|
*** | | | octopus-b.t | 1 +
|
|
|
|
*** | | | 1 file changed, 1 insertion(+)
|
|
|
|
*** | | |
|
|
|
|
*** | | | diff --git a/octopus-b.t b/octopus-b.t
|
|
|
|
*** | | | new file mode 100644
|
|
|
|
*** | | | index 0000000..d5fcad0
|
|
|
|
*** | | | --- /dev/null
|
|
|
|
*** | | | +++ b/octopus-b.t
|
|
|
|
*** | | | @@ -0,0 +1 @@
|
|
|
|
*** | | | +octopus-b
|
|
|
|
*** | | |
|
|
|
|
*** | * | commit COMMIT_OBJECT_NAME
|
|
|
|
*** | |/ Author: A U Thor <author@example.com>
|
|
|
|
*** | |
|
|
|
|
*** | | octopus-a
|
|
|
|
*** | | ---
|
|
|
|
*** | | octopus-a.t | 1 +
|
|
|
|
*** | | 1 file changed, 1 insertion(+)
|
|
|
|
*** | |
|
|
|
|
*** | | diff --git a/octopus-a.t b/octopus-a.t
|
|
|
|
*** | | new file mode 100644
|
|
|
|
*** | | index 0000000..11ee015
|
|
|
|
*** | | --- /dev/null
|
|
|
|
*** | | +++ b/octopus-a.t
|
|
|
|
*** | | @@ -0,0 +1 @@
|
|
|
|
*** | | +octopus-a
|
|
|
|
*** | |
|
|
|
|
*** * | commit COMMIT_OBJECT_NAME
|
|
|
|
*** |/ Author: A U Thor <author@example.com>
|
|
|
|
*** |
|
|
|
|
*** | seventh
|
|
|
|
*** | ---
|
|
|
|
*** | seventh.t | 1 +
|
|
|
|
*** | 1 file changed, 1 insertion(+)
|
|
|
|
*** |
|
|
|
|
*** | diff --git a/seventh.t b/seventh.t
|
|
|
|
*** | new file mode 100644
|
|
|
|
*** | index 0000000..9744ffc
|
|
|
|
*** | --- /dev/null
|
|
|
|
*** | +++ b/seventh.t
|
|
|
|
*** | @@ -0,0 +1 @@
|
|
|
|
*** | +seventh
|
|
|
|
*** |
|
|
|
|
*** * commit COMMIT_OBJECT_NAME
|
|
|
|
*** |\ Merge: MERGE_PARENTS
|
|
|
|
*** | | Author: A U Thor <author@example.com>
|
|
|
|
*** | |
|
|
|
|
*** | | Merge branch 'tangle'
|
|
|
|
*** | |
|
|
|
|
*** | * commit COMMIT_OBJECT_NAME
|
|
|
|
*** | |\ Merge: MERGE_PARENTS
|
|
|
|
*** | | | Author: A U Thor <author@example.com>
|
|
|
|
*** | | |
|
|
|
|
*** | | | Merge branch 'side' (early part) into tangle
|
|
|
|
*** | | |
|
|
|
|
*** | * | commit COMMIT_OBJECT_NAME
|
|
|
|
*** | |\ \ Merge: MERGE_PARENTS
|
|
|
|
*** | | | | Author: A U Thor <author@example.com>
|
|
|
|
*** | | | |
|
|
|
|
*** | | | | Merge branch 'master' (early part) into tangle
|
|
|
|
*** | | | |
|
|
|
|
*** | * | | commit COMMIT_OBJECT_NAME
|
|
|
|
*** | | | | Author: A U Thor <author@example.com>
|
|
|
|
*** | | | |
|
|
|
|
*** | | | | tangle-a
|
|
|
|
*** | | | | ---
|
|
|
|
*** | | | | tangle-a | 1 +
|
|
|
|
*** | | | | 1 file changed, 1 insertion(+)
|
|
|
|
*** | | | |
|
|
|
|
*** | | | | diff --git a/tangle-a b/tangle-a
|
|
|
|
*** | | | | new file mode 100644
|
|
|
|
*** | | | | index 0000000..7898192
|
|
|
|
*** | | | | --- /dev/null
|
|
|
|
*** | | | | +++ b/tangle-a
|
|
|
|
*** | | | | @@ -0,0 +1 @@
|
|
|
|
*** | | | | +a
|
|
|
|
*** | | | |
|
|
|
|
*** * | | | commit COMMIT_OBJECT_NAME
|
|
|
|
*** |\ \ \ \ Merge: MERGE_PARENTS
|
|
|
|
*** | | | | | Author: A U Thor <author@example.com>
|
|
|
|
*** | | | | |
|
|
|
|
*** | | | | | Merge branch 'side'
|
|
|
|
*** | | | | |
|
|
|
|
*** | * | | | commit COMMIT_OBJECT_NAME
|
|
|
|
*** | | |_|/ Author: A U Thor <author@example.com>
|
|
|
|
*** | |/| |
|
|
|
|
*** | | | | side-2
|
|
|
|
*** | | | | ---
|
|
|
|
*** | | | | 2 | 1 +
|
|
|
|
*** | | | | 1 file changed, 1 insertion(+)
|
|
|
|
*** | | | |
|
|
|
|
*** | | | | diff --git a/2 b/2
|
|
|
|
*** | | | | new file mode 100644
|
|
|
|
*** | | | | index 0000000..0cfbf08
|
|
|
|
*** | | | | --- /dev/null
|
|
|
|
*** | | | | +++ b/2
|
|
|
|
*** | | | | @@ -0,0 +1 @@
|
|
|
|
*** | | | | +2
|
|
|
|
*** | | | |
|
|
|
|
*** | * | | commit COMMIT_OBJECT_NAME
|
|
|
|
*** | | | | Author: A U Thor <author@example.com>
|
|
|
|
*** | | | |
|
|
|
|
*** | | | | side-1
|
|
|
|
*** | | | | ---
|
|
|
|
*** | | | | 1 | 1 +
|
|
|
|
*** | | | | 1 file changed, 1 insertion(+)
|
|
|
|
*** | | | |
|
|
|
|
*** | | | | diff --git a/1 b/1
|
|
|
|
*** | | | | new file mode 100644
|
|
|
|
*** | | | | index 0000000..d00491f
|
|
|
|
*** | | | | --- /dev/null
|
|
|
|
*** | | | | +++ b/1
|
|
|
|
*** | | | | @@ -0,0 +1 @@
|
|
|
|
*** | | | | +1
|
|
|
|
*** | | | |
|
|
|
|
*** * | | | commit COMMIT_OBJECT_NAME
|
|
|
|
*** | | | | Author: A U Thor <author@example.com>
|
|
|
|
*** | | | |
|
|
|
|
*** | | | | Second
|
|
|
|
*** | | | | ---
|
|
|
|
*** | | | | one | 1 +
|
|
|
|
*** | | | | 1 file changed, 1 insertion(+)
|
|
|
|
*** | | | |
|
|
|
|
*** | | | | diff --git a/one b/one
|
|
|
|
*** | | | | new file mode 100644
|
|
|
|
*** | | | | index 0000000..9a33383
|
|
|
|
*** | | | | --- /dev/null
|
|
|
|
*** | | | | +++ b/one
|
|
|
|
*** | | | | @@ -0,0 +1 @@
|
|
|
|
*** | | | | +case
|
|
|
|
*** | | | |
|
|
|
|
*** * | | | commit COMMIT_OBJECT_NAME
|
|
|
|
*** | |_|/ Author: A U Thor <author@example.com>
|
|
|
|
*** |/| |
|
|
|
|
*** | | | sixth
|
|
|
|
*** | | | ---
|
|
|
|
*** | | | a/two | 1 -
|
|
|
|
*** | | | 1 file changed, 1 deletion(-)
|
|
|
|
*** | | |
|
|
|
|
*** | | | diff --git a/a/two b/a/two
|
|
|
|
*** | | | deleted file mode 100644
|
|
|
|
*** | | | index 9245af5..0000000
|
|
|
|
*** | | | --- a/a/two
|
|
|
|
*** | | | +++ /dev/null
|
|
|
|
*** | | | @@ -1 +0,0 @@
|
|
|
|
*** | | | -ni
|
|
|
|
*** | | |
|
|
|
|
*** * | | commit COMMIT_OBJECT_NAME
|
|
|
|
*** | | | Author: A U Thor <author@example.com>
|
|
|
|
*** | | |
|
|
|
|
*** | | | fifth
|
|
|
|
*** | | | ---
|
|
|
|
*** | | | a/two | 1 +
|
|
|
|
*** | | | 1 file changed, 1 insertion(+)
|
|
|
|
*** | | |
|
|
|
|
*** | | | diff --git a/a/two b/a/two
|
|
|
|
*** | | | new file mode 100644
|
|
|
|
*** | | | index 0000000..9245af5
|
|
|
|
*** | | | --- /dev/null
|
|
|
|
*** | | | +++ b/a/two
|
|
|
|
*** | | | @@ -0,0 +1 @@
|
|
|
|
*** | | | +ni
|
|
|
|
*** | | |
|
|
|
|
*** * | | commit COMMIT_OBJECT_NAME
|
|
|
|
*** |/ / Author: A U Thor <author@example.com>
|
|
|
|
*** | |
|
|
|
|
*** | | fourth
|
|
|
|
*** | | ---
|
|
|
|
*** | | ein | 1 +
|
|
|
|
*** | | 1 file changed, 1 insertion(+)
|
|
|
|
*** | |
|
|
|
|
*** | | diff --git a/ein b/ein
|
|
|
|
*** | | new file mode 100644
|
|
|
|
*** | | index 0000000..9d7e69f
|
|
|
|
*** | | --- /dev/null
|
|
|
|
*** | | +++ b/ein
|
|
|
|
*** | | @@ -0,0 +1 @@
|
|
|
|
*** | | +ichi
|
|
|
|
*** | |
|
|
|
|
*** * | commit COMMIT_OBJECT_NAME
|
|
|
|
*** |/ Author: A U Thor <author@example.com>
|
|
|
|
*** |
|
|
|
|
*** | third
|
|
|
|
*** | ---
|
|
|
|
*** | ichi | 1 +
|
|
|
|
*** | one | 1 -
|
|
|
|
*** | 2 files changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
*** |
|
|
|
|
*** | diff --git a/ichi b/ichi
|
|
|
|
*** | new file mode 100644
|
|
|
|
*** | index 0000000..9d7e69f
|
|
|
|
*** | --- /dev/null
|
|
|
|
*** | +++ b/ichi
|
|
|
|
*** | @@ -0,0 +1 @@
|
|
|
|
*** | +ichi
|
|
|
|
*** | diff --git a/one b/one
|
|
|
|
*** | deleted file mode 100644
|
|
|
|
*** | index 9d7e69f..0000000
|
|
|
|
*** | --- a/one
|
|
|
|
*** | +++ /dev/null
|
|
|
|
*** | @@ -1 +0,0 @@
|
|
|
|
*** | -ichi
|
|
|
|
*** |
|
|
|
|
*** * commit COMMIT_OBJECT_NAME
|
|
|
|
*** | Author: A U Thor <author@example.com>
|
|
|
|
*** |
|
|
|
|
*** | second
|
|
|
|
*** | ---
|
|
|
|
*** | one | 2 +-
|
|
|
|
*** | 1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
*** |
|
|
|
|
*** | diff --git a/one b/one
|
|
|
|
*** | index 5626abf..9d7e69f 100644
|
|
|
|
*** | --- a/one
|
|
|
|
*** | +++ b/one
|
|
|
|
*** | @@ -1 +1 @@
|
|
|
|
*** | -one
|
|
|
|
*** | +ichi
|
|
|
|
*** |
|
|
|
|
*** * commit COMMIT_OBJECT_NAME
|
|
|
|
*** Author: A U Thor <author@example.com>
|
|
|
|
***
|
|
|
|
*** initial
|
|
|
|
*** ---
|
|
|
|
*** one | 1 +
|
|
|
|
*** 1 file changed, 1 insertion(+)
|
|
|
|
***
|
|
|
|
*** diff --git a/one b/one
|
|
|
|
*** new file mode 100644
|
|
|
|
*** index 0000000..5626abf
|
|
|
|
*** --- /dev/null
|
|
|
|
*** +++ b/one
|
|
|
|
*** @@ -0,0 +1 @@
|
|
|
|
*** +one
|
|
|
|
EOF
|
|
|
|
|
|
|
|
test_expect_success 'log --line-prefix="*** " --graph with diff and stats' '
|
|
|
|
git log --line-prefix="*** " --no-renames --graph --pretty=short --stat -p >actual &&
|
|
|
|
sanitize_output >actual.sanitized <actual &&
|
|
|
|
test_i18ncmp expect actual.sanitized
|
|
|
|
'
|
|
|
|
|
2017-02-09 04:31:15 +08:00
|
|
|
cat >expect <<-\EOF
|
|
|
|
* reach
|
|
|
|
|
|
|
|
|
| A reach.t
|
|
|
|
* Merge branch 'tangle'
|
|
|
|
* Merge branch 'side'
|
|
|
|
|\
|
|
|
|
| * side-2
|
|
|
|
|
|
|
|
|
| A 2
|
|
|
|
* Second
|
|
|
|
|
|
|
|
|
| A one
|
|
|
|
* sixth
|
|
|
|
|
|
|
|
D a/two
|
|
|
|
EOF
|
|
|
|
|
|
|
|
test_expect_success 'log --graph with --name-status' '
|
|
|
|
git log --graph --format=%s --name-status tangle..reach >actual &&
|
|
|
|
sanitize_output <actual >actual.sanitized &&
|
|
|
|
test_cmp expect actual.sanitized
|
|
|
|
'
|
|
|
|
|
|
|
|
cat >expect <<-\EOF
|
|
|
|
* reach
|
|
|
|
|
|
|
|
|
| reach.t
|
|
|
|
* Merge branch 'tangle'
|
|
|
|
* Merge branch 'side'
|
|
|
|
|\
|
|
|
|
| * side-2
|
|
|
|
|
|
|
|
|
| 2
|
|
|
|
* Second
|
|
|
|
|
|
|
|
|
| one
|
|
|
|
* sixth
|
|
|
|
|
|
|
|
a/two
|
|
|
|
EOF
|
|
|
|
|
|
|
|
test_expect_success 'log --graph with --name-only' '
|
|
|
|
git log --graph --format=%s --name-only tangle..reach >actual &&
|
|
|
|
sanitize_output <actual >actual.sanitized &&
|
|
|
|
test_cmp expect actual.sanitized
|
|
|
|
'
|
|
|
|
|
2011-05-03 04:39:16 +08:00
|
|
|
test_expect_success 'dotdot is a parent directory' '
|
|
|
|
mkdir -p a/b &&
|
|
|
|
( echo sixth && echo fifth ) >expect &&
|
|
|
|
( cd a/b && git log --format=%s .. ) >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2016-06-24 22:12:34 +08:00
|
|
|
test_expect_success GPG 'setup signed branch' '
|
2014-07-09 10:10:21 +08:00
|
|
|
test_when_finished "git reset --hard && git checkout master" &&
|
|
|
|
git checkout -b signed master &&
|
|
|
|
echo foo >foo &&
|
|
|
|
git add foo &&
|
2016-06-24 22:12:34 +08:00
|
|
|
git commit -S -m signed_commit
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success GPG 'log --graph --show-signature' '
|
2014-07-09 10:10:21 +08:00
|
|
|
git log --graph --show-signature -n1 signed >actual &&
|
|
|
|
grep "^| gpg: Signature made" actual &&
|
|
|
|
grep "^| gpg: Good signature" actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success GPG 'log --graph --show-signature for merged tag' '
|
|
|
|
test_when_finished "git reset --hard && git checkout master" &&
|
|
|
|
git checkout -b plain master &&
|
|
|
|
echo aaa >bar &&
|
|
|
|
git add bar &&
|
|
|
|
git commit -m bar_commit &&
|
|
|
|
git checkout -b tagged master &&
|
|
|
|
echo bbb >baz &&
|
|
|
|
git add baz &&
|
|
|
|
git commit -m baz_commit &&
|
|
|
|
git tag -s -m signed_tag_msg signed_tag &&
|
|
|
|
git checkout plain &&
|
|
|
|
git merge --no-ff -m msg signed_tag &&
|
|
|
|
git log --graph --show-signature -n1 plain >actual &&
|
|
|
|
grep "^|\\\ merged tag" actual &&
|
|
|
|
grep "^| | gpg: Signature made" actual &&
|
|
|
|
grep "^| | gpg: Good signature" actual
|
|
|
|
'
|
|
|
|
|
2016-06-23 00:51:25 +08:00
|
|
|
test_expect_success GPG '--no-show-signature overrides --show-signature' '
|
|
|
|
git log -1 --show-signature --no-show-signature signed >actual &&
|
|
|
|
! grep "^gpg:" actual
|
|
|
|
'
|
|
|
|
|
2016-06-23 00:51:26 +08:00
|
|
|
test_expect_success GPG 'log.showsignature=true behaves like --show-signature' '
|
|
|
|
test_config log.showsignature true &&
|
|
|
|
git log -1 signed >actual &&
|
|
|
|
grep "gpg: Signature made" actual &&
|
|
|
|
grep "gpg: Good signature" actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success GPG '--no-show-signature overrides log.showsignature=true' '
|
|
|
|
test_config log.showsignature true &&
|
|
|
|
git log -1 --no-show-signature signed >actual &&
|
|
|
|
! grep "^gpg:" actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success GPG '--show-signature overrides log.showsignature=false' '
|
|
|
|
test_config log.showsignature false &&
|
|
|
|
git log -1 --show-signature signed >actual &&
|
|
|
|
grep "gpg: Signature made" actual &&
|
|
|
|
grep "gpg: Good signature" actual
|
|
|
|
'
|
|
|
|
|
2015-03-11 10:13:02 +08:00
|
|
|
test_expect_success 'log --graph --no-walk is forbidden' '
|
|
|
|
test_must_fail git log --graph --no-walk
|
|
|
|
'
|
|
|
|
|
2015-08-29 13:04:18 +08:00
|
|
|
test_expect_success 'log diagnoses bogus HEAD' '
|
|
|
|
git init empty &&
|
|
|
|
test_must_fail git -C empty log 2>stderr &&
|
|
|
|
test_i18ngrep does.not.have.any.commits stderr &&
|
|
|
|
echo 1234abcd >empty/.git/refs/heads/master &&
|
|
|
|
test_must_fail git -C empty log 2>stderr &&
|
|
|
|
test_i18ngrep broken stderr &&
|
|
|
|
echo "ref: refs/heads/invalid.lock" >empty/.git/HEAD &&
|
|
|
|
test_must_fail git -C empty log 2>stderr &&
|
|
|
|
test_i18ngrep broken stderr &&
|
|
|
|
test_must_fail git -C empty log --default totally-bogus 2>stderr &&
|
|
|
|
test_i18ngrep broken stderr
|
|
|
|
'
|
|
|
|
|
revision.c: propagate tag names from pending array
When we unwrap a tag to find its commit for a traversal, we
do not propagate the "name" field of the tag in the pending
array (i.e., the ref name the user gave us in the first
place) to the commit (instead, we use an empty string). This
means that "git log --source" will never show the tag-name
for commits we reach through it.
This was broken in 2073949 (traverse_commit_list: support
pending blobs/trees with paths, 2014-10-15). That commit
tried to be careful and avoid propagating the path
information for a tag (which would be nonsensical) to trees
and blobs. But it should not have cut off the "name" field,
which should carry forward to children.
Note that this does mean that the "name" field will carry
forward to blobs and trees, too. Whereas prior to 2073949,
we always gave them an empty string. This is the right thing
to do, but in practice no callers probably use it (since now
we have an explicit separate "path" field, which was the
point of 2073949).
We add tests here not only for the broken case, but also a
basic sanity test of "log --source" in general, which did
not have any coverage in the test suite.
Reported-by: Raymundo <gypark@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2015-12-17 14:47:07 +08:00
|
|
|
test_expect_success 'set up --source tests' '
|
|
|
|
git checkout --orphan source-a &&
|
|
|
|
test_commit one &&
|
|
|
|
test_commit two &&
|
|
|
|
git checkout -b source-b HEAD^ &&
|
|
|
|
test_commit three
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'log --source paints branch names' '
|
|
|
|
cat >expect <<-\EOF &&
|
|
|
|
09e12a9 source-b three
|
|
|
|
8e393e1 source-a two
|
|
|
|
1ac6c77 source-b one
|
|
|
|
EOF
|
|
|
|
git log --oneline --source source-a source-b >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'log --source paints tag names' '
|
|
|
|
git tag -m tagged source-tag &&
|
|
|
|
cat >expect <<-\EOF &&
|
|
|
|
09e12a9 source-tag three
|
|
|
|
8e393e1 source-a two
|
|
|
|
1ac6c77 source-tag one
|
|
|
|
EOF
|
|
|
|
git log --oneline --source source-tag source-a >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
2010-08-15 18:16:25 +08:00
|
|
|
test_done
|