# [PATCH V2] t9810: Do not use sed -i

4 messages from 2013-01-01 to 2013-01-03. Participants: Torsten Bögershausen, Pete Wyckoff, Junio C Hamano.
Thread: https://gitlist.dev/t/32505

## Torsten Bögershausen, 2013-01-01 23:20

Subject: [PATCH V2] t9810: Do not use sed -i
Message-ID: <201301020020.38535.tboegi@web.de>
URL: https://gitlist.dev/e/201301020020.38535.tboegi%40web.de

```
sed -i is not portable on all systems.
Use sed with different input and output files.
Utilize a tmp file whenever needed

Added missing && at 2 places

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
---
Changes since v1:
Use "sed <infile >outfile"
Added missing && at 2 places (thanks for catching)
 t/t9810-git-p4-rcs.sh | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/t/t9810-git-p4-rcs.sh b/t/t9810-git-p4-rcs.sh
index 0c2fc3e..01a9921 100755
--- a/t/t9810-git-p4-rcs.sh
+++ b/t/t9810-git-p4-rcs.sh
@@ -26,10 +26,8 @@ test_expect_success 'init depot' '
 		line7
 		line8
 		EOF
-		cp filek fileko &&
-		sed -i "s/Revision/Revision: do not scrub me/" fileko
-		cp fileko file_text &&
-		sed -i "s/Id/Id: do not scrub me/" file_text
+		sed "s/Revision/Revision: do not scrub me/" <filek >fileko &&
+		sed "s/Id/Id: do not scrub me/" <fileko >file_text &&
 		p4 add -t text+k filek &&
 		p4 submit -d "filek" &&
 		p4 add -t text+ko fileko &&
@@ -88,7 +86,8 @@ test_expect_success 'edit far away from RCS lines' '
 	(
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
-		sed -i "s/^line7/line7 edit/" filek &&
+		sed "s/^line7/line7 edit/" <filek >filek.tmp &&
+		mv -f filek.tmp filek &&
 		git commit -m "filek line7 edit" filek &&
 		git p4 submit &&
 		scrub_k_check filek
@@ -105,7 +104,8 @@ test_expect_success 'edit near RCS lines' '
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
 		git config git-p4.attemptRCSCleanup true &&
-		sed -i "s/^line4/line4 edit/" filek &&
+		sed "s/^line4/line4 edit/" <filek >filek.tmp &&
+		mv -f filek.tmp filek &&
 		git commit -m "filek line4 edit" filek &&
 		git p4 submit &&
 		scrub_k_check filek
@@ -122,7 +122,8 @@ test_expect_success 'edit keyword lines' '
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
 		git config git-p4.attemptRCSCleanup true &&
-		sed -i "/Revision/d" filek &&
+		sed "/Revision/d" <filek >filek.tmp &&
+		mv -f filek.tmp filek &&
 		git commit -m "filek remove Revision line" filek &&
 		git p4 submit &&
 		scrub_k_check filek
@@ -139,7 +140,8 @@ test_expect_success 'scrub ko files differently' '
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
 		git config git-p4.attemptRCSCleanup true &&
-		sed -i "s/^line4/line4 edit/" fileko &&
+		sed <fileko "s/^line4/line4 edit/" >fileko.tmp &&
+		mv -f fileko.tmp fileko &&
 		git commit -m "fileko line4 edit" fileko &&
 		git p4 submit &&
 		scrub_ko_check fileko &&
@@ -189,12 +191,14 @@ test_expect_success 'do not scrub plain text' '
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
 		git config git-p4.attemptRCSCleanup true &&
-		sed -i "s/^line4/line4 edit/" file_text &&
+		sed "s/^line4/line4 edit/" <file_text >file_text.tmp &&
+		mv -f file_text.tmp file_text &&
 		git commit -m "file_text line4 edit" file_text &&
 		(
 			cd "$cli" &&
 			p4 open file_text &&
-			sed -i "s/^line5/line5 p4 edit/" file_text &&
+			sed "s/^line5/line5 p4 edit/" <file_text >file_text.tmp &&
+			mv -f file_text.tmp file_text &&
 			p4 submit -d "file5 p4 edit"
 		) &&
 		echo s | test_expect_code 1 git p4 submit &&
-- 
1.8.0.197.g5a90748

```

## Pete Wyckoff, 2013-01-02 22:44

Subject: Re: [PATCH V2] t9810: Do not use sed -i
Message-ID: <20130102224446.GA12363@padd.com>
URL: https://gitlist.dev/e/20130102224446.GA12363%40padd.com
In-Reply-To: <201301020020.38535.tboegi@web.de>

```
tboegi@web.de wrote on Wed, 02 Jan 2013 00:20 +0100:
> sed -i is not portable on all systems.
> Use sed with different input and output files.
> Utilize a tmp file whenever needed
> 
> Added missing && at 2 places
> 
> Signed-off-by: Torsten Bögershausen <tboegi@web.de>

One more teensy fix is needed in this hunk, following Junio's
comment about redirections going at the end:

> @@ -139,7 +140,8 @@ test_expect_success 'scrub ko files differently' '
>  		cd "$git" &&
>  		git config git-p4.skipSubmitEdit true &&
>  		git config git-p4.attemptRCSCleanup true &&
> -		sed -i "s/^line4/line4 edit/" fileko &&
> +		sed <fileko "s/^line4/line4 edit/" >fileko.tmp &&
> +		mv -f fileko.tmp fileko &&
>  		git commit -m "fileko line4 edit" fileko &&
>  		git p4 submit &&
>  		scrub_ko_check fileko &&

I checked that the test still works with your changes.

Thanks for the cleanup!

Acked-by: Pete Wyckoff <pw@padd.com>

		-- Pete

```

## Junio C Hamano, 2013-01-02 23:06

Subject: Re: [PATCH V2] t9810: Do not use sed -i
Message-ID: <7vhamz18y3.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vhamz18y3.fsf%40alter.siamese.dyndns.org
In-Reply-To: <20130102224446.GA12363@padd.com>

```
Pete Wyckoff <pw@padd.com> writes:

> tboegi@web.de wrote on Wed, 02 Jan 2013 00:20 +0100:
>> sed -i is not portable on all systems.
>> Use sed with different input and output files.
>> Utilize a tmp file whenever needed
>> 
>> Added missing && at 2 places
>> 
>> Signed-off-by: Torsten Bögershausen <tboegi@web.de>
>
> One more teensy fix is needed in this hunk, following Junio's
> comment about redirections going at the end:

I've already pushed out the previous one on 'pu' after fixing it up
like this.

Thanks.  Anything I missed?

Date: Tue, 1 Jan 2013 22:40:37 +0100
Subject: [PATCH] t9810: Do not use sed -i

sed -i is not portable on all systems.  Use sed with different input
and output files.  Utilize a tmp file whenever needed.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 t/t9810-git-p4-rcs.sh | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/t/t9810-git-p4-rcs.sh b/t/t9810-git-p4-rcs.sh
index 0c2fc3e..34fbc90 100755
--- a/t/t9810-git-p4-rcs.sh
+++ b/t/t9810-git-p4-rcs.sh
@@ -26,10 +26,8 @@ test_expect_success 'init depot' '
 		line7
 		line8
 		EOF
-		cp filek fileko &&
-		sed -i "s/Revision/Revision: do not scrub me/" fileko
-		cp fileko file_text &&
-		sed -i "s/Id/Id: do not scrub me/" file_text
+		sed "s/Revision/Revision: do not scrub me/" <filek >fileko &&
+		sed "s/Id/Id: do not scrub me/" <fileko >file_text &&
 		p4 add -t text+k filek &&
 		p4 submit -d "filek" &&
 		p4 add -t text+ko fileko &&
@@ -88,7 +86,8 @@ test_expect_success 'edit far away from RCS lines' '
 	(
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
-		sed -i "s/^line7/line7 edit/" filek &&
+		sed "s/^line7/line7 edit/" <filek >filek.tmp &&
+		mv -f filek.tmp filek &&
 		git commit -m "filek line7 edit" filek &&
 		git p4 submit &&
 		scrub_k_check filek
@@ -105,7 +104,8 @@ test_expect_success 'edit near RCS lines' '
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
 		git config git-p4.attemptRCSCleanup true &&
-		sed -i "s/^line4/line4 edit/" filek &&
+		sed "s/^line4/line4 edit/" <filek >filek.tmp &&
+		mv -f filek.tmp filek &&
 		git commit -m "filek line4 edit" filek &&
 		git p4 submit &&
 		scrub_k_check filek
@@ -122,7 +122,8 @@ test_expect_success 'edit keyword lines' '
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
 		git config git-p4.attemptRCSCleanup true &&
-		sed -i "/Revision/d" filek &&
+		sed "/Revision/d" <filek >filek.tmp &&
+		mv -f filek.tmp filek &&
 		git commit -m "filek remove Revision line" filek &&
 		git p4 submit &&
 		scrub_k_check filek
@@ -139,7 +140,8 @@ test_expect_success 'scrub ko files differently' '
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
 		git config git-p4.attemptRCSCleanup true &&
-		sed -i "s/^line4/line4 edit/" fileko &&
+		sed "s/^line4/line4 edit/" <fileko >fileko.tmp &&
+		mv -f fileko.tmp fileko &&
 		git commit -m "fileko line4 edit" fileko &&
 		git p4 submit &&
 		scrub_ko_check fileko &&
@@ -189,12 +191,14 @@ test_expect_success 'do not scrub plain text' '
 		cd "$git" &&
 		git config git-p4.skipSubmitEdit true &&
 		git config git-p4.attemptRCSCleanup true &&
-		sed -i "s/^line4/line4 edit/" file_text &&
+		sed "s/^line4/line4 edit/" <file_text >file_text.tmp &&
+		mv -f file_text.tmp file_text &&
 		git commit -m "file_text line4 edit" file_text &&
 		(
 			cd "$cli" &&
 			p4 open file_text &&
-			sed -i "s/^line5/line5 p4 edit/" file_text &&
+			sed "s/^line5/line5 p4 edit/" <file_text >file_text.tmp &&
+			mv -f file_text.tmp file_text &&
 			p4 submit -d "file5 p4 edit"
 		) &&
 		echo s | test_expect_code 1 git p4 submit &&
-- 
1.8.1.203.gc241474

```

## Pete Wyckoff, 2013-01-03 03:08

Subject: Re: [PATCH V2] t9810: Do not use sed -i
Message-ID: <20130103030811.GA30979@padd.com>
URL: https://gitlist.dev/e/20130103030811.GA30979%40padd.com
In-Reply-To: <7vhamz18y3.fsf@alter.siamese.dyndns.org>

```
gitster@pobox.com wrote on Wed, 02 Jan 2013 15:06 -0800:
> Pete Wyckoff <pw@padd.com> writes:
> 
> > tboegi@web.de wrote on Wed, 02 Jan 2013 00:20 +0100:
> >> sed -i is not portable on all systems.
> >> Use sed with different input and output files.
> >> Utilize a tmp file whenever needed
> >> 
> >> Added missing && at 2 places
> >> 
> >> Signed-off-by: Torsten Bögershausen <tboegi@web.de>
> >
> > One more teensy fix is needed in this hunk, following Junio's
> > comment about redirections going at the end:
> 
> I've already pushed out the previous one on 'pu' after fixing it up
> like this.
> 
> Thanks.  Anything I missed?

I should have guessed that you would just silently fix it.
Thanks!

		-- Pete

```
