Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change == to = for zsh's sake in git-prompt.sh #679

Closed
wants to merge 1 commit into from

Conversation

dmalan
Copy link

@dmalan dmalan commented Jul 20, 2020

Upon installing git-prompt.sh on macOS Catalina, I noticed that afda36d seems to have introduced an issue for Zsh whereby __git_ps1 errs with

__git_ps1:96: = not found

when inside a repo. Changing == to = would seem to address for both Bash and Zsh.

Changes since v1:

  • Commit message rewritten to use imperative mood.
  • Commit message rewritten to elaborate on reason for change.

CC: Elijah Newren newren@gmail.com, Junio C Hamano gitster@pobox.com

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 20, 2020

Welcome to GitGitGadget

Hi @dmalan, and welcome to GitGitGadget, the GitHub App to send patch series to the Git mailing list from GitHub Pull Requests.

Please make sure that your Pull Request has a good description, as it will be used as cover letter.

Also, it is a good idea to review the commit messages one last time, as the Git project expects them in a quite specific form:

  • the lines should not exceed 76 columns,
  • the first line should be like a header and typically start with a prefix like "tests:" or "commit:", and
  • the commit messages' body should be describing the "why?" of the change.
  • Finally, the commit messages should end in a Signed-off-by: line matching the commits' author.

It is in general a good idea to await the automated test ("Checks") in this Pull Request before contributing the patches, e.g. to avoid trivial issues such as unportable code.

Contributing the patches

Before you can contribute the patches, your GitHub username needs to be added to the list of permitted users. Any already-permitted user can do that, by adding a comment to your PR of the form /allow. A good way to find other contributors is to locate recent pull requests where someone has been /allowed:

Both the person who commented /allow and the PR author are able to /allow you.

An alternative is the channel #git-devel on the FreeNode IRC network:

<newcontributor> I've just created my first PR, could someone please /allow me? https://github.com/gitgitgadget/git/pull/12345
<veteran> newcontributor: it is done
<newcontributor> thanks!

Once on the list of permitted usernames, you can contribute the patches to the Git mailing list by adding a PR comment /submit.

If you want to see what email(s) would be sent for a /submit request, add a PR comment /preview to have the email(s) sent to you. You must have a public GitHub email address for this.

After you submit, GitGitGadget will respond with another comment that contains the link to the cover letter mail in the Git mailing list archive. Please make sure to monitor the discussion in that thread and to address comments and suggestions (while the comments and suggestions will be mirrored into the PR by GitGitGadget, you will still want to reply via mail).

If you do not want to subscribe to the Git mailing list just to be able to respond to a mail, you can download the mbox from the Git mailing list archive (click the (raw) link), then import it into your mail program. If you use GMail, you can do this via:

curl -g --user "<EMailAddress>:<Password>" \
    --url "imaps://imap.gmail.com/INBOX" -T /path/to/raw.txt

To iterate on your change, i.e. send a revised patch or patch series, you will first want to (force-)push to the same branch. You probably also want to modify your Pull Request description (or title). It is a good idea to summarize the revision by adding something like this to the cover letter (read: by editing the first comment on the PR, i.e. the PR description):

Changes since v1:
- Fixed a typo in the commit message (found by ...)
- Added a code comment to ... as suggested by ...
...

To send a new iteration, just add another PR comment with the contents: /submit.

Need help?

New contributors who want advice are encouraged to join git-mentoring@googlegroups.com, where volunteers who regularly contribute to Git are willing to answer newbie questions, give advice, or otherwise provide mentoring to interested contributors. You must join in order to post or view messages, but anyone can join.

You may also be able to find help in real time in the developer IRC channel, #git-devel on Freenode. Remember that IRC does not support offline messaging, so if you send someone a private message and log out, they cannot respond to you. The scrollback of #git-devel is archived, though.

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 20, 2020

There is an issue in commit 9f7ad3ee6c85b9c8e90c3accad671dc329e99556:
Commit checks stopped - the message is too short

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 20, 2020

There is an issue in commit c241e3d8e1e3c201d525288e8d961ac30621dc51:
Prefixed commit message must be in lower case: git-prompt: Changes == to = for zsh's sake

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 20, 2020

There is an issue in commit 06a408e20f911acdd9a8f394fc5a0c3805b356d9:
Prefixed commit message must be in lower case: git-prompt: Changes == to = for zsh's sake

@derrickstolee
Copy link

/approve

@dmalan
Copy link
Author

dmalan commented Jul 20, 2020

/submit

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 20, 2020

Error: User dmalan is not permitted to use GitGitGadget

@webstech
Copy link

/allow

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 20, 2020

User dmalan is now allowed to use GitGitGadget.

WARNING: dmalan has no public email address set on GitHub

@dmalan
Copy link
Author

dmalan commented Jul 20, 2020

/submit

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 20, 2020

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

On the Git mailing list, Junio C Hamano wrote (reply to this):

"David J. Malan via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: "David J. Malan" <malan@harvard.edu>
> Subject: Re: [PATCH] git-prompt: changes == to = for zsh's sake

s/changes/change/

> When using git-prompt.sh with Zsh, __git_ps1 currently errs
> when inside a repo with:
>
> __git_ps1:96: = not found

OK.

> This commit changes `==` to `=` for both Bash and Zsh.

We prefer to see "why" instead of "what", as the latter can easily
be read from the patch text.

    Avoid using non-portable "==" that is only understood by bash
    and not zsh to "="; that way the prompt script becomes usable
    with zsh again.

or something like that.

Elijah, I think this is a minor regression in this cycle, and the
fix is obvious enough that it deserves to be in the upcoming
release.  Agreed?

Thank you, David, for a fix.


> Signed-off-by: David J. Malan <malan@harvard.edu>
> ---
>     Changes == to = for zsh's sake in git-prompt.sh
>     
>     Upon installing git-prompt.sh
>     [https://github.com/gitgitgadget/git/blob/master/contrib/completion/git-prompt.sh] 
>     on macOS Catalina, I noticed that 
>     https://github.com/gitgitgadget/git/commit/afda36dbf3b4f5a489ab44c00d5210c1fa894a40 
>     seems to have introduced an issue for Zsh whereby __git_ps1 errs with
>     
>     __git_ps1:96: = not found
>     
>     when inside a repo. Changing == to = would seem to address for both Bash
>     and Zsh.
>
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-679%2Fdmalan%2Fpatch-1-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-679/dmalan/patch-1-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/679
>
>  contrib/completion/git-prompt.sh | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
> index e6cd5464e5..16260bab73 100644
> --- a/contrib/completion/git-prompt.sh
> +++ b/contrib/completion/git-prompt.sh
> @@ -433,7 +433,7 @@ __git_ps1 ()
>  	local sparse=""
>  	if [ -z "${GIT_PS1_COMPRESSSPARSESTATE}" ] &&
>  	   [ -z "${GIT_PS1_OMITSPARSESTATE}" ] &&
> -	   [ "$(git config --bool core.sparseCheckout)" == "true" ]; then
> +	   [ "$(git config --bool core.sparseCheckout)" = "true" ]; then
>  		sparse="|SPARSE"
>  	fi
>  
> @@ -542,7 +542,7 @@ __git_ps1 ()
>  		fi
>  
>  		if [ -n "${GIT_PS1_COMPRESSSPARSESTATE}" ] &&
> -		   [ "$(git config --bool core.sparseCheckout)" == "true" ]; then
> +		   [ "$(git config --bool core.sparseCheckout)" = "true" ]; then
>  			h="?"
>  		fi
>  
>
> base-commit: ae46588be0cd730430dded4491246dfb4eac5557

When using git-prompt.sh with zsh, __git_ps1 currently errs
when inside a repo with:

__git_ps1:96: = not found

Avoid using non-portable "==" that is only understood by bash
and not zsh. Change to "=" so that the prompt script becomes
usable with zsh again.

Signed-off-by: David J. Malan <malan@harvard.edu>
@dmalan dmalan changed the title Changes == to = for zsh's sake in git-prompt.sh Change == to = for zsh's sake in git-prompt.sh Jul 21, 2020
@dmalan
Copy link
Author

dmalan commented Jul 21, 2020

/submit

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

On the Git mailing list, Aaron Schrab wrote (reply to this):

At 23:17 +0000 20 Jul 2020, "David J. Malan via GitGitGadget" <gitgitgadget@gmail.com> wrote:
>From: "David J. Malan" <malan@harvard.edu>
>
>When using git-prompt.sh with Zsh, __git_ps1 currently errs
>when inside a repo with:
>
>__git_ps1:96: = not found

That depends if zsh's `equals` option is set or not. If it's set (as it 
is by default) you'll get that behavior. If it's unset (`setopt 
no_equals`) that should behave as in bash. But, it fixing the code to 
work regardless of shell options is definitely a good thing.

>This commit changes `==` to `=` for both Bash and Zsh.

An alternate fix would be to switch to using double square brackets 
instead of single square brackets for the test. Since contents of double 
brackets have their own parsing rules the `equals` option doesn't apply 
there, and so `==` is available for checking equality same as in bash.  
IMHO, this provides saner behavior in general; although it's definitely 
not POSIX compliant.

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

On the Git mailing list, Junio C Hamano wrote (reply to this):

Aaron Schrab <aaron@schrab.com> writes:

> An alternate fix would be to switch to using double square brackets
> instead of single square brackets for the test. Since contents of
> double brackets have their own parsing rules the `equals` option
> doesn't apply there, and so `==` is available for checking equality
> same as in bash.  IMHO, this provides saner behavior in general;
> although it's definitely not POSIX compliant.

It won't be but it does not have to be POSIX compliant anyway; after
all this is prompt support for bash with support for zsh added on
the side, neither is limited to strict POSIX.

I'd say that the patch posted is good as-is.

Thanks.

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

On the Git mailing list, Elijah Newren wrote (reply to this):

On Mon, Jul 20, 2020 at 4:58 PM Junio C Hamano <gitster@pobox.com> wrote:
>
> "David J. Malan via GitGitGadget" <gitgitgadget@gmail.com> writes:
>
> > From: "David J. Malan" <malan@harvard.edu>
> > Subject: Re: [PATCH] git-prompt: changes == to = for zsh's sake
>
> s/changes/change/
>
> > When using git-prompt.sh with Zsh, __git_ps1 currently errs
> > when inside a repo with:
> >
> > __git_ps1:96: = not found
>
> OK.
>
> > This commit changes `==` to `=` for both Bash and Zsh.
>
> We prefer to see "why" instead of "what", as the latter can easily
> be read from the patch text.
>
>     Avoid using non-portable "==" that is only understood by bash
>     and not zsh to "="; that way the prompt script becomes usable
>     with zsh again.
>
> or something like that.
>
> Elijah, I think this is a minor regression in this cycle, and the
> fix is obvious enough that it deserves to be in the upcoming
> release.  Agreed?

Yeah, it's a pretty obvious and very localized fix for a regression
from this cycle.  I'd say putting it in the upcoming release makes
sense.

> Thank you, David, for a fix.

+1.

> > Signed-off-by: David J. Malan <malan@harvard.edu>
> > ---
> >     Changes == to = for zsh's sake in git-prompt.sh
> >
> >     Upon installing git-prompt.sh
> >     [https://github.com/gitgitgadget/git/blob/master/contrib/completion/git-prompt.sh]
> >     on macOS Catalina, I noticed that
> >     https://github.com/gitgitgadget/git/commit/afda36dbf3b4f5a489ab44c00d5210c1fa894a40
> >     seems to have introduced an issue for Zsh whereby __git_ps1 errs with
> >
> >     __git_ps1:96: = not found
> >
> >     when inside a repo. Changing == to = would seem to address for both Bash
> >     and Zsh.
> >
> > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-679%2Fdmalan%2Fpatch-1-v1
> > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-679/dmalan/patch-1-v1
> > Pull-Request: https://github.com/gitgitgadget/git/pull/679
> >
> >  contrib/completion/git-prompt.sh | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
> > index e6cd5464e5..16260bab73 100644
> > --- a/contrib/completion/git-prompt.sh
> > +++ b/contrib/completion/git-prompt.sh
> > @@ -433,7 +433,7 @@ __git_ps1 ()
> >       local sparse=""
> >       if [ -z "${GIT_PS1_COMPRESSSPARSESTATE}" ] &&
> >          [ -z "${GIT_PS1_OMITSPARSESTATE}" ] &&
> > -        [ "$(git config --bool core.sparseCheckout)" == "true" ]; then
> > +        [ "$(git config --bool core.sparseCheckout)" = "true" ]; then
> >               sparse="|SPARSE"
> >       fi
> >
> > @@ -542,7 +542,7 @@ __git_ps1 ()
> >               fi
> >
> >               if [ -n "${GIT_PS1_COMPRESSSPARSESTATE}" ] &&
> > -                [ "$(git config --bool core.sparseCheckout)" == "true" ]; then
> > +                [ "$(git config --bool core.sparseCheckout)" = "true" ]; then
> >                       h="?"
> >               fi
> >
> >
> > base-commit: ae46588be0cd730430dded4491246dfb4eac5557

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

This branch is now known as en/sparse-status.

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

This patch series was integrated into seen via git@feee21f.

@gitgitgadget gitgitgadget bot added the seen label Jul 21, 2020
@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

This patch series was integrated into seen via git@aa82fc2.

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

This patch series was integrated into next via git@6aa5c12.

@gitgitgadget gitgitgadget bot added the next label Jul 21, 2020
@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

This patch series was integrated into seen via git@cfa7ae8.

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

This patch series was integrated into next via git@2e64660.

@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

This patch series was integrated into master via git@cfa7ae8.

@gitgitgadget gitgitgadget bot added the master label Jul 21, 2020
@gitgitgadget gitgitgadget bot closed this Jul 21, 2020
@gitgitgadget
Copy link

gitgitgadget bot commented Jul 21, 2020

Closed via cfa7ae8.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants