git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 10/19] git-submodule.sh: convert test -a/-o to && and ||

From
Johannes Sixt <j.sixt@viscovery.net>
Date
May 20, 2014, 14:39 UTC
Message-ID
<537B6936.2080101@viscovery.net>
In-Reply-To
<1400593832-6510-11-git-send-email-gitter.spiros@gmail.com>
Am 5/20/2014 15:50, schrieb Elia Pinto:
>  			# If we don't already have a -f flag and the submodule has never been checked out
> -			if test -z "$subsha1" -a -z "$force"
> +			if test -z "$subsha1" || test -z "$force"
Should not be ||, but &&!
Show 10 quoted lines
>  		while read mod_src mod_dst sha1_src sha1_dst status sm_path
>  		do
>  			# Always show modules deleted or type-changed (blob<->module)
> -			test $status = D -o $status = T && echo "$sm_path" && continue
> +			{
> +			test "$status" = D ||
> +			test "$status" = T
> +			} &&
> +			echo "$sm_path"
> +			&& continue

As Matthieu noted, this is incorrect. It's not just a style violation, it's a syntax error. Why did your test runs not hickup on that?

In this case you could even leave the original code structure without changing the meaning:

			test $status = D || test $status = T && echo "$sm_path" && continue
But a better idiom is
			case "$status" in
			[DT])
				printf '%s\n' "$sm_path" &&
				continue
			esac
Show 6 quoted lines
> @@ -1233,7 +1238,7 @@ cmd_status()
>  			say "U$sha1 $displaypath"
>  			continue
>  		fi
> -		if test -z "$url" || ! test -d "$sm_path"/.git -o -f "$sm_path"/.git
> +		if test -z "$url" || ! test -d "$sm_path"/.git || test -f "$sm_path"/.git
Wrong grouping. This could be more correct (I didn't test):
		if test -z "$url" ||
			{
				! test -d "$sm_path"/.git &&
				! test -f "$sm_path"/.git
			}
-- Hannes
Previous: Matthieu MoyNext: Elia Pinto
Message 15 of 27 in “convert test -a/-o to && and || patch series”
  1. 00/19 convert test -a/-o to && and || patch seriesElia Pinto, May 20, 2014
  2. 01/19 check_bindir: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  3. Junio C HamanoMay 20, 2014
  4. Junio C HamanoMay 20, 2014
  5. 02/19 contrib/examples/git-clone.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  6. 03/19 contrib/examples/git-commit.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  7. 04/19 contrib/examples/git-merge.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  8. 05/19 contrib/examples/git-repack.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  9. 06/19 contrib/examples/git-resolve.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  10. 07/19 git-bisect.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  11. 08/19 git-mergetool.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  12. 09/19 git-rebase--interactive.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  13. 10/19 git-submodule.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  14. Matthieu MoyMay 20, 2014
  15. Johannes SixtMay 20, 2014
  16. 11/19 t/t0025-crlf-auto.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  17. 12/19 t/t0026-eol-config.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  18. 13/19 t/t4102-apply-rename.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  19. 14/19 t/t5000-tar-tree.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  20. 15/19 t/t5403-post-checkout-hook.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  21. 16/19 t/t5537-fetch-shallow.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  22. 17/19 t/t5538-push-shallow.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  23. 18/19 t/t9814-git-p4-rename.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  24. 19/19 t/test-lib-functions.sh: convert test -a/-o to && and ||Elia Pinto, May 20, 2014
  25. Matthieu MoyMay 20, 2014
  26. Junio C HamanoMay 20, 2014
  27. Jonathan NiederMay 20, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.