git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Avi Halachmi via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C. Hamano" <gitster@pobox.com>,
	"brian m. carlson" <sandals@crustytoothpaste.net>,
	Patrick Steinhardt <ps@pks.im>, Avi Halachmi <avihpit@yahoo.com>
Subject: [PATCH v3 0/8] git-prompt: support more shells v3
Date: Sat, 17 Aug 2024 09:25:52 +0000	[thread overview]
Message-ID: <pull.1750.v3.git.git.1723886760.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1750.v2.git.git.1723727653.gitgitgadget@gmail.com>

This addresses review comments on part 5/8 v2 (git-prompt: add some missing
quotes) to fix typo in the commit message "aguments" into "arguments", but
which was used to reword it a bit so that it's more accurate.

Also addresses review comment on part 7/8 v2 (git-prompt: ta-da! document
usage in other shells) and fix typo "Conpatibility".

Avi Halachmi (:avih) (8):
  git-prompt: use here-doc instead of here-string
  git-prompt: fix uninitialized variable
  git-prompt: don't use shell arrays
  git-prompt: replace [[...]] with standard code
  git-prompt: add some missing quotes
  git-prompt: don't use shell $'...'
  git-prompt: ta-da! document usage in other shells
  git-prompt: support custom 0-width PS1 markers

 contrib/completion/git-prompt.sh | 191 ++++++++++++++++++++-----------
 1 file changed, 126 insertions(+), 65 deletions(-)


base-commit: d19b6cd2dd72dc811f19df4b32c7ed223256c3ee
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1750%2Favih%2Fprompt-compat-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1750/avih/prompt-compat-v3
Pull-Request: https://github.com/git/git/pull/1750

Range-diff vs v2:

 1:  9ce5ddadf0b = 1:  9ce5ddadf0b git-prompt: use here-doc instead of here-string
 2:  680ecb52404 = 2:  680ecb52404 git-prompt: fix uninitialized variable
 3:  7e994eae7bc = 3:  7e994eae7bc git-prompt: don't use shell arrays
 4:  232340902a1 = 4:  232340902a1 git-prompt: replace [[...]] with standard code
 5:  4f77b7eb7f1 ! 5:  3a41ad889cc git-prompt: add some missing quotes
     @@ Commit message
            not expanded:   t="~"; a=${t}user  b=\~foo~;  echo "~user" $t/dir
      
          But the main reason for quoting is to prevent IFS field splitting
     -    (which also coalesces IFS chars) and glob expansion after parameter
     -    expansion or command substitution.
     +    (which also coalesces IFS chars) and glob expansion in parts which
     +    contain parameter/arithmetic expansion or command substitution.
      
     -    In _command-arguments_, expanded/substituted values must be quoted:
     +    "Simple command" (POSIX term) is assignment[s] and/or command [args].
     +    Examples:
     +      foo=bar         # one assignment
     +      foo=$bar x=y    # two assignments
     +      foo bar         # command, no assignments
     +      x=123 foo bar   # one assignment and a command
     +
     +    The assignments part is not IFS-split or glob-expanded.
     +
     +    The command+args part does get IFS field split and glob expanded,
     +    but only at unquoted expanded/substituted parts.
     +
     +    In the command+args part, expanded/substituted values must be quoted.
     +    (the commands here are "[" and "local"):
            Good: [ "$mode" = yes ]; local s="*" x="$y" e="$?" z="$(cmd ...)"
            Bad:  [ $mode = yes ];   local s=*   x=$y   e=$?   z=$(cmd...)
      
     -    Still in _agumemts_, no need to quote non-expandable values:
     +    The arguments to "local" do look like assignments, but they're not
     +    the assignment part of a simple command. they're at the command part.
     +
     +    Still at the command part, no need to quote non-expandable values:
            Good:                 local x=   y=yes;   echo OK
            OK, but not required: local x="" y="yes"; echo "OK"
          But completely empty (NULL) arguments must be quoted:
     @@ Commit message
          "local" does not behave with assignment context in some shells,
          hence we require quotes when using "local" - for compatibility.
      
     -    First value in 'case...' doesn't IFS-split/glob, doesn't need quotes:
     +    The value between 'case' and 'in' doesn't IFS-split/glob-expand:
            Good:       case  * $foo $(cmd...)  in ... ; esac
            identical:  case "* $foo $(cmd...)" in ... ; esac
      
 6:  363b7015763 = 6:  e735a1696a0 git-prompt: don't use shell $'...'
 7:  4aa75cdb5dd ! 7:  e70440e669a git-prompt: ta-da! document usage in other shells
     @@ contrib/completion/git-prompt.sh
       # GIT_PS1_HIDE_IF_PWD_IGNORED to a nonempty value. Override this on the
       # repository level by setting bash.hideIfPwdIgnored to "false".
      +#
     -+# Conpatibility with other shells (beyond bash/zsh):
     ++# Compatibility with other shells (beyond bash/zsh):
      +#
      +#    We require posix-ish shell plus "local" support, which is most
      +#    shells (even pdksh), but excluding ksh93 (because no "local").
 8:  e71ddcd2232 = 8:  633e71a01d3 git-prompt: support custom 0-width PS1 markers

-- 
gitgitgadget

  parent reply	other threads:[~2024-08-17  9:26 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-23 19:18 [PATCH 0/8] git-prompt: support more shells Avi Halachmi via GitGitGadget
2024-07-23 19:18 ` [PATCH 1/8] git-prompt: use here-doc instead of here-string Avi Halachmi (:avih) via GitGitGadget
2024-07-23 19:18 ` [PATCH 2/8] git-prompt: fix uninitialized variable Avi Halachmi (:avih) via GitGitGadget
2024-07-23 19:18 ` [PATCH 3/8] git-prompt: don't use shell arrays Avi Halachmi (:avih) via GitGitGadget
2024-07-23 19:18 ` [PATCH 4/8] git-prompt: replace [[...]] with standard code Avi Halachmi (:avih) via GitGitGadget
2024-07-23 19:18 ` [PATCH 5/8] git-prompt: add some missing quotes Avi Halachmi (:avih) via GitGitGadget
2024-07-23 19:40   ` Junio C Hamano
2024-07-24  0:47     ` avih
2024-07-23 19:18 ` [PATCH 6/8] git-prompt: add fallback for shells without $'...' Avi Halachmi (:avih) via GitGitGadget
2024-07-23 20:25   ` Junio C Hamano
2024-07-24  2:08     ` avih
2024-07-25 11:27       ` avih
2024-07-25 13:28         ` avih
2024-07-25 16:24           ` Junio C Hamano
2024-07-25 20:03             ` avih
2024-07-25 16:19         ` Junio C Hamano
2024-08-14 18:09     ` avih
2024-08-14 19:32       ` Junio C Hamano
2024-08-15  4:17         ` avih
2024-08-15 12:44           ` Junio C Hamano
2024-07-23 19:18 ` [PATCH 7/8] git-prompt: ta-da! document usage in other shells Avi Halachmi (:avih) via GitGitGadget
2024-07-23 19:18 ` [PATCH 8/8] git-prompt: support custom 0-width PS1 markers Avi Halachmi (:avih) via GitGitGadget
2024-07-23 22:50 ` [PATCH 0/8] git-prompt: support more shells brian m. carlson
2024-07-24  2:41   ` avih
2024-07-24 15:29     ` Junio C Hamano
2024-07-24 17:08       ` avih
2024-07-24 17:13       ` Junio C Hamano
2024-08-15 13:14 ` [PATCH v2 0/8] git-prompt: support more shells v2 Avi Halachmi via GitGitGadget
2024-08-15 13:14   ` [PATCH v2 1/8] git-prompt: use here-doc instead of here-string Avi Halachmi (:avih) via GitGitGadget
2024-08-16  8:50     ` Patrick Steinhardt
2024-08-16  9:37       ` avih
2024-08-16 10:52         ` Patrick Steinhardt
2024-08-15 13:14   ` [PATCH v2 2/8] git-prompt: fix uninitialized variable Avi Halachmi (:avih) via GitGitGadget
2024-08-15 13:14   ` [PATCH v2 3/8] git-prompt: don't use shell arrays Avi Halachmi (:avih) via GitGitGadget
2024-08-16  8:50     ` Patrick Steinhardt
2024-08-16  9:53       ` avih
2024-08-16 10:52         ` Patrick Steinhardt
2024-08-16 11:35           ` avih
2024-08-16 12:38             ` Patrick Steinhardt
2024-08-15 13:14   ` [PATCH v2 4/8] git-prompt: replace [[...]] with standard code Avi Halachmi (:avih) via GitGitGadget
2024-08-15 16:27     ` Junio C Hamano
2024-08-16 10:36       ` avih
2024-08-16 16:42         ` Junio C Hamano
2024-08-15 13:14   ` [PATCH v2 5/8] git-prompt: add some missing quotes Avi Halachmi (:avih) via GitGitGadget
2024-08-15 16:36     ` Junio C Hamano
2024-08-15 17:35       ` avih
2024-08-15 19:15         ` Junio C Hamano
2024-08-15 19:53           ` avih
2024-08-15 13:14   ` [PATCH v2 6/8] git-prompt: don't use shell $'...' Avi Halachmi (:avih) via GitGitGadget
2024-08-15 13:14   ` [PATCH v2 7/8] git-prompt: ta-da! document usage in other shells Avi Halachmi (:avih) via GitGitGadget
2024-08-16  8:50     ` Patrick Steinhardt
2024-08-16  9:59       ` avih
2024-08-15 13:14   ` [PATCH v2 8/8] git-prompt: support custom 0-width PS1 markers Avi Halachmi (:avih) via GitGitGadget
2024-08-15 18:48   ` [PATCH v2 0/8] git-prompt: support more shells v2 Junio C Hamano
2024-08-16  8:50     ` Patrick Steinhardt
2024-08-17  9:25   ` Avi Halachmi via GitGitGadget [this message]
2024-08-17  9:25     ` [PATCH v3 1/8] git-prompt: use here-doc instead of here-string Avi Halachmi (:avih) via GitGitGadget
2024-08-17  9:25     ` [PATCH v3 2/8] git-prompt: fix uninitialized variable Avi Halachmi (:avih) via GitGitGadget
2024-08-17  9:25     ` [PATCH v3 3/8] git-prompt: don't use shell arrays Avi Halachmi (:avih) via GitGitGadget
2024-08-17  9:25     ` [PATCH v3 4/8] git-prompt: replace [[...]] with standard code Avi Halachmi (:avih) via GitGitGadget
2024-08-17  9:25     ` [PATCH v3 5/8] git-prompt: add some missing quotes Avi Halachmi (:avih) via GitGitGadget
2024-08-17  9:38       ` Eric Sunshine
2024-08-17 10:07         ` avih
2024-08-17 16:28           ` Junio C Hamano
2024-08-17 18:02             ` avih
2024-08-17  9:25     ` [PATCH v3 6/8] git-prompt: don't use shell $'...' Avi Halachmi (:avih) via GitGitGadget
2024-08-17  9:25     ` [PATCH v3 7/8] git-prompt: ta-da! document usage in other shells Avi Halachmi (:avih) via GitGitGadget
2024-08-17  9:26     ` [PATCH v3 8/8] git-prompt: support custom 0-width PS1 markers Avi Halachmi (:avih) via GitGitGadget
2024-08-20  1:48     ` [PATCH v4 0/8] git-prompt: support more shells v4 Avi Halachmi via GitGitGadget
2024-08-20  1:48       ` [PATCH v4 1/8] git-prompt: use here-doc instead of here-string Avi Halachmi (:avih) via GitGitGadget
2024-08-20  1:48       ` [PATCH v4 2/8] git-prompt: fix uninitialized variable Avi Halachmi (:avih) via GitGitGadget
2024-08-20  1:48       ` [PATCH v4 3/8] git-prompt: don't use shell arrays Avi Halachmi (:avih) via GitGitGadget
2024-08-20  1:48       ` [PATCH v4 4/8] git-prompt: replace [[...]] with standard code Avi Halachmi (:avih) via GitGitGadget
2024-08-20  1:48       ` [PATCH v4 5/8] git-prompt: add some missing quotes Avi Halachmi (:avih) via GitGitGadget
2024-08-20  1:48       ` [PATCH v4 6/8] git-prompt: don't use shell $'...' Avi Halachmi (:avih) via GitGitGadget
2024-08-20  1:48       ` [PATCH v4 7/8] git-prompt: ta-da! document usage in other shells Avi Halachmi (:avih) via GitGitGadget
2024-08-20  1:48       ` [PATCH v4 8/8] git-prompt: support custom 0-width PS1 markers Avi Halachmi (:avih) via GitGitGadget
2024-08-20 15:32       ` [PATCH v4 0/8] git-prompt: support more shells v4 Junio C Hamano
2024-08-20 15:47         ` avih
2024-08-28 19:54           ` avih

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=pull.1750.v3.git.git.1723886760.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=avihpit@yahoo.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=ps@pks.im \
    --cc=sandals@crustytoothpaste.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).