All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Sixt <j6t@kdbg.org>
To: git@vger.kernel.org
Cc: szeder.dev@gmail.com, gitster@pobox.com, Johannes Sixt <j6t@kdbg.org>
Subject: [PATCH v2 1/4] t7610-mergetool: do not place pipelines headed by `yes` in subshells
Date: Wed, 12 Jun 2019 18:33:45 +0200	[thread overview]
Message-ID: <75c812bd4838f6f35b6f42b97ae396ebb28d8b95.1560356675.git.j6t@kdbg.org> (raw)
In-Reply-To: <cover.1560356675.git.j6t@kdbg.org>

Subshells for pipelines are not required. This can save a number of
processes (if the shell does not optimize it away anyway).

The patch was generated with the command

   sed -i 's/( *\(yes.*[^ ]\) *) *\&\&/\1 \&\&/' t7610-mergetool.sh

with a manual fixup of the case having no && at the end.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
---
 t/t7610-mergetool.sh | 170 +++++++++++++++++++++----------------------
 1 file changed, 85 insertions(+), 85 deletions(-)

diff --git a/t/t7610-mergetool.sh b/t/t7610-mergetool.sh
index 5b61c10a9c..b67440882b 100755
--- a/t/t7610-mergetool.sh
+++ b/t/t7610-mergetool.sh
@@ -131,13 +131,13 @@ test_expect_success 'custom mergetool' '
 	git checkout -b test$test_count branch1 &&
 	git submodule update -N &&
 	test_must_fail git merge master &&
-	( yes "" | git mergetool both ) &&
-	( yes "" | git mergetool file1 file1 ) &&
-	( yes "" | git mergetool file2 "spaced name" ) &&
-	( yes "" | git mergetool subdir/file3 ) &&
-	( yes "d" | git mergetool file11 ) &&
-	( yes "d" | git mergetool file12 ) &&
-	( yes "l" | git mergetool submod ) &&
+	yes "" | git mergetool both &&
+	yes "" | git mergetool file1 file1 &&
+	yes "" | git mergetool file2 "spaced name" &&
+	yes "" | git mergetool subdir/file3 &&
+	yes "d" | git mergetool file11 &&
+	yes "d" | git mergetool file12 &&
+	yes "l" | git mergetool submod &&
 	test "$(cat file1)" = "master updated" &&
 	test "$(cat file2)" = "master new" &&
 	test "$(cat subdir/file3)" = "master new sub" &&
@@ -153,13 +153,13 @@ test_expect_success 'gui mergetool' '
 	git checkout -b test$test_count branch1 &&
 	git submodule update -N &&
 	test_must_fail git merge master &&
-	( yes "" | git mergetool --gui both ) &&
-	( yes "" | git mergetool -g file1 file1 ) &&
-	( yes "" | git mergetool --gui file2 "spaced name" ) &&
-	( yes "" | git mergetool --gui subdir/file3 ) &&
-	( yes "d" | git mergetool --gui file11 ) &&
-	( yes "d" | git mergetool --gui file12 ) &&
-	( yes "l" | git mergetool --gui submod ) &&
+	yes "" | git mergetool --gui both &&
+	yes "" | git mergetool -g file1 file1 &&
+	yes "" | git mergetool --gui file2 "spaced name" &&
+	yes "" | git mergetool --gui subdir/file3 &&
+	yes "d" | git mergetool --gui file11 &&
+	yes "d" | git mergetool --gui file12 &&
+	yes "l" | git mergetool --gui submod &&
 	test "$(cat file1)" = "gui master updated" &&
 	test "$(cat file2)" = "gui master new" &&
 	test "$(cat subdir/file3)" = "gui master new sub" &&
@@ -172,13 +172,13 @@ test_expect_success 'gui mergetool without merge.guitool set falls back to merge
 	git checkout -b test$test_count branch1 &&
 	git submodule update -N &&
 	test_must_fail git merge master &&
-	( yes "" | git mergetool --gui both ) &&
-	( yes "" | git mergetool -g file1 file1 ) &&
-	( yes "" | git mergetool --gui file2 "spaced name" ) &&
-	( yes "" | git mergetool --gui subdir/file3 ) &&
-	( yes "d" | git mergetool --gui file11 ) &&
-	( yes "d" | git mergetool --gui file12 ) &&
-	( yes "l" | git mergetool --gui submod ) &&
+	yes "" | git mergetool --gui both &&
+	yes "" | git mergetool -g file1 file1 &&
+	yes "" | git mergetool --gui file2 "spaced name" &&
+	yes "" | git mergetool --gui subdir/file3 &&
+	yes "d" | git mergetool --gui file11 &&
+	yes "d" | git mergetool --gui file12 &&
+	yes "l" | git mergetool --gui submod &&
 	test "$(cat file1)" = "master updated" &&
 	test "$(cat file2)" = "master new" &&
 	test "$(cat subdir/file3)" = "master new sub" &&
@@ -195,14 +195,14 @@ test_expect_success 'mergetool crlf' '
 	test_config core.autocrlf true &&
 	git checkout -b test$test_count branch1 &&
 	test_must_fail git merge master &&
-	( yes "" | git mergetool file1 ) &&
-	( yes "" | git mergetool file2 ) &&
-	( yes "" | git mergetool "spaced name" ) &&
-	( yes "" | git mergetool both ) &&
-	( yes "" | git mergetool subdir/file3 ) &&
-	( yes "d" | git mergetool file11 ) &&
-	( yes "d" | git mergetool file12 ) &&
-	( yes "r" | git mergetool submod ) &&
+	yes "" | git mergetool file1 &&
+	yes "" | git mergetool file2 &&
+	yes "" | git mergetool "spaced name" &&
+	yes "" | git mergetool both &&
+	yes "" | git mergetool subdir/file3 &&
+	yes "d" | git mergetool file11 &&
+	yes "d" | git mergetool file12 &&
+	yes "r" | git mergetool submod &&
 	test "$(printf x | cat file1 -)" = "$(printf "master updated\r\nx")" &&
 	test "$(printf x | cat file2 -)" = "$(printf "master new\r\nx")" &&
 	test "$(printf x | cat subdir/file3 -)" = "$(printf "master new sub\r\nx")" &&
@@ -218,7 +218,7 @@ test_expect_success 'mergetool in subdir' '
 	(
 		cd subdir &&
 		test_must_fail git merge master &&
-		( yes "" | git mergetool file3 ) &&
+		yes "" | git mergetool file3 &&
 		test "$(cat file3)" = "master new sub"
 	)
 '
@@ -230,13 +230,13 @@ test_expect_success 'mergetool on file in parent dir' '
 	(
 		cd subdir &&
 		test_must_fail git merge master &&
-		( yes "" | git mergetool file3 ) &&
-		( yes "" | git mergetool ../file1 ) &&
-		( yes "" | git mergetool ../file2 ../spaced\ name ) &&
-		( yes "" | git mergetool ../both ) &&
-		( yes "d" | git mergetool ../file11 ) &&
-		( yes "d" | git mergetool ../file12 ) &&
-		( yes "l" | git mergetool ../submod ) &&
+		yes "" | git mergetool file3 &&
+		yes "" | git mergetool ../file1 &&
+		yes "" | git mergetool ../file2 ../spaced\ name &&
+		yes "" | git mergetool ../both &&
+		yes "d" | git mergetool ../file11 &&
+		yes "d" | git mergetool ../file12 &&
+		yes "l" | git mergetool ../submod &&
 		test "$(cat ../file1)" = "master updated" &&
 		test "$(cat ../file2)" = "master new" &&
 		test "$(cat ../submod/bar)" = "branch1 submodule" &&
@@ -250,9 +250,9 @@ test_expect_success 'mergetool skips autoresolved' '
 	git submodule update -N &&
 	test_must_fail git merge master &&
 	test -n "$(git ls-files -u)" &&
-	( yes "d" | git mergetool file11 ) &&
-	( yes "d" | git mergetool file12 ) &&
-	( yes "l" | git mergetool submod ) &&
+	yes "d" | git mergetool file11 &&
+	yes "d" | git mergetool file12 &&
+	yes "l" | git mergetool submod &&
 	output="$(git mergetool --no-prompt)" &&
 	test "$output" = "No files need merging"
 '
@@ -264,8 +264,8 @@ test_expect_success 'mergetool merges all from subdir (rerere disabled)' '
 	(
 		cd subdir &&
 		test_must_fail git merge master &&
-		( yes "r" | git mergetool ../submod ) &&
-		( yes "d" "d" | git mergetool --no-prompt ) &&
+		yes "r" | git mergetool ../submod &&
+		yes "d" "d" | git mergetool --no-prompt &&
 		test "$(cat ../file1)" = "master updated" &&
 		test "$(cat ../file2)" = "master new" &&
 		test "$(cat file3)" = "master new sub" &&
@@ -283,8 +283,8 @@ test_expect_success 'mergetool merges all from subdir (rerere enabled)' '
 	(
 		cd subdir &&
 		test_must_fail git merge master &&
-		( yes "r" | git mergetool ../submod ) &&
-		( yes "d" "d" | git mergetool --no-prompt ) &&
+		yes "r" | git mergetool ../submod &&
+		yes "d" "d" | git mergetool --no-prompt &&
 		test "$(cat ../file1)" = "master updated" &&
 		test "$(cat ../file2)" = "master new" &&
 		test "$(cat file3)" = "master new sub" &&
@@ -301,8 +301,8 @@ test_expect_success 'mergetool skips resolved paths when rerere is active' '
 	git checkout -b test$test_count branch1 &&
 	git submodule update -N &&
 	test_must_fail git merge master &&
-	( yes "l" | git mergetool --no-prompt submod ) &&
-	( yes "d" "d" | git mergetool --no-prompt ) &&
+	yes "l" | git mergetool --no-prompt submod &&
+	yes "d" "d" | git mergetool --no-prompt &&
 	git submodule update -N &&
 	output="$(yes "n" | git mergetool --no-prompt)" &&
 	test "$output" = "No files need merging"
@@ -343,7 +343,7 @@ test_expect_success 'mergetool takes partial path' '
 	git submodule update -N &&
 	test_must_fail git merge master &&
 
-	( yes "" | git mergetool subdir ) &&
+	yes "" | git mergetool subdir &&
 
 	test "$(cat subdir/file3)" = "master new sub"
 '
@@ -410,10 +410,10 @@ test_expect_success 'deleted vs modified submodule' '
 	git checkout -b test$test_count.a test$test_count &&
 	test_must_fail git merge master &&
 	test -n "$(git ls-files -u)" &&
-	( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 ) &&
-	( yes "" | git mergetool both ) &&
-	( yes "d" | git mergetool file11 file12 ) &&
-	( yes "r" | git mergetool submod ) &&
+	yes "" | git mergetool file1 file2 spaced\ name subdir/file3 &&
+	yes "" | git mergetool both &&
+	yes "d" | git mergetool file11 file12 &&
+	yes "r" | git mergetool submod &&
 	rmdir submod && mv submod-movedaside submod &&
 	test "$(cat submod/bar)" = "branch1 submodule" &&
 	git submodule update -N &&
@@ -427,10 +427,10 @@ test_expect_success 'deleted vs modified submodule' '
 	git submodule update -N &&
 	test_must_fail git merge master &&
 	test -n "$(git ls-files -u)" &&
-	( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 ) &&
-	( yes "" | git mergetool both ) &&
-	( yes "d" | git mergetool file11 file12 ) &&
-	( yes "l" | git mergetool submod ) &&
+	yes "" | git mergetool file1 file2 spaced\ name subdir/file3 &&
+	yes "" | git mergetool both &&
+	yes "d" | git mergetool file11 file12 &&
+	yes "l" | git mergetool submod &&
 	test ! -e submod &&
 	output="$(git mergetool --no-prompt)" &&
 	test "$output" = "No files need merging" &&
@@ -441,10 +441,10 @@ test_expect_success 'deleted vs modified submodule' '
 	git submodule update -N &&
 	test_must_fail git merge test$test_count &&
 	test -n "$(git ls-files -u)" &&
-	( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 ) &&
-	( yes "" | git mergetool both ) &&
-	( yes "d" | git mergetool file11 file12 ) &&
-	( yes "r" | git mergetool submod ) &&
+	yes "" | git mergetool file1 file2 spaced\ name subdir/file3 &&
+	yes "" | git mergetool both &&
+	yes "d" | git mergetool file11 file12 &&
+	yes "r" | git mergetool submod &&
 	test ! -e submod &&
 	test -d submod.orig &&
 	git submodule update -N &&
@@ -457,10 +457,10 @@ test_expect_success 'deleted vs modified submodule' '
 	git submodule update -N &&
 	test_must_fail git merge test$test_count &&
 	test -n "$(git ls-files -u)" &&
-	( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 ) &&
-	( yes "" | git mergetool both ) &&
-	( yes "d" | git mergetool file11 file12 ) &&
-	( yes "l" | git mergetool submod ) &&
+	yes "" | git mergetool file1 file2 spaced\ name subdir/file3 &&
+	yes "" | git mergetool both &&
+	yes "d" | git mergetool file11 file12 &&
+	yes "l" | git mergetool submod &&
 	test "$(cat submod/bar)" = "master submodule" &&
 	git submodule update -N &&
 	test "$(cat submod/bar)" = "master submodule" &&
@@ -481,10 +481,10 @@ test_expect_success 'file vs modified submodule' '
 	git checkout -b test$test_count.a branch1 &&
 	test_must_fail git merge master &&
 	test -n "$(git ls-files -u)" &&
-	( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 ) &&
-	( yes "" | git mergetool both ) &&
-	( yes "d" | git mergetool file11 file12 ) &&
-	( yes "r" | git mergetool submod ) &&
+	yes "" | git mergetool file1 file2 spaced\ name subdir/file3 &&
+	yes "" | git mergetool both &&
+	yes "d" | git mergetool file11 file12 &&
+	yes "r" | git mergetool submod &&
 	rmdir submod && mv submod-movedaside submod &&
 	test "$(cat submod/bar)" = "branch1 submodule" &&
 	git submodule update -N &&
@@ -497,10 +497,10 @@ test_expect_success 'file vs modified submodule' '
 	git checkout -b test$test_count.b test$test_count &&
 	test_must_fail git merge master &&
 	test -n "$(git ls-files -u)" &&
-	( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 ) &&
-	( yes "" | git mergetool both ) &&
-	( yes "d" | git mergetool file11 file12 ) &&
-	( yes "l" | git mergetool submod ) &&
+	yes "" | git mergetool file1 file2 spaced\ name subdir/file3 &&
+	yes "" | git mergetool both &&
+	yes "d" | git mergetool file11 file12 &&
+	yes "l" | git mergetool submod &&
 	git submodule update -N &&
 	test "$(cat submod)" = "not a submodule" &&
 	output="$(git mergetool --no-prompt)" &&
@@ -513,10 +513,10 @@ test_expect_success 'file vs modified submodule' '
 	git submodule update -N &&
 	test_must_fail git merge test$test_count &&
 	test -n "$(git ls-files -u)" &&
-	( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 ) &&
-	( yes "" | git mergetool both ) &&
-	( yes "d" | git mergetool file11 file12 ) &&
-	( yes "r" | git mergetool submod ) &&
+	yes "" | git mergetool file1 file2 spaced\ name subdir/file3 &&
+	yes "" | git mergetool both &&
+	yes "d" | git mergetool file11 file12 &&
+	yes "r" | git mergetool submod &&
 	test -d submod.orig &&
 	git submodule update -N &&
 	test "$(cat submod)" = "not a submodule" &&
@@ -529,10 +529,10 @@ test_expect_success 'file vs modified submodule' '
 	git submodule update -N &&
 	test_must_fail git merge test$test_count &&
 	test -n "$(git ls-files -u)" &&
-	( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 ) &&
-	( yes "" | git mergetool both ) &&
-	( yes "d" | git mergetool file11 file12 ) &&
-	( yes "l" | git mergetool submod ) &&
+	yes "" | git mergetool file1 file2 spaced\ name subdir/file3 &&
+	yes "" | git mergetool both &&
+	yes "d" | git mergetool file11 file12 &&
+	yes "l" | git mergetool submod &&
 	test "$(cat submod/bar)" = "master submodule" &&
 	git submodule update -N &&
 	test "$(cat submod/bar)" = "master submodule" &&
@@ -587,7 +587,7 @@ test_expect_success 'submodule in subdirectory' '
 	test_must_fail git merge test$test_count.a &&
 	(
 		cd subdir &&
-		( yes "l" | git mergetool subdir_module )
+		yes "l" | git mergetool subdir_module
 	) &&
 	test "$(cat subdir/subdir_module/file15)" = "test$test_count.b" &&
 	git submodule update -N &&
@@ -596,7 +596,7 @@ test_expect_success 'submodule in subdirectory' '
 	git submodule update -N &&
 
 	test_must_fail git merge test$test_count.a &&
-	( yes "r" | git mergetool subdir/subdir_module ) &&
+	yes "r" | git mergetool subdir/subdir_module &&
 	test "$(cat subdir/subdir_module/file15)" = "test$test_count.b" &&
 	git submodule update -N &&
 	test "$(cat subdir/subdir_module/file15)" = "test$test_count.a" &&
@@ -615,7 +615,7 @@ test_expect_success 'directory vs modified submodule' '
 
 	test_must_fail git merge master &&
 	test -n "$(git ls-files -u)" &&
-	( yes "l" | git mergetool submod ) &&
+	yes "l" | git mergetool submod &&
 	test "$(cat submod/file16)" = "not a submodule" &&
 	rm -rf submod.orig &&
 
@@ -623,7 +623,7 @@ test_expect_success 'directory vs modified submodule' '
 	test_must_fail git merge master &&
 	test -n "$(git ls-files -u)" &&
 	test ! -e submod.orig &&
-	( yes "r" | git mergetool submod ) &&
+	yes "r" | git mergetool submod &&
 	test -d submod.orig &&
 	test "$(cat submod.orig/file16)" = "not a submodule" &&
 	rm -r submod.orig &&
@@ -638,7 +638,7 @@ test_expect_success 'directory vs modified submodule' '
 	git submodule update -N &&
 	test_must_fail git merge test$test_count &&
 	test -n "$(git ls-files -u)" &&
-	( yes "l" | git mergetool submod ) &&
+	yes "l" | git mergetool submod &&
 	git submodule update -N &&
 	test "$(cat submod/bar)" = "master submodule" &&
 
@@ -647,7 +647,7 @@ test_expect_success 'directory vs modified submodule' '
 	test_must_fail git merge test$test_count &&
 	test -n "$(git ls-files -u)" &&
 	test ! -e submod.orig &&
-	( yes "r" | git mergetool submod ) &&
+	yes "r" | git mergetool submod &&
 	test "$(cat submod/file16)" = "not a submodule" &&
 
 	git reset --hard master &&
-- 
2.21.0.285.gc38d92e052


  reply	other threads:[~2019-06-12 16:34 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-10  8:58 [PATCH 0/3] Reduce number of processes spawned by git-mergetool Johannes Sixt
2019-06-10  8:58 ` [PATCH 1/3] t7610-mergetool: do not place pipelines headed by `yes` in subshells Johannes Sixt
2019-06-10  9:59   ` SZEDER Gábor
2019-06-10 17:23     ` Junio C Hamano
2019-06-10 17:56       ` SZEDER Gábor
2019-06-10 18:29     ` Johannes Schindelin
2019-06-10 18:57       ` SZEDER Gábor
2019-06-10  8:58 ` [PATCH 2/3] mergetool: dissect strings with shell variable magic instead of `expr` Johannes Sixt
2019-06-10 17:17   ` Junio C Hamano
2019-06-10 21:34     ` Johannes Sixt
2019-06-10  8:59 ` [PATCH 3/3] mergetool: use shell variable magic instead of `awk` Johannes Sixt
2019-06-10 17:21   ` Junio C Hamano
2019-06-10 22:01     ` Johannes Sixt
2019-06-12 16:33 ` [PATCH v2 0/4] Reduce number of processes spawned by git-mergetool Johannes Sixt
2019-06-12 16:33   ` Johannes Sixt [this message]
2019-06-12 16:33   ` [PATCH v2 2/4] t7610-mergetool: use test_cmp instead of test $(cat file) = $txt Johannes Sixt
2019-06-12 16:33   ` [PATCH v2 3/4] mergetool: dissect strings with shell variable magic instead of `expr` Johannes Sixt
2019-06-12 16:33   ` [PATCH v2 4/4] mergetool: use shell variable magic instead of `awk` Johannes Sixt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=75c812bd4838f6f35b6f42b97ae396ebb28d8b95.1560356675.git.j6t@kdbg.org \
    --to=j6t@kdbg.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=szeder.dev@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.