Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [PATCH] Improve vcs_info example for ahead/behind git commits



Tim Lee wrote on Tue, Apr 13, 2021 at 19:58:30 +0800:
> > Tim: Would you have time to address the remaining points from the
> > original review, https://zsh.org/workers/48306, either by implementing
> > them and sending a revised patch, or by counterarguing them?
> 
> I think I'll just porpose something simple, since I'm not very familiar
> with ZSH.
> 
> Patch:

Thanks, applied, and here's a patch series for implementing the other
outstanding points.  Would you review it, please?  See anything that
could go wrong, or that's missing?

Cheers,

Daniel


From 8a521515ce88802846df8884cabdd3966d0f32a8 Mon Sep 17 00:00:00 2001
From: Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx>
Date: Tue, 13 Apr 2021 13:56:36 +0000
Subject: [PATCH 1/2] vcs_info git docs: ahead/behind commits: Don't run
 rev-list when that would fail

---
 Misc/vcs_info-examples | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Misc/vcs_info-examples b/Misc/vcs_info-examples
index d33d0ceed..065ea6cb3 100644
--- a/Misc/vcs_info-examples
+++ b/Misc/vcs_info-examples
@@ -179,6 +179,9 @@ function +vi-git-st() {
     local ahead behind
     local -a gitstatus
 
+    # Exit early in case the worktree is on a detached HEAD
+    git rev-parse ${hook_com[branch]}@{upstream} >/dev/null 2>&1 || return 0
+
     ahead=$(git rev-list --count ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null)
     (( $ahead )) && gitstatus+=( "+${ahead}" )
 
From d084af57318a98f5e3ff197e269f42611e5d2443 Mon Sep 17 00:00:00 2001
From: Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx>
Date: Tue, 13 Apr 2021 13:56:31 +0000
Subject: [PATCH 2/2] vcs_info git docs: ahead/behind commits: Reduce the
 number of forks

---
 Misc/vcs_info-examples | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/Misc/vcs_info-examples b/Misc/vcs_info-examples
index 065ea6cb3..ba94cca29 100644
--- a/Misc/vcs_info-examples
+++ b/Misc/vcs_info-examples
@@ -182,10 +182,14 @@ function +vi-git-st() {
     # Exit early in case the worktree is on a detached HEAD
     git rev-parse ${hook_com[branch]}@{upstream} >/dev/null 2>&1 || return 0
 
-    ahead=$(git rev-list --count ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null)
-    (( $ahead )) && gitstatus+=( "+${ahead}" )
+    local -a ahead_and_behind=(
+        $(git rev-list --left-right --count HEAD...${hook_com[branch]}@{upstream} 2>/dev/null)
+    )
 
-    behind=$(git rev-list --count HEAD..${hook_com[branch]}@{upstream} 2>/dev/null)
+    ahead=${ahead_and_behind[1]}
+    behind=${ahead_and_behind[2]}
+
+    (( $ahead )) && gitstatus+=( "+${ahead}" )
     (( $behind )) && gitstatus+=( "-${behind}" )
 
     hook_com[misc]+=${(j:/:)gitstatus}


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