about summary refs log tree commit diff
path: root/third_party/git/t/t1000-read-tree-m-3way.sh
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-09-21T10·03+0300
committerVincent Ambo <mail@tazj.in>2021-09-21T11·29+0300
commit43b1791ec601732ac31195df96781a848360a9ac (patch)
treedaae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/t/t1000-read-tree-m-3way.sh
parent2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff)
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping
it in sync with cgit would be easier this way, but it has proven not
to be a big issue.

On the other hand, a vendored copy of git is an annoying maintenance
burden. It is much easier to rebase the single (dottime) patch that we
have.

This removes the vendored copy of git and instead passes the git
source code to cgit via `pkgs.srcOnly`, which includes the applied
patch so that cgit can continue rendering dottime.

Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/t/t1000-read-tree-m-3way.sh')
-rwxr-xr-xthird_party/git/t/t1000-read-tree-m-3way.sh511
1 files changed, 0 insertions, 511 deletions
diff --git a/third_party/git/t/t1000-read-tree-m-3way.sh b/third_party/git/t/t1000-read-tree-m-3way.sh
deleted file mode 100755
index 013c5a7bc328..000000000000
--- a/third_party/git/t/t1000-read-tree-m-3way.sh
+++ /dev/null
@@ -1,511 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2005 Junio C Hamano
-#
-
-test_description='Three way merge with read-tree -m
-
-This test tries three-way merge with read-tree -m
-
-There is one ancestor (called O for Original) and two branches A
-and B derived from it.  We want to do a 3-way merge between A and
-B, using O as the common ancestor.
-
-    merge A O B
-
-Decisions are made by comparing contents of O, A and B pathname
-by pathname.  The result is determined by the following guiding
-principle:
-
- - If only A does something to it and B does not touch it, take
-   whatever A does.
-
- - If only B does something to it and A does not touch it, take
-   whatever B does.
-
- - If both A and B does something but in the same way, take
-   whatever they do.
-
- - If A and B does something but different things, we need a
-   3-way merge:
-
-   - We cannot do anything about the following cases:
-
-     * O does not have it.  A and B both must be adding to the
-       same path independently.
-
-     * A deletes it.  B must be modifying.
-
-   - Otherwise, A and B are modifying.  Run 3-way merge.
-
-First, the case matrix.
-
- - Vertical axis is for A'\''s actions.
- - Horizontal axis is for B'\''s actions.
-
-.----------------------------------------------------------------.
-| A        B | No Action  |   Delete   |   Modify   |    Add     |
-|------------+------------+------------+------------+------------|
-| No Action  |            |            |            |            |
-|            | select O   | delete     | select B   | select B   |
-|            |            |            |            |            |
-|------------+------------+------------+------------+------------|
-| Delete     |            |            | ********** |    can     |
-|            | delete     | delete     | merge      |    not     |
-|            |            |            |            |  happen    |
-|------------+------------+------------+------------+------------|
-| Modify     |            | ********** | ?????????? |    can     |
-|            | select A   | merge      | select A=B |    not     |
-|            |            |            | merge      |  happen    |
-|------------+------------+------------+------------+------------|
-| Add        |            |    can     |    can     | ?????????? |
-|            | select A   |    not     |    not     | select A=B |
-|            |            |  happen    |  happen    | merge      |
-.----------------------------------------------------------------.
-
-In addition:
-
- SS: a special case of MM, where A and B makes the same modification.
- LL: a special case of AA, where A and B creates the same file.
- TT: a special case of MM, where A and B makes mergeable changes.
- DF: a special case, where A makes a directory and B makes a file.
-
-'
-. ./test-lib.sh
-. "$TEST_DIRECTORY"/lib-read-tree.sh
-. "$TEST_DIRECTORY"/lib-read-tree-m-3way.sh
-
-################################################################
-# Trivial "majority when 3 stages exist" merge plus #2ALT, #3ALT
-# and #5ALT trivial merges.
-
-cat >expected <<\EOF
-100644 X 2	AA
-100644 X 3	AA
-100644 X 0	AN
-100644 X 1	DD
-100644 X 3	DF
-100644 X 2	DF/DF
-100644 X 1	DM
-100644 X 3	DM
-100644 X 1	DN
-100644 X 3	DN
-100644 X 0	LL
-100644 X 1	MD
-100644 X 2	MD
-100644 X 1	MM
-100644 X 2	MM
-100644 X 3	MM
-100644 X 0	MN
-100644 X 0	NA
-100644 X 1	ND
-100644 X 2	ND
-100644 X 0	NM
-100644 X 0	NN
-100644 X 0	SS
-100644 X 1	TT
-100644 X 2	TT
-100644 X 3	TT
-100644 X 2	Z/AA
-100644 X 3	Z/AA
-100644 X 0	Z/AN
-100644 X 1	Z/DD
-100644 X 1	Z/DM
-100644 X 3	Z/DM
-100644 X 1	Z/DN
-100644 X 3	Z/DN
-100644 X 1	Z/MD
-100644 X 2	Z/MD
-100644 X 1	Z/MM
-100644 X 2	Z/MM
-100644 X 3	Z/MM
-100644 X 0	Z/MN
-100644 X 0	Z/NA
-100644 X 1	Z/ND
-100644 X 2	Z/ND
-100644 X 0	Z/NM
-100644 X 0	Z/NN
-EOF
-
-check_result () {
-	git ls-files --stage | sed -e 's/ '"$OID_REGEX"' / X /' >current &&
-	test_cmp expected current
-}
-
-# This is done on an empty work directory, which is the normal
-# merge person behaviour.
-test_expect_success '3-way merge with git read-tree -m, empty cache' '
-	rm -fr [NDMALTS][NDMALTSF] Z &&
-	rm .git/index &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-# This starts out with the first head, which is the normal
-# patch submitter behaviour.
-test_expect_success '3-way merge with git read-tree -m, match H' '
-	rm -fr [NDMALTS][NDMALTSF] Z &&
-	rm .git/index &&
-	read_tree_must_succeed $tree_A &&
-	git checkout-index -f -u -a &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-: <<\END_OF_CASE_TABLE
-
-We have so far tested only empty index and clean-and-matching-A index
-case which are trivial.  Make sure index requirements are also
-checked.
-
-"git read-tree -m O A B"
-
-     O       A       B         result      index requirements
--------------------------------------------------------------------
-  1  missing missing missing   -           must not exist.
- ------------------------------------------------------------------
-  2  missing missing exists    take B*     must match B, if exists.
- ------------------------------------------------------------------
-  3  missing exists  missing   take A*     must match A, if exists.
- ------------------------------------------------------------------
-  4  missing exists  A!=B      no merge    must match A and be
-                                           up-to-date, if exists.
- ------------------------------------------------------------------
-  5  missing exists  A==B      take A      must match A, if exists.
- ------------------------------------------------------------------
-  6  exists  missing missing   remove      must not exist.
- ------------------------------------------------------------------
-  7  exists  missing O!=B      no merge    must not exist.
- ------------------------------------------------------------------
-  8  exists  missing O==B      remove      must not exist.
- ------------------------------------------------------------------
-  9  exists  O!=A    missing   no merge    must match A and be
-                                           up-to-date, if exists.
- ------------------------------------------------------------------
- 10  exists  O==A    missing   no merge    must match A
- ------------------------------------------------------------------
- 11  exists  O!=A    O!=B      no merge    must match A and be
-                     A!=B                  up-to-date, if exists.
- ------------------------------------------------------------------
- 12  exists  O!=A    O!=B      take A      must match A, if exists.
-                     A==B
- ------------------------------------------------------------------
- 13  exists  O!=A    O==B      take A      must match A, if exists.
- ------------------------------------------------------------------
- 14  exists  O==A    O!=B      take B      if exists, must either (1)
-                                           match A and be up-to-date,
-                                           or (2) match B.
- ------------------------------------------------------------------
- 15  exists  O==A    O==B      take B      must match A if exists.
- ------------------------------------------------------------------
- 16  exists  O==A    O==B      barf        must match A if exists.
-     *multi* in one  in another
--------------------------------------------------------------------
-
-Note: we need to be careful in case 2 and 3.  The tree A may contain
-DF (file) when tree B require DF to be a directory by having DF/DF
-(file).
-
-END_OF_CASE_TABLE
-
-test_expect_success '1 - must not have an entry not in A.' '
-	rm -f .git/index XX &&
-	echo XX >XX &&
-	git update-index --add XX &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '2 - must match B in !O && !A && B case.' '
-	rm -f .git/index NA &&
-	cp .orig-B/NA NA &&
-	git update-index --add NA &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '2 - matching B alone is OK in !O && !A && B case.' '
-	rm -f .git/index NA &&
-	cp .orig-B/NA NA &&
-	git update-index --add NA &&
-	echo extra >>NA &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '3 - must match A in !O && A && !B case.' '
-	rm -f .git/index AN &&
-	cp .orig-A/AN AN &&
-	git update-index --add AN &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '3 - matching A alone is OK in !O && A && !B case.' '
-	rm -f .git/index AN &&
-	cp .orig-A/AN AN &&
-	git update-index --add AN &&
-	echo extra >>AN &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '3 (fail) - must match A in !O && A && !B case.' '
-	rm -f .git/index AN &&
-	cp .orig-A/AN AN &&
-	echo extra >>AN &&
-	git update-index --add AN &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '4 - must match and be up-to-date in !O && A && B && A!=B case.' '
-	rm -f .git/index AA &&
-	cp .orig-A/AA AA &&
-	git update-index --add AA &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '4 (fail) - must match and be up-to-date in !O && A && B && A!=B case.' '
-	rm -f .git/index AA &&
-	cp .orig-A/AA AA &&
-	git update-index --add AA &&
-	echo extra >>AA &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '4 (fail) - must match and be up-to-date in !O && A && B && A!=B case.' '
-	rm -f .git/index AA &&
-	cp .orig-A/AA AA &&
-	echo extra >>AA &&
-	git update-index --add AA &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '5 - must match in !O && A && B && A==B case.' '
-	rm -f .git/index LL &&
-	cp .orig-A/LL LL &&
-	git update-index --add LL &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '5 - must match in !O && A && B && A==B case.' '
-	rm -f .git/index LL &&
-	cp .orig-A/LL LL &&
-	git update-index --add LL &&
-	echo extra >>LL &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '5 (fail) - must match A in !O && A && B && A==B case.' '
-	rm -f .git/index LL &&
-	cp .orig-A/LL LL &&
-	echo extra >>LL &&
-	git update-index --add LL &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '6 - must not exist in O && !A && !B case' '
-	rm -f .git/index DD &&
-	echo DD >DD &&
-	git update-index --add DD &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '7 - must not exist in O && !A && B && O!=B case' '
-	rm -f .git/index DM &&
-	cp .orig-B/DM DM &&
-	git update-index --add DM &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '8 - must not exist in O && !A && B && O==B case' '
-	rm -f .git/index DN &&
-	cp .orig-B/DN DN &&
-	git update-index --add DN &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '9 - must match and be up-to-date in O && A && !B && O!=A case' '
-	rm -f .git/index MD &&
-	cp .orig-A/MD MD &&
-	git update-index --add MD &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '9 (fail) - must match and be up-to-date in O && A && !B && O!=A case' '
-	rm -f .git/index MD &&
-	cp .orig-A/MD MD &&
-	git update-index --add MD &&
-	echo extra >>MD &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '9 (fail) - must match and be up-to-date in O && A && !B && O!=A case' '
-	rm -f .git/index MD &&
-	cp .orig-A/MD MD &&
-	echo extra >>MD &&
-	git update-index --add MD &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '10 - must match and be up-to-date in O && A && !B && O==A case' '
-	rm -f .git/index ND &&
-	cp .orig-A/ND ND &&
-	git update-index --add ND &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '10 (fail) - must match and be up-to-date in O && A && !B && O==A case' '
-	rm -f .git/index ND &&
-	cp .orig-A/ND ND &&
-	git update-index --add ND &&
-	echo extra >>ND &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '10 (fail) - must match and be up-to-date in O && A && !B && O==A case' '
-	rm -f .git/index ND &&
-	cp .orig-A/ND ND &&
-	echo extra >>ND &&
-	git update-index --add ND &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '11 - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case' '
-	rm -f .git/index MM &&
-	cp .orig-A/MM MM &&
-	git update-index --add MM &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '11 (fail) - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case' '
-	rm -f .git/index MM &&
-	cp .orig-A/MM MM &&
-	git update-index --add MM &&
-	echo extra >>MM &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '11 (fail) - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case' '
-	rm -f .git/index MM &&
-	cp .orig-A/MM MM &&
-	echo extra >>MM &&
-	git update-index --add MM &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '12 - must match A in O && A && B && O!=A && A==B case' '
-	rm -f .git/index SS &&
-	cp .orig-A/SS SS &&
-	git update-index --add SS &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '12 - must match A in O && A && B && O!=A && A==B case' '
-	rm -f .git/index SS &&
-	cp .orig-A/SS SS &&
-	git update-index --add SS &&
-	echo extra >>SS &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '12 (fail) - must match A in O && A && B && O!=A && A==B case' '
-	rm -f .git/index SS &&
-	cp .orig-A/SS SS &&
-	echo extra >>SS &&
-	git update-index --add SS &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '13 - must match A in O && A && B && O!=A && O==B case' '
-	rm -f .git/index MN &&
-	cp .orig-A/MN MN &&
-	git update-index --add MN &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '13 - must match A in O && A && B && O!=A && O==B case' '
-	rm -f .git/index MN &&
-	cp .orig-A/MN MN &&
-	git update-index --add MN &&
-	echo extra >>MN &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '14 - must match and be up-to-date in O && A && B && O==A && O!=B case' '
-	rm -f .git/index NM &&
-	cp .orig-A/NM NM &&
-	git update-index --add NM &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '14 - may match B in O && A && B && O==A && O!=B case' '
-	rm -f .git/index NM &&
-	cp .orig-B/NM NM &&
-	git update-index --add NM &&
-	echo extra >>NM &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '14 (fail) - must match and be up-to-date in O && A && B && O==A && O!=B case' '
-	rm -f .git/index NM &&
-	cp .orig-A/NM NM &&
-	git update-index --add NM &&
-	echo extra >>NM &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '14 (fail) - must match and be up-to-date in O && A && B && O==A && O!=B case' '
-	rm -f .git/index NM &&
-	cp .orig-A/NM NM &&
-	echo extra >>NM &&
-	git update-index --add NM &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '15 - must match A in O && A && B && O==A && O==B case' '
-	rm -f .git/index NN &&
-	cp .orig-A/NN NN &&
-	git update-index --add NN &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '15 - must match A in O && A && B && O==A && O==B case' '
-	rm -f .git/index NN &&
-	cp .orig-A/NN NN &&
-	git update-index --add NN &&
-	echo extra >>NN &&
-	read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
-	check_result
-'
-
-test_expect_success '15 (fail) - must match A in O && A && B && O==A && O==B case' '
-	rm -f .git/index NN &&
-	cp .orig-A/NN NN &&
-	echo extra >>NN &&
-	git update-index --add NN &&
-	read_tree_must_fail -m $tree_O $tree_A $tree_B
-'
-
-test_expect_success '16 - A matches in one and B matches in another.' '
-	rm -f .git/index F16 &&
-	echo F16 >F16 &&
-	git update-index --add F16 &&
-	tree0=$(git write-tree) &&
-	echo E16 >F16 &&
-	git update-index F16 &&
-	tree1=$(git write-tree) &&
-	read_tree_must_succeed -m $tree0 $tree1 $tree1 $tree0 &&
-	git ls-files --stage
-'
-
-test_done