Re: What's cooking in git.git (Dec 2016, #02; Mon, 12)
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Dec 13, 2016, 19:19 UTC
- Message-ID
- <alpine.DEB.2.20.1612131839220.3147@virtualbox>
- In-Reply-To
- <xmqqoa0g96o3.fsf@gitster.mtv.corp.google.com>
Hi Junio,
On Mon, 12 Dec 2016, Junio C Hamano wrote:
Show 11 quoted lines
> * bw/grep-recurse-submodules (2016-11-22) 6 commits > - grep: search history of moved submodules > - grep: enable recurse-submodules to work on <tree> objects > - grep: optionally recurse into submodules > - grep: add submodules as a grep source type > - submodules: load gitmodules file from commit sha1 > - submodules: add helper functions to determine presence of submodules > > "git grep" learns to optionally recurse into submodules > > Has anybody else seen t7814 being flakey with this series?
It is not flakey for me, it fails consistently on Windows. This is the output with -i -v -x (sorry, I won't have time this week to do anything about it, but maybe it helps identify the root cause):
-- snipsnap -- Initialized empty Git repository in C:/git-sdk-64/usr/src/git/wip3/t/trash directory.t7814-grep-recurse-submodules/.git/ expecting success: echo "foobar" >a && mkdir b && echo "bar" >b/b && git add a b && git commit -m "add a and b" && git init submodule && echo "foobar" >submodule/a && git -C submodule add a && git -C submodule commit -m "add a" && git submodule add ./submodule && git commit -m "added submodule"
++ echo foobar ++ mkdir b ++ echo bar ++ git add a b ++ git commit -m 'add a and b' [master (root-commit) 6a17548] add a and b Author: A U Thor <author@example.com> 2 files changed, 2 insertions(+) create mode 100644 a create mode 100644 b/b ++ git init submodule Initialized empty Git repository in C:/git-sdk-64/usr/src/git/wip3/t/trash directory.t7814-grep-recurse-submodules/submodule/.git/ ++ echo foobar ++ git -C submodule add a ++ git -C submodule commit -m 'add a' [master (root-commit) 081a998] add a Author: A U Thor <author@example.com> 1 file changed, 1 insertion(+) create mode 100644 a ++ git submodule add ./submodule Adding existing repo at 'submodule' to the index ++ git commit -m 'added submodule' [master 0c0fdd0] added submodule Author: A U Thor <author@example.com> 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 submodule + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 1 - setup directory structure and submodule
expecting success: cat >expect <<-\EOF && a:foobar b/b:bar submodule/a:foobar EOF
git grep -e "bar" --recurse-submodules >actual && test_cmp expect actual
++ cat ++ git grep -e bar --recurse-submodules ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='b/b:bar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='a:foobar b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='a:foobar b/b:bar submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='b/b:bar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='a:foobar b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='a:foobar b/b:bar submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'a:foobar b/b:bar submodule/a:foobar ' ++ test -n 'a:foobar b/b:bar submodule/a:foobar ' ++ test 'a:foobar b/b:bar submodule/a:foobar ' = 'a:foobar b/b:bar submodule/a:foobar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 2 - grep correctly finds patterns in a submodule
expecting success: cat >expect <<-\EOF && submodule/a:foobar EOF
git grep -e. --recurse-submodules -- submodule >actual && test_cmp expect actual
++ cat ++ git grep -e. --recurse-submodules -- submodule ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'submodule/a:foobar ' ++ test -n 'submodule/a:foobar ' ++ test 'submodule/a:foobar ' = 'submodule/a:foobar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 3 - grep and basic pathspecs
expecting success: git init submodule/sub && echo "foobar" >submodule/sub/a && git -C submodule/sub add a && git -C submodule/sub commit -m "add a" && git -C submodule submodule add ./sub && git -C submodule add sub && git -C submodule commit -m "added sub" && git add submodule && git commit -m "updated submodule" &&
cat >expect <<-\EOF && a:foobar b/b:bar submodule/a:foobar submodule/sub/a:foobar EOF
git grep -e "bar" --recurse-submodules >actual && test_cmp expect actual
++ git init submodule/sub Initialized empty Git repository in C:/git-sdk-64/usr/src/git/wip3/t/trash directory.t7814-grep-recurse-submodules/submodule/sub/.git/ ++ echo foobar ++ git -C submodule/sub add a ++ git -C submodule/sub commit -m 'add a' [master (root-commit) b95b263] add a Author: A U Thor <author@example.com> 1 file changed, 1 insertion(+) create mode 100644 a ++ git -C submodule submodule add ./sub Adding existing repo at 'sub' to the index ++ git -C submodule add sub ++ git -C submodule commit -m 'added sub' [master 190608e] added sub Author: A U Thor <author@example.com> 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 sub ++ git add submodule ++ git commit -m 'updated submodule' [master 5198849] updated submodule Author: A U Thor <author@example.com> 1 file changed, 1 insertion(+), 1 deletion(-) ++ cat ++ git grep -e bar --recurse-submodules ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='b/b:bar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='a:foobar b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='a:foobar b/b:bar submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/sub/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='a:foobar b/b:bar submodule/a:foobar submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='b/b:bar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='a:foobar b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='a:foobar b/b:bar submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/sub/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='a:foobar b/b:bar submodule/a:foobar submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'a:foobar b/b:bar submodule/a:foobar submodule/sub/a:foobar ' ++ test -n 'a:foobar b/b:bar submodule/a:foobar submodule/sub/a:foobar ' ++ test 'a:foobar b/b:bar submodule/a:foobar submodule/sub/a:foobar ' = 'a:foobar b/b:bar submodule/a:foobar submodule/sub/a:foobar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 4 - grep and nested submodules
expecting success: cat >expect <<-\EOF && a:foobar submodule/a:foobar submodule/sub/a:foobar EOF
git grep -e "bar" --and -e "foo" --recurse-submodules >actual && test_cmp expect actual
++ cat ++ git grep -e bar --and -e foo --recurse-submodules ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='a:foobar submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/sub/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='a:foobar submodule/a:foobar submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='a:foobar submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='submodule/sub/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='a:foobar submodule/a:foobar submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'a:foobar submodule/a:foobar submodule/sub/a:foobar ' ++ test -n 'a:foobar submodule/a:foobar submodule/sub/a:foobar ' ++ test 'a:foobar submodule/a:foobar submodule/sub/a:foobar ' = 'a:foobar submodule/a:foobar submodule/sub/a:foobar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 5 - grep and multiple patterns
expecting success: cat >expect <<-\EOF && b/b:bar EOF
git grep -e "bar" --and --not -e "foo" --recurse-submodules
>actual &&
test_cmp expect actual
++ cat ++ git grep -e bar --and --not -e foo --recurse-submodules ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='b/b:bar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='b/b:bar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'b/b:bar ' ++ test -n 'b/b:bar ' ++ test 'b/b:bar ' = 'b/b:bar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 6 - grep and multiple patterns
expecting success: cat >expect <<-\EOF && HEAD:a:foobar HEAD:b/b:bar HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar EOF
git grep -e "bar" --recurse-submodules HEAD >actual && test_cmp expect actual
++ cat ++ git grep -e bar --recurse-submodules HEAD ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD:a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:b/b:bar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD:a:foobar HEAD:b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD:a:foobar HEAD:b/b:bar HEAD:submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/sub/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD:a:foobar HEAD:b/b:bar HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD:a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:b/b:bar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD:a:foobar HEAD:b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD:a:foobar HEAD:b/b:bar HEAD:submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/sub/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD:a:foobar HEAD:b/b:bar HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'HEAD:a:foobar HEAD:b/b:bar HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ test -n 'HEAD:a:foobar HEAD:b/b:bar HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ test 'HEAD:a:foobar HEAD:b/b:bar HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' = 'HEAD:a:foobar HEAD:b/b:bar HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 7 - basic grep tree
expecting success: cat >expect <<-\EOF && HEAD^:a:foobar HEAD^:b/b:bar HEAD^:submodule/a:foobar EOF
git grep -e "bar" --recurse-submodules HEAD^ >actual && test_cmp expect actual
++ cat ++ git grep -e bar --recurse-submodules 'HEAD^' ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD^:a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD^:a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD^:b/b:bar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD^:a:foobar HEAD^:b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD^:submodule/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD^:a:foobar HEAD^:b/b:bar HEAD^:submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD^:a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD^:a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD^:b/b:bar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD^:a:foobar HEAD^:b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD^:submodule/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD^:a:foobar HEAD^:b/b:bar HEAD^:submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'HEAD^:a:foobar HEAD^:b/b:bar HEAD^:submodule/a:foobar ' ++ test -n 'HEAD^:a:foobar HEAD^:b/b:bar HEAD^:submodule/a:foobar ' ++ test 'HEAD^:a:foobar HEAD^:b/b:bar HEAD^:submodule/a:foobar ' = 'HEAD^:a:foobar HEAD^:b/b:bar HEAD^:submodule/a:foobar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 8 - grep tree HEAD^
expecting success: cat >expect <<-\EOF && HEAD^^:a:foobar HEAD^^:b/b:bar EOF
git grep -e "bar" --recurse-submodules HEAD^^ >actual && test_cmp expect actual
++ cat ++ git grep -e bar --recurse-submodules 'HEAD^^' ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD^^:a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD^^:a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD^^:b/b:bar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD^^:a:foobar HEAD^^:b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD^^:a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD^^:a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD^^:b/b:bar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD^^:a:foobar HEAD^^:b/b:bar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'HEAD^^:a:foobar HEAD^^:b/b:bar ' ++ test -n 'HEAD^^:a:foobar HEAD^^:b/b:bar ' ++ test 'HEAD^^:a:foobar HEAD^^:b/b:bar ' = 'HEAD^^:a:foobar HEAD^^:b/b:bar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 9 - grep tree HEAD^^
expecting success: cat >expect <<-\EOF && HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar EOF
git grep -e "bar" --recurse-submodules HEAD -- submodule >actual && test_cmp expect actual
++ cat ++ git grep -e bar --recurse-submodules HEAD -- submodule ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD:submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/sub/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD:submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/sub/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ test -n 'HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ test 'HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' = 'HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 10 - grep tree and pathspecs
expecting success: cat >expect <<-\EOF && HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar EOF
git grep -e "bar" --recurse-submodules HEAD -- "submodule*a"
>actual &&
test_cmp expect actual
++ cat ++ git grep -e bar --recurse-submodules HEAD -- 'submodule*a' ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD:submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/sub/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD:submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/sub/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ test -n 'HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' ++ test 'HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' = 'HEAD:submodule/a:foobar HEAD:submodule/sub/a:foobar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 11 - grep tree and pathspecs
expecting success: cat >expect <<-\EOF && HEAD:submodule/a:foobar EOF
git grep -e "bar" --recurse-submodules HEAD -- "submodul?/a"
>actual &&
test_cmp expect actual
++ cat ++ git grep -e bar --recurse-submodules HEAD -- 'submodul?/a' ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD:submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD:submodule/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'HEAD:submodule/a:foobar ' ++ test -n 'HEAD:submodule/a:foobar ' ++ test 'HEAD:submodule/a:foobar ' = 'HEAD:submodule/a:foobar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 12 - grep tree and more pathspecs
expecting success: cat >expect <<-\EOF && HEAD:submodule/sub/a:foobar EOF
git grep -e "bar" --recurse-submodules HEAD -- "submodul*/sub/a"
>actual &&
test_cmp expect actual
++ cat ++ git grep -e bar --recurse-submodules HEAD -- 'submodul*/sub/a' ++ test_cmp expect actual ++ mingw_test_cmp expect actual ++ local test_cmp_a= test_cmp_b= ++ local stdin_for_diff= ++ test -s expect ++ test -s actual ++ mingw_read_file_strip_cr_ test_cmp_a ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/sub/a:foobar ' ++ eval 'test_cmp_a=$test_cmp_a$line' +++ test_cmp_a='HEAD:submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ mingw_read_file_strip_cr_ test_cmp_b ++ local line ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ line='HEAD:submodule/sub/a:foobar ' ++ eval 'test_cmp_b=$test_cmp_b$line' +++ test_cmp_b='HEAD:submodule/sub/a:foobar ' ++ : ++ IFS=$'\r' ++ read -r -d ' ' line ++ test -z '' ++ break ++ test -n 'HEAD:submodule/sub/a:foobar ' ++ test -n 'HEAD:submodule/sub/a:foobar ' ++ test 'HEAD:submodule/sub/a:foobar ' = 'HEAD:submodule/sub/a:foobar ' + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 13 - grep tree and more pathspecs
expecting success: git init parent && test_when_finished "rm -rf parent" && echo "foobar" >"parent/fi:le" && git -C parent add "fi:le" && git -C parent commit -m "add fi:le" &&
git init "su:b" && test_when_finished "rm -rf su:b" && echo "foobar" >"su:b/fi:le" && git -C "su:b" add "fi:le" && git -C "su:b" commit -m "add fi:le" &&
git -C parent submodule add "../su:b" "su:b" && git -C parent commit -m "add submodule" &&
cat >expect <<-\EOF && fi:le:foobar su:b/fi:le:foobar EOF git -C parent grep -e "foobar" --recurse-submodules >actual && test_cmp expect actual &&
cat >expect <<-\EOF && HEAD:fi:le:foobar HEAD:su:b/fi:le:foobar EOF git -C parent grep -e "foobar" --recurse-submodules HEAD >actual && test_cmp expect actual
++ git init parent
Initialized empty Git repository in C:/git-sdk-64/usr/src/git/wip3/t/trash
directory.t7814-grep-recurse-submodules/parent/.git/
++ test_when_finished 'rm -rf parent'
++ test 0 = 0
++ test_cleanup='{ rm -rf parent
} && (exit "$eval_ret"); eval_ret=$?; :'
++ echo foobar
++ git -C parent add fi:le
fatal: pathspec 'fi:le' did not match any files
+ test_eval_ret_=128
+ want_trace
+ test t = t
+ test t = t
+ set +x
error: last command exited with $?=128
not ok 14 - grep recurse submodule colon in name
#
# git init parent &&
# test_when_finished "rm -rf parent" &&
# echo "foobar" >"parent/fi:le" &&
# git -C parent add "fi:le" &&
# git -C parent commit -m "add fi:le" &&
#
# git init "su:b" &&
# test_when_finished "rm -rf su:b" &&
# echo "foobar" >"su:b/fi:le" &&
# git -C "su:b" add "fi:le" &&
# git -C "su:b" commit -m "add fi:le" &&
#
# git -C parent submodule add "../su:b" "su:b" &&
# git -C parent commit -m "add submodule" &&
#
# cat >expect <<-\EOF &&
# fi:le:foobar
# su:b/fi:le:foobar
# EOF
# git -C parent grep -e "foobar" --recurse-submodules
# >actual &&
# test_cmp expect actual &&
#
# cat >expect <<-\EOF &&
# HEAD:fi:le:foobar
# HEAD:su:b/fi:le:foobar
# EOF
# git -C parent grep -e "foobar" --recurse-submodules HEAD
# >actual &&
# test_cmp expect actual
#