Subject: shell compatibility issues with SunOS 5.10

From: Nguyen Thai Ngoc Duy <[email-masked]>
Date: Wed, 6 May 2009 15:59:13 +1000

Hi,

I did "make test" on a SunOS 5.10 and it failed. With the below patch,
only t7400 and t8005 kept failing. For the first case, t7400.5 failed
because extensive use of sed to normalize path in git-submodule.sh

	# normalize path:
	# multiple //; leading ./; /./; /../; trailing /
	path=$(printf '%s/\n' "$path" |
		sed -e '
			s|//*|/|g
			s|^\(\./\)*||
			s|/\./|/|g
			:start
			s|\([^/]*\)/\.\./||
			tstart
			s|/*$||
		')

The second failed because it used extended regexp

grep "^\(author\|summary\) "

I'm no sed/grep wizard (and quite new to SunOS too), no clue how to do
it properly. Any help?

diff --git a/git-am.sh b/git-am.sh
index 6d1848b..5a91d52 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -46,7 +46,7 @@ fi
 sq () {
 	for sqarg
 	do
-		printf "%s" "$sqarg" |
+		printf "%s\n" "$sqarg" |
 		sed -e 's/'\''/'\''\\'\'''\''/g' -e 's/.*/ '\''&'\''/'
 	done
 }
diff --git a/t/t2019-checkout-sparse.sh b/t/t2019-checkout-sparse.sh
index 4ea1ee6..6949a59 100755
--- a/t/t2019-checkout-sparse.sh
+++ b/t/t2019-checkout-sparse.sh
@@ -68,13 +68,13 @@ test_expect_success 'update narrow prefix with modification' '
 	test -f work1/one &&
 	test -f work2/two &&
 	! test -f work3/three &&
-	grep -q modified work2/two &&
+	grep modified work2/two &&
 
 	! git checkout --sparse=work1/:work3/ &&
 	test -f work1/one &&
 	test -f work2/two &&
 	! test -f work3/three &&
-	grep -q modified work2/two &&
+	grep modified work2/two &&
 	git checkout work2/two
 '
 
diff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh
index b68ab11..61ccdee 100755
--- a/t/t4200-rerere.sh
+++ b/t/t4200-rerere.sh
@@ -57,7 +57,7 @@ test_expect_success 'conflicting merge' '
 	test_must_fail git merge first
 '
 
-sha1=$(sed -e 's/	.*//' .git/MERGE_RR)
+sha1=$(cut -f 1 .git/MERGE_RR)
 rr=.git/rr-cache/$sha1
 test_expect_success 'recorded preimage' "grep ^=======$ $rr/preimage"
 
diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh
index e2aa254..9a916d3 100755
--- a/t/t5300-pack-object.sh
+++ b/t/t5300-pack-object.sh
@@ -315,7 +315,7 @@ test_expect_success 'unpacking with --strict' '
 	head -n 10 LIST | git update-index --index-info &&
 	LI=$(git write-tree) &&
 	rm -f .git/index &&
-	tail -n 10 LIST | git update-index --index-info &&
+	tail -10 LIST | git update-index --index-info &&
 	ST=$(git write-tree) &&
 	PACK5=$( git rev-list --objects "$LIST" "$LI" "$ST" | \
 		git pack-objects test-5 ) &&
@@ -362,7 +362,7 @@ test_expect_success 'index-pack with --strict' '
 	head -n 10 LIST | git update-index --index-info &&
 	LI=$(git write-tree) &&
 	rm -f .git/index &&
-	tail -n 10 LIST | git update-index --index-info &&
+	tail -10 LIST | git update-index --index-info &&
 	ST=$(git write-tree) &&
 	PACK5=$( git rev-list --objects "$LIST" "$LI" "$ST" | \
 		git pack-objects test-5 ) &&
diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh
index e2ef532..b3633d0 100755
--- a/t/t7501-commit.sh
+++ b/t/t7501-commit.sh
@@ -142,10 +142,10 @@ test_expect_success \
 	'editor not invoked if -F is given' '
 	 echo "moo" >file &&
 	 VISUAL=./editor git commit -a -F msg &&
-	 git show -s --pretty=format:"%s" | grep -q good &&
+	 git show -s --pretty=format:"%s" | grep good &&
 	 echo "quack" >file &&
 	 echo "Another good message." | VISUAL=./editor git commit -a -F - &&
-	 git show -s --pretty=format:"%s" | grep -q good
+	 git show -s --pretty=format:"%s" | grep good
 	 '
 # We could just check the head sha1, but checking each commit makes it
 # easier to isolate bugs.