mirror of
https://github.com/git/git
synced 2024-08-28 12:09:19 +00:00
![Junio C Hamano](/assets/img/avatar_default.png)
When running "git show-branch" without any parameter in a repository that
has showbranch.default defined, we used to rely on the fact that our
handcrafted option parsing loop never looked at av[0].
The array of default strings had the first real command line argument in
default_arg[0], but the option parser wanted to look at the array starting
at av[1], so we assigned the address of -1th element to av to force the
loop start working from default_arg[0].
This no longer worked since 5734365
(show-branch: migrate to parse-options
API, 2009-05-21), as parse_options_start() saved the incoming &av[0] in
its ctx->out and later in parse_options_end() it did memmove to ctx->out
(with ctx->cpidx == 0), overwriting the memory before default_arg[] array.
I am not sure if this is a bug in parse_options(), or a bug in the caller,
and tonight I do not have enough concentration to figure out which. In
any case, this patch works the issue around.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
68 lines
1.3 KiB
Bash
Executable file
68 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='test show-branch with more than 8 heads'
|
|
|
|
. ./test-lib.sh
|
|
|
|
numbers="1 2 3 4 5 6 7 8 9 10"
|
|
|
|
test_expect_success 'setup' '
|
|
|
|
> file &&
|
|
git add file &&
|
|
test_tick &&
|
|
git commit -m initial &&
|
|
|
|
for i in $numbers
|
|
do
|
|
git checkout -b branch$i master &&
|
|
> file$i &&
|
|
git add file$i &&
|
|
test_tick &&
|
|
git commit -m branch$i || break
|
|
done
|
|
|
|
'
|
|
|
|
cat > expect << EOF
|
|
! [branch1] branch1
|
|
! [branch2] branch2
|
|
! [branch3] branch3
|
|
! [branch4] branch4
|
|
! [branch5] branch5
|
|
! [branch6] branch6
|
|
! [branch7] branch7
|
|
! [branch8] branch8
|
|
! [branch9] branch9
|
|
* [branch10] branch10
|
|
----------
|
|
* [branch10] branch10
|
|
+ [branch9] branch9
|
|
+ [branch8] branch8
|
|
+ [branch7] branch7
|
|
+ [branch6] branch6
|
|
+ [branch5] branch5
|
|
+ [branch4] branch4
|
|
+ [branch3] branch3
|
|
+ [branch2] branch2
|
|
+ [branch1] branch1
|
|
+++++++++* [branch10^] initial
|
|
EOF
|
|
|
|
test_expect_success 'show-branch with more than 8 branches' '
|
|
|
|
git show-branch $(for i in $numbers; do echo branch$i; done) > out &&
|
|
test_cmp expect out
|
|
|
|
'
|
|
|
|
test_expect_success 'show-branch with showbranch.default' '
|
|
for i in $numbers; do
|
|
git config --add showbranch.default branch$i
|
|
done &&
|
|
git show-branch >out &&
|
|
test_cmp expect out
|
|
'
|
|
|
|
test_done
|