Browse Source
* tr/filter-branch: revision --simplify-merges: make it a no-op without pathspec revision --simplify-merges: do not leave commits unprocessed revision --simplify-merges: use decoration instead of commit->util field Documentation: rev-list-options: move --simplify-merges documentation filter-branch: use --simplify-merges filter-branch: fix ref rewriting with --subdirectory-filter filter-branch: Extend test to show rewriting bug Topo-sort before --simplify-merges revision traversal: show full history with merge simplification revision.c: whitespace fixmaint
Junio C Hamano
17 years ago
6 changed files with 338 additions and 41 deletions
@ -0,0 +1,93 @@
@@ -0,0 +1,93 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='merge simplification' |
||||
|
||||
. ./test-lib.sh |
||||
|
||||
note () { |
||||
git tag "$1" |
||||
} |
||||
|
||||
_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' |
||||
_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" |
||||
|
||||
unnote () { |
||||
git name-rev --tags --stdin | sed -e "s|$_x40 (tags/\([^)]*\)) |\1 |g" |
||||
} |
||||
|
||||
test_expect_success setup ' |
||||
echo "Hi there" >file && |
||||
git add file && |
||||
test_tick && git commit -m "Initial file" && |
||||
note A && |
||||
|
||||
git branch other-branch && |
||||
|
||||
echo "Hello" >file && |
||||
git add file && |
||||
test_tick && git commit -m "Modified file" && |
||||
note B && |
||||
|
||||
git checkout other-branch && |
||||
|
||||
echo "Hello" >file && |
||||
git add file && |
||||
test_tick && git commit -m "Modified the file identically" && |
||||
note C && |
||||
|
||||
echo "This is a stupid example" >another-file && |
||||
git add another-file && |
||||
test_tick && git commit -m "Add another file" && |
||||
note D && |
||||
|
||||
test_tick && git merge -m "merge" master && |
||||
note E && |
||||
|
||||
echo "Yet another" >elif && |
||||
git add elif && |
||||
test_tick && git commit -m "Irrelevant change" && |
||||
note F && |
||||
|
||||
git checkout master && |
||||
echo "Yet another" >elif && |
||||
git add elif && |
||||
test_tick && git commit -m "Another irrelevant change" && |
||||
note G && |
||||
|
||||
test_tick && git merge -m "merge" other-branch && |
||||
note H && |
||||
|
||||
echo "Final change" >file && |
||||
test_tick && git commit -a -m "Final change" && |
||||
note I |
||||
' |
||||
|
||||
FMT='tformat:%P %H | %s' |
||||
|
||||
check_result () { |
||||
for c in $1 |
||||
do |
||||
echo "$c" |
||||
done >expect && |
||||
shift && |
||||
param="$*" && |
||||
test_expect_success "log $param" ' |
||||
git log --pretty="$FMT" --parents $param | |
||||
unnote >actual && |
||||
sed -e "s/^.* \([^ ]*\) .*/\1/" >check <actual && |
||||
test_cmp expect check || { |
||||
cat actual |
||||
false |
||||
} |
||||
' |
||||
} |
||||
|
||||
check_result 'I H G F E D C B A' --full-history |
||||
check_result 'I H E C B A' --full-history -- file |
||||
check_result 'I H E C B A' --full-history --topo-order -- file |
||||
check_result 'I H E C B A' --full-history --date-order -- file |
||||
check_result 'I E C B A' --simplify-merges -- file |
||||
check_result 'I B A' -- file |
||||
check_result 'I B A' --topo-order -- file |
||||
|
||||
test_done |
Loading…
Reference in new issue