diff options
Diffstat (limited to 'third_party/git/t/t6012-rev-list-simplify.sh')
-rwxr-xr-x | third_party/git/t/t6012-rev-list-simplify.sh | 277 |
1 files changed, 0 insertions, 277 deletions
diff --git a/third_party/git/t/t6012-rev-list-simplify.sh b/third_party/git/t/t6012-rev-list-simplify.sh deleted file mode 100755 index 7fc10f85930c..000000000000 --- a/third_party/git/t/t6012-rev-list-simplify.sh +++ /dev/null @@ -1,277 +0,0 @@ -#!/bin/sh - -test_description='merge simplification' - -. ./test-lib.sh - -note () { - git tag "$1" -} - -unnote () { - git name-rev --tags --stdin | sed -e "s|$OID_REGEX (tags/\([^)]*\)) |\1 |g" -} - -# -# Create a test repo with interesting commit graph: -# -# A--B----------G--H--I--K--L -# \ \ / / -# \ \ / / -# C------E---F J -# \_/ -# -# The commits are laid out from left-to-right starting with -# the root commit A and terminating at the tip commit L. -# -# There are a few places where we adjust the commit date or -# author date to make the --topo-order, --date-order, and -# --author-date-order flags produce different output. - -test_expect_success setup ' - echo "Hi there" >file && - echo "initial" >lost && - git add file lost && - test_tick && git commit -m "Initial file and lost" && - note A && - - git branch other-branch && - - git symbolic-ref HEAD refs/heads/unrelated && - git rm -f "*" && - echo "Unrelated branch" >side && - git add side && - test_tick && git commit -m "Side root" && - note J && - git checkout master && - - echo "Hello" >file && - echo "second" >lost && - git add file lost && - test_tick && GIT_AUTHOR_DATE=$(($test_tick + 120)) git commit -m "Modified file and lost" && - note B && - - git checkout other-branch && - - echo "Hello" >file && - >lost && - git add file lost && - 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 && - test_must_fail git merge -m "merge" master && - >lost && git commit -a -m "merge" && - 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 && - - git checkout master && - test_tick && git merge --allow-unrelated-histories -m "Coolest" unrelated && - note K && - - echo "Immaterial" >elif && - git add elif && - test_tick && git commit -m "Last" && - note L -' - -FMT='tformat:%P %H | %s' - -check_outcome () { - outcome=$1 - shift - for c in $1 - do - echo "$c" - done >expect && - shift && - param="$*" && - test_expect_$outcome "log $param" ' - git log --pretty="$FMT" --parents $param | - unnote >actual && - sed -e "s/^.* \([^ ]*\) .*/\1/" >check <actual && - test_cmp expect check - ' -} - -check_result () { - check_outcome success "$@" -} - -check_result 'L K J I H F E D C G B A' --full-history --topo-order -check_result 'L K I H G F E D C B J A' --full-history -check_result 'L K I H G F E D C B J A' --full-history --date-order -check_result 'L K I H G F E D B C J A' --full-history --author-date-order -check_result 'K I H E C B A' --full-history -- file -check_result 'K I H E C B A' --full-history --topo-order -- file -check_result 'K I H E C B A' --full-history --date-order -- file -check_result 'K I H E B C A' --full-history --author-date-order -- file -check_result 'I E C B A' --simplify-merges -- file -check_result 'I E C B A' --simplify-merges --topo-order -- file -check_result 'I E C B A' --simplify-merges --date-order -- file -check_result 'I E B C A' --simplify-merges --author-date-order -- file -check_result 'I B A' -- file -check_result 'I B A' --topo-order -- file -check_result 'I B A' --date-order -- file -check_result 'I B A' --author-date-order -- file -check_result 'H' --first-parent -- another-file -check_result 'H' --first-parent --topo-order -- another-file - -check_result 'E C B A' --full-history E -- lost -test_expect_success 'full history simplification without parent' ' - printf "%s\n" E C B A >expect && - git log --pretty="$FMT" --full-history E -- lost | - unnote >actual && - sed -e "s/^.* \([^ ]*\) .*/\1/" >check <actual && - test_cmp expect check -' - -test_expect_success '--full-diff is not affected by --parents' ' - git log -p --pretty="%H" --full-diff -- file >expected && - git log -p --pretty="%H" --full-diff --parents -- file >actual && - test_cmp expected actual -' - -# -# Create a new history to demonstrate the value of --show-pulls -# with respect to the subtleties of simplified history, --full-history, -# and --simplify-merges. -# -# .-A---M-----C--N---O---P -# / / \ \ \/ / / -# I B \ R-'`-Z' / -# \ / \/ / -# \ / /\ / -# `---X--' `---Y--' -# -# This example is explained in Documentation/rev-list-options.txt - -test_expect_success 'rebuild repo' ' - rm -rf .git * && - git init && - git switch -c topic && - - echo base >file && - git add file && - test_commit I && - - echo A >file && - git add file && - test_commit A && - - git switch -c branchB I && - echo B >file && - git add file && - test_commit B && - - git switch topic && - test_must_fail git merge -m "M" B && - echo A >file && - echo B >>file && - git add file && - git merge --continue && - note M && - - echo C >other && - git add other && - test_commit C && - - git switch -c branchX I && - echo X >file && - git add file && - test_commit X && - - git switch -c branchR M && - git merge -m R -Xtheirs X && - note R && - - git switch topic && - git merge -m N R && - note N && - - git switch -c branchY M && - echo Y >y && - git add y && - test_commit Y && - - git switch -c branchZ C && - echo Z >z && - git add z && - test_commit Z && - - git switch topic && - git merge -m O Z && - note O && - - git merge -m P Y && - note P -' - -check_result 'X I' -- file -check_result 'N R X I' --show-pulls -- file - -check_result 'P O N R X M B A I' --full-history --topo-order -- file -check_result 'N R X M B A I' --simplify-merges --topo-order --show-pulls -- file -check_result 'R X M B A I' --simplify-merges --topo-order -- file -check_result 'N M A I' --first-parent -- file -check_result 'N M A I' --first-parent --show-pulls -- file - -# --ancestry-path implies --full-history -check_result 'P O N R M' --topo-order \ - --ancestry-path A..HEAD -- file -check_result 'P O N R M' --topo-order \ - --show-pulls \ - --ancestry-path A..HEAD -- file -check_result 'P O N R M' --topo-order \ - --full-history \ - --ancestry-path A..HEAD -- file -check_result 'R M' --topo-order \ - --simplify-merges \ - --ancestry-path A..HEAD -- file -check_result 'N R M' --topo-order \ - --simplify-merges --show-pulls \ - --ancestry-path A..HEAD -- file - -test_expect_success 'log --graph --simplify-merges --show-pulls' ' - cat >expect <<-\EOF && - * N - * R - |\ - | * X - * | M - |\ \ - | * | B - | |/ - * / A - |/ - * I - EOF - git log --graph --pretty="%s" \ - --simplify-merges --show-pulls \ - -- file >actual && - test_cmp expect actual -' - -test_done |