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 09:52:42 -0500:
> This is a slight improvement over the v2 patch. Only a single `git
> show-ref` is used to determine whether a StGit stack is present on the
> current branch instead of one or tow `git rev-parse` calls.
> 
> I recommend applying this patch. It solves the StGit compatibility
> problems in vcs_info:
> 
> - Works for all versions of StGit going back to 2009.
> - Does not impose runtime overhead when `stg` is not installed.
> - Only imposes the small cost of `git show-ref` (<0.5ms) otherwise.
> - Small patch. Low risk.

Thanks a lot for the patch and for all the constructive back-and-forth,
and many apologies for not getting around to pushing v2 sooner.
I hadn't forgotten about it; I was simply swamped, and wanted to
proofread and test it once more before pushing.  (And I had planned to
review and push v2 today anyway, regardless of v3.)

Pushed the patch to master.

Noticed two issues while there:

1. (preëxisting) Some of the other codepaths don't check the
get-unapplied style.  I'll send a patch for that in a minute.

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.

[[[
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
]]]

The "Show information about patch series" snippet in
Misc/vcs_info-examples can be used to test this change.

Best,

Daniel




Messages sorted by: Reverse Date, Date, Thread, Author