about summary refs log tree commit diff
path: root/third_party/git/t/t5501-fetch-push-alternates.sh
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/t/t5501-fetch-push-alternates.sh')
-rwxr-xr-xthird_party/git/t/t5501-fetch-push-alternates.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/third_party/git/t/t5501-fetch-push-alternates.sh b/third_party/git/t/t5501-fetch-push-alternates.sh
new file mode 100755
index 000000000000..1bc57ac03f9d
--- /dev/null
+++ b/third_party/git/t/t5501-fetch-push-alternates.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+test_description='fetch/push involving alternates'
+. ./test-lib.sh
+
+count_objects () {
+	loose=0 inpack=0
+	eval "$(
+		git count-objects -v |
+		sed -n -e 's/^count: \(.*\)/loose=\1/p' \
+		    -e 's/^in-pack: \(.*\)/inpack=\1/p'
+	)" &&
+	echo $(( $loose + $inpack ))
+}
+
+
+test_expect_success setup '
+	(
+		git init original &&
+		cd original &&
+		i=0 &&
+		while test $i -le 100
+		do
+			echo "$i" >count &&
+			git add count &&
+			git commit -m "$i" || exit
+			i=$(($i + 1))
+		done
+	) &&
+	(
+		git clone --reference=original "file://$(pwd)/original" one &&
+		cd one &&
+		echo Z >count &&
+		git add count &&
+		git commit -m Z &&
+		count_objects >../one.count
+	) &&
+	A=$(pwd)/original/.git/objects &&
+	git init receiver &&
+	echo "$A" >receiver/.git/objects/info/alternates &&
+	git init fetcher &&
+	echo "$A" >fetcher/.git/objects/info/alternates
+'
+
+test_expect_success 'pushing into a repository with the same alternate' '
+	(
+		cd one &&
+		git push ../receiver master:refs/heads/it
+	) &&
+	(
+		cd receiver &&
+		count_objects >../receiver.count
+	) &&
+	test_cmp one.count receiver.count
+'
+
+test_expect_success 'fetching from a repository with the same alternate' '
+	(
+		cd fetcher &&
+		git fetch ../one master:refs/heads/it &&
+		count_objects >../fetcher.count
+	) &&
+	test_cmp one.count fetcher.count
+'
+
+test_done