Browse Source
"git describe" was taught to dig trees deeper to find a <commit-ish>:<path> that refers to a given blob object. * sb/describe-blob: builtin/describe.c: describe a blob builtin/describe.c: factor out describe_commit builtin/describe.c: print debug statements earlier builtin/describe.c: rename `oid` to avoid variable shadowing revision.h: introduce blob/tree walking in order of the commits list-objects.c: factor out traverse_trees_and_blobs t6120: fix typo in test namemaint
Junio C Hamano
7 years ago
8 changed files with 277 additions and 52 deletions
@ -0,0 +1,77 @@
@@ -0,0 +1,77 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='rev-list testing in-commit-order' |
||||
|
||||
. ./test-lib.sh |
||||
|
||||
test_expect_success 'setup a commit history with trees, blobs' ' |
||||
for x in one two three four |
||||
do |
||||
echo $x >$x && |
||||
git add $x && |
||||
git commit -m "add file $x" || |
||||
return 1 |
||||
done && |
||||
for x in four three |
||||
do |
||||
git rm $x && |
||||
git commit -m "remove $x" || |
||||
return 1 |
||||
done |
||||
' |
||||
|
||||
test_expect_success 'rev-list --in-commit-order' ' |
||||
git rev-list --in-commit-order --objects HEAD >actual.raw && |
||||
cut -c 1-40 >actual <actual.raw && |
||||
|
||||
git cat-file --batch-check="%(objectname)" >expect.raw <<-\EOF && |
||||
HEAD^{commit} |
||||
HEAD^{tree} |
||||
HEAD^{tree}:one |
||||
HEAD^{tree}:two |
||||
HEAD~1^{commit} |
||||
HEAD~1^{tree} |
||||
HEAD~1^{tree}:three |
||||
HEAD~2^{commit} |
||||
HEAD~2^{tree} |
||||
HEAD~2^{tree}:four |
||||
HEAD~3^{commit} |
||||
# HEAD~3^{tree} skipped, same as HEAD~1^{tree} |
||||
HEAD~4^{commit} |
||||
# HEAD~4^{tree} skipped, same as HEAD^{tree} |
||||
HEAD~5^{commit} |
||||
HEAD~5^{tree} |
||||
EOF |
||||
grep -v "#" >expect <expect.raw && |
||||
|
||||
test_cmp expect actual |
||||
' |
||||
|
||||
test_expect_success 'rev-list lists blobs and trees after commits' ' |
||||
git rev-list --objects HEAD >actual.raw && |
||||
cut -c 1-40 >actual <actual.raw && |
||||
|
||||
git cat-file --batch-check="%(objectname)" >expect.raw <<-\EOF && |
||||
HEAD^{commit} |
||||
HEAD~1^{commit} |
||||
HEAD~2^{commit} |
||||
HEAD~3^{commit} |
||||
HEAD~4^{commit} |
||||
HEAD~5^{commit} |
||||
HEAD^{tree} |
||||
HEAD^{tree}:one |
||||
HEAD^{tree}:two |
||||
HEAD~1^{tree} |
||||
HEAD~1^{tree}:three |
||||
HEAD~2^{tree} |
||||
HEAD~2^{tree}:four |
||||
# HEAD~3^{tree} skipped, same as HEAD~1^{tree} |
||||
# HEAD~4^{tree} skipped, same as HEAD^{tree} |
||||
HEAD~5^{tree} |
||||
EOF |
||||
grep -v "#" >expect <expect.raw && |
||||
|
||||
test_cmp expect actual |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue