about summary refs log tree commit diff
path: root/third_party/git/t/t5323-pack-redundant.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/t5323-pack-redundant.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/t5323-pack-redundant.sh')
-rwxr-xr-xthird_party/git/t/t5323-pack-redundant.sh467
1 files changed, 0 insertions, 467 deletions
diff --git a/third_party/git/t/t5323-pack-redundant.sh b/third_party/git/t/t5323-pack-redundant.sh
deleted file mode 100755
index 6b4d1ca3536a..000000000000
--- a/third_party/git/t/t5323-pack-redundant.sh
+++ /dev/null
@@ -1,467 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2018 Jiang Xin
-#
-
-test_description='Test git pack-redundant
-
-In order to test git-pack-redundant, we will create a number of objects and
-packs in the repository `master.git`. The relationship between packs (P1-P8)
-and objects (T, A-R) is showed in the following chart. Objects of a pack will
-be marked with letter x, while objects of redundant packs will be marked with
-exclamation point, and redundant pack itself will be marked with asterisk.
-
-	| T A B C D E F G H I J K L M N O P Q R
-    ----+--------------------------------------
-    P1  | x x x x x x x                       x
-    P2* |     ! ! ! !   ! ! !
-    P3  |             x     x x x x x
-    P4* |                     ! ! ! !     !
-    P5  |               x x           x x
-    P6* |                             ! !   !
-    P7  |                                 x x
-    P8* |   !
-    ----+--------------------------------------
-    ALL | x x x x x x x x x x x x x x x x x x x
-
-Another repository `shared.git` has unique objects (X-Z), while other objects
-(marked with letter s) are shared through alt-odb (of `master.git`). The
-relationship between packs and objects is as follows:
-
-	| T A B C D E F G H I J K L M N O P Q R   X Y Z
-    ----+----------------------------------------------
-    Px1 |   s s s                                 x x x
-    Px2 |         s s s                           x x x
-'
-
-. ./test-lib.sh
-
-master_repo=master.git
-shared_repo=shared.git
-
-# Create commits in <repo> and assign each commit's oid to shell variables
-# given in the arguments (A, B, and C). E.g.:
-#
-#     create_commits_in <repo> A B C
-#
-# NOTE: Avoid calling this function from a subshell since variable
-# assignments will disappear when subshell exits.
-create_commits_in () {
-	repo="$1" &&
-	if ! parent=$(git -C "$repo" rev-parse HEAD^{} 2>/dev/null)
-	then
-		parent=
-	fi &&
-	T=$(git -C "$repo" write-tree) &&
-	shift &&
-	while test $# -gt 0
-	do
-		name=$1 &&
-		test_tick &&
-		if test -z "$parent"
-		then
-			oid=$(echo $name | git -C "$repo" commit-tree $T)
-		else
-			oid=$(echo $name | git -C "$repo" commit-tree -p $parent $T)
-		fi &&
-		eval $name=$oid &&
-		parent=$oid &&
-		shift ||
-		return 1
-	done &&
-	git -C "$repo" update-ref refs/heads/master $oid
-}
-
-# Create pack in <repo> and assign pack id to variable given in the 2nd argument
-# (<name>). Commits in the pack will be read from stdin. E.g.:
-#
-#     create_pack_in <repo> <name> <<-EOF
-#         ...
-#         EOF
-#
-# NOTE: commits from stdin should be given using heredoc, not using pipe, and
-# avoid calling this function from a subshell since variable assignments will
-# disappear when subshell exits.
-create_pack_in () {
-	repo="$1" &&
-	name="$2" &&
-	pack=$(git -C "$repo/objects/pack" pack-objects -q pack) &&
-	eval $name=$pack &&
-	eval P$pack=$name:$pack
-}
-
-format_packfiles () {
-	sed \
-		-e "s#.*/pack-\(.*\)\.idx#\1#" \
-		-e "s#.*/pack-\(.*\)\.pack#\1#" |
-	sort -u |
-	while read p
-	do
-		if test -z "$(eval echo \${P$p})"
-		then
-			echo $p
-		else
-			eval echo "\${P$p}"
-		fi
-	done |
-	sort
-}
-
-test_expect_success 'setup master repo' '
-	git init --bare "$master_repo" &&
-	create_commits_in "$master_repo" A B C D E F G H I J K L M N O P Q R
-'
-
-#############################################################################
-# Chart of packs and objects for this test case
-#
-#         | T A B C D E F G H I J K L M N O P Q R
-#     ----+--------------------------------------
-#     P1  | x x x x x x x                       x
-#     P2  |     x x x x   x x x
-#     P3  |             x     x x x x x
-#     ----+--------------------------------------
-#     ALL | x x x x x x x x x x x x x x         x
-#
-#############################################################################
-test_expect_success 'master: no redundant for pack 1, 2, 3' '
-	create_pack_in "$master_repo" P1 <<-EOF &&
-		$T
-		$A
-		$B
-		$C
-		$D
-		$E
-		$F
-		$R
-		EOF
-	create_pack_in "$master_repo" P2 <<-EOF &&
-		$B
-		$C
-		$D
-		$E
-		$G
-		$H
-		$I
-		EOF
-	create_pack_in "$master_repo" P3 <<-EOF &&
-		$F
-		$I
-		$J
-		$K
-		$L
-		$M
-		EOF
-	(
-		cd "$master_repo" &&
-		git pack-redundant --all >out &&
-		test_must_be_empty out
-	)
-'
-
-#############################################################################
-# Chart of packs and objects for this test case
-#
-#         | T A B C D E F G H I J K L M N O P Q R
-#     ----+--------------------------------------
-#     P1  | x x x x x x x                       x
-#     P2  |     x x x x   x x x
-#     P3* |             !     ! ! ! ! !
-#     P4  |                     x x x x     x
-#     P5  |               x x           x x
-#     ----+--------------------------------------
-#     ALL | x x x x x x x x x x x x x x x x x   x
-#
-#############################################################################
-test_expect_success 'master: one of pack-2/pack-3 is redundant' '
-	create_pack_in "$master_repo" P4 <<-EOF &&
-		$J
-		$K
-		$L
-		$M
-		$P
-		EOF
-	create_pack_in "$master_repo" P5 <<-EOF &&
-		$G
-		$H
-		$N
-		$O
-		EOF
-	(
-		cd "$master_repo" &&
-		cat >expect <<-EOF &&
-			P3:$P3
-			EOF
-		git pack-redundant --all >out &&
-		format_packfiles <out >actual &&
-		test_cmp expect actual
-	)
-'
-
-#############################################################################
-# Chart of packs and objects for this test case
-#
-#         | T A B C D E F G H I J K L M N O P Q R
-#     ----+--------------------------------------
-#     P1  | x x x x x x x                       x
-#     P2* |     ! ! ! !   ! ! !
-#     P3  |             x     x x x x x
-#     P4* |                     ! ! ! !     !
-#     P5  |               x x           x x
-#     P6* |                             ! !   !
-#     P7  |                                 x x
-#     ----+--------------------------------------
-#     ALL | x x x x x x x x x x x x x x x x x x x
-#
-#############################################################################
-test_expect_success 'master: pack 2, 4, and 6 are redundant' '
-	create_pack_in "$master_repo" P6 <<-EOF &&
-		$N
-		$O
-		$Q
-		EOF
-	create_pack_in "$master_repo" P7 <<-EOF &&
-		$P
-		$Q
-		EOF
-	(
-		cd "$master_repo" &&
-		cat >expect <<-EOF &&
-			P2:$P2
-			P4:$P4
-			P6:$P6
-			EOF
-		git pack-redundant --all >out &&
-		format_packfiles <out >actual &&
-		test_cmp expect actual
-	)
-'
-
-#############################################################################
-# Chart of packs and objects for this test case
-#
-#         | T A B C D E F G H I J K L M N O P Q R
-#     ----+--------------------------------------
-#     P1  | x x x x x x x                       x
-#     P2* |     ! ! ! !   ! ! !
-#     P3  |             x     x x x x x
-#     P4* |                     ! ! ! !     !
-#     P5  |               x x           x x
-#     P6* |                             ! !   !
-#     P7  |                                 x x
-#     P8* |   !
-#     ----+--------------------------------------
-#     ALL | x x x x x x x x x x x x x x x x x x x
-#
-#############################################################################
-test_expect_success 'master: pack-8 (subset of pack-1) is also redundant' '
-	create_pack_in "$master_repo" P8 <<-EOF &&
-		$A
-		EOF
-	(
-		cd "$master_repo" &&
-		cat >expect <<-EOF &&
-			P2:$P2
-			P4:$P4
-			P6:$P6
-			P8:$P8
-			EOF
-		git pack-redundant --all >out &&
-		format_packfiles <out >actual &&
-		test_cmp expect actual
-	)
-'
-
-test_expect_success 'master: clean loose objects' '
-	(
-		cd "$master_repo" &&
-		git prune-packed &&
-		find objects -type f | sed -e "/objects\/pack\//d" >out &&
-		test_must_be_empty out
-	)
-'
-
-test_expect_success 'master: remove redundant packs and pass fsck' '
-	(
-		cd "$master_repo" &&
-		git pack-redundant --all | xargs rm &&
-		git fsck &&
-		git pack-redundant --all >out &&
-		test_must_be_empty out
-	)
-'
-
-# The following test cases will execute inside `shared.git`, instead of
-# inside `master.git`.
-test_expect_success 'setup shared.git' '
-	git clone --mirror "$master_repo" "$shared_repo" &&
-	(
-		cd "$shared_repo" &&
-		printf "../../$master_repo/objects\n" >objects/info/alternates
-	)
-'
-
-test_expect_success 'shared: all packs are redundant, but no output without --alt-odb' '
-	(
-		cd "$shared_repo" &&
-		git pack-redundant --all >out &&
-		test_must_be_empty out
-	)
-'
-
-#############################################################################
-# Chart of packs and objects for this test case
-#
-#     ================ master.git ===============
-#         | T A B C D E F G H I J K L M N O P Q R  <----------+
-#     ----+--------------------------------------             |
-#     P1  | x x x x x x x                       x             |
-#     P3  |             x     x x x x x                       |
-#     P5  |               x x           x x                   |
-#     P7  |                                 x x               |
-#     ----+--------------------------------------             |
-#     ALL | x x x x x x x x x x x x x x x x x x x             |
-#                                                             |
-#                                                             |
-#     ================ shared.git ===============             |
-#         | T A B C D E F G H I J K L M N O P Q R  <objects/info/alternates>
-#     ----+--------------------------------------
-#     P1* | s s s s s s s                       s
-#     P3* |             s     s s s s s
-#     P5* |               s s           s s
-#     P7* |                                 s s
-#     ----+--------------------------------------
-#     ALL | x x x x x x x x x x x x x x x x x x x
-#
-#############################################################################
-test_expect_success 'shared: show redundant packs in stderr for verbose mode' '
-	(
-		cd "$shared_repo" &&
-		cat >expect <<-EOF &&
-			P1:$P1
-			P3:$P3
-			P5:$P5
-			P7:$P7
-			EOF
-		git pack-redundant --all --verbose >out 2>out.err &&
-		test_must_be_empty out &&
-		grep "pack$" out.err | format_packfiles >actual &&
-		test_cmp expect actual
-	)
-'
-
-test_expect_success 'shared: remove redundant packs, no packs left' '
-	(
-		cd "$shared_repo" &&
-		cat >expect <<-EOF &&
-			fatal: Zero packs found!
-			EOF
-		git pack-redundant --all --alt-odb | xargs rm &&
-		git fsck &&
-		test_must_fail git pack-redundant --all --alt-odb >actual 2>&1 &&
-		test_cmp expect actual
-	)
-'
-
-test_expect_success 'shared: create new objects and packs' '
-	create_commits_in "$shared_repo" X Y Z &&
-	create_pack_in "$shared_repo" Px1 <<-EOF &&
-		$X
-		$Y
-		$Z
-		$A
-		$B
-		$C
-		EOF
-	create_pack_in "$shared_repo" Px2 <<-EOF
-		$X
-		$Y
-		$Z
-		$D
-		$E
-		$F
-		EOF
-'
-
-test_expect_success 'shared: no redundant without --alt-odb' '
-	(
-		cd "$shared_repo" &&
-		git pack-redundant --all >out &&
-		test_must_be_empty out
-	)
-'
-
-#############################################################################
-# Chart of packs and objects for this test case
-#
-#     ================ master.git ===============
-#         | T A B C D E F G H I J K L M N O P Q R  <----------------+
-#     ----+--------------------------------------                   |
-#     P1  | x x x x x x x                       x                   |
-#     P3  |             x     x x x x x                             |
-#     P5  |               x x           x x                         |
-#     P7  |                                 x x                     |
-#     ----+--------------------------------------                   |
-#     ALL | x x x x x x x x x x x x x x x x x x x                   |
-#                                                                   |
-#                                                                   |
-#     ================ shared.git =======================           |
-#         | T A B C D E F G H I J K L M N O P Q R   X Y Z <objects/info/alternates>
-#     ----+----------------------------------------------
-#     Px1 |   s s s                                 x x x
-#     Px2*|         s s s                           ! ! !
-#     ----+----------------------------------------------
-#     ALL | s s s s s s s s s s s s s s s s s s s   x x x
-#
-#############################################################################
-test_expect_success 'shared: one pack is redundant with --alt-odb' '
-	(
-		cd "$shared_repo" &&
-		git pack-redundant --all --alt-odb >out &&
-		format_packfiles <out >actual &&
-		test_line_count = 1 actual
-	)
-'
-
-#############################################################################
-# Chart of packs and objects for this test case
-#
-#     ================ master.git ===============
-#         | T A B C D E F G H I J K L M N O P Q R  <----------------+
-#     ----+--------------------------------------                   |
-#     P1  | x x x x x x x                       x                   |
-#     P3  |             x     x x x x x                             |
-#     P5  |               x x           x x                         |
-#     P7  |                                 x x                     |
-#     ----+--------------------------------------                   |
-#     ALL | x x x x x x x x x x x x x x x x x x x                   |
-#                                                                   |
-#                                                                   |
-#     ================ shared.git =======================           |
-#         | T A B C D E F G H I J K L M N O P Q R   X Y Z <objects/info/alternates>
-#     ----+----------------------------------------------
-#     Px1*|   s s s                                 i i i
-#     Px2*|         s s s                           i i i
-#     ----+----------------------------------------------
-#     ALL | s s s s s s s s s s s s s s s s s s s   i i i
-#                                                  (ignored objects, marked with i)
-#
-#############################################################################
-test_expect_success 'shared: ignore unique objects and all two packs are redundant' '
-	(
-		cd "$shared_repo" &&
-		cat >expect <<-EOF &&
-			Px1:$Px1
-			Px2:$Px2
-			EOF
-		git pack-redundant --all --alt-odb >out <<-EOF &&
-			$X
-			$Y
-			$Z
-			EOF
-		format_packfiles <out >actual &&
-		test_cmp expect actual
-	)
-'
-
-test_done