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