Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [PATCH v3] Updated StGit patch detection in vcs_info
Peter Grayson wrote on Thu, Dec 08, 2022 at 19:59:15 -0500:
> On Thu, Dec 8, 2022, at 5:06 PM, Daniel Shahaf wrote:
> > 2. The stg codepath doesn't extract patch subjects. The following
> > addresses that for the old stgit version I have packaged in my distro,
> > but I don't know whether it would DTRT for newer versions too.
>
> Newer versions of StGit have the same --description option for `stg
> series` with the same output, so the `stg` command will work across
> versions.
>
> For reference, running `stg series --noprefix --applied
> --description` as is done in the below change will give output of
> the form:
>
> patch1 # Subject of patch1
> p2 # Subject of p2
> third # Subject of third patch
>
> I tried the relevant example from vcs_info-examples along with
> this patch. The one problem I'm seeing is that because there is a
> variable amount of space between the last character of the patch
> name and the "#" separator, the `${${(f)"$(stg ...)"}/[#] }`
> substitution captures any extra spaces such that they make their
> way into the final prompt.
>
> This can be resolved by changing the replacement expansion to:
>
> ${${(f)"$(stg ...)"}/ *[#]}
>
> Which is a little clunky, but I don't know how to express "one
> or more spaces followed by a '#'" as a zsh pattern, thus the
> clunky ' *'. But it will work.
That'd be a «#» with EXTENDED_GLOB set, which is the case in this
context. (Docs are at «man zshall | less -p 'x#'».) Thus:
[[[
diff --git a/Functions/VCS_Info/Backends/VCS_INFO_get_data_git b/Functions/VCS_Info/Backends/VCS_INFO_get_data_git
index 37cd048db..c21c3c8d1 100644
--- a/Functions/VCS_Info/Backends/VCS_INFO_get_data_git
+++ b/Functions/VCS_Info/Backends/VCS_INFO_get_data_git
@@ -388,7 +388,7 @@ elif [[ -f "${gitdir}/CHERRY_PICK_HEAD" ]]; then
VCS_INFO_git_handle_patches
elif command -v stg >/dev/null &&
${vcs_comm[cmd]} show-ref --quiet refs/stacks/${gitbranch} refs/heads/${gitbranch}.stgit 2>/dev/null &&
- git_patches_applied=(${(f)"$(stg series --noprefix --applied 2>/dev/null)"})
+ git_patches_applied=(${${(f)"$(stg series --noprefix --applied --description 2>/dev/null)"}/ #[#]})
then
# Testing for StGit patches is done after testing for all git-proper
# patches/states. If a StGit user's repo is in one of those states, they
@@ -408,7 +408,7 @@ then
# --no-prefix. The former is compatible with StGit versions going back to
# 2008.
if zstyle -t ":vcs_info:${vcs}:${usercontext}:${rrn}" get-unapplied; then
- git_patches_unapplied=(${(f)"$(stg series --noprefix --unapplied 2>/dev/null)"})
+ git_patches_unapplied=(${${(f)"$(stg series --noprefix --unapplied --description 2>/dev/null)"}/ #[#]})
fi
VCS_INFO_git_handle_patches
else
]]]
I'll go ahead and push that shortly (I just need this message to go
through so I have its X-Seq number).
Cheers,
Daniel
Messages sorted by:
Reverse Date,
Date,
Thread,
Author