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
next prev 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 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.