Browse Source

feat(git): add `gunwipall` function (#11725)

Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
Ihor 1 year ago
parent
commit
115cee1701
2 changed files with 15 additions and 0 deletions
  1. 1 0
      plugins/git/README.md
  2. 14 0
      plugins/git/git.plugin.zsh

+ 1 - 0
plugins/git/README.md

@@ -254,6 +254,7 @@ These features allow to pause a branch development and switch to another one (_"
 | work_in_progress | Echoes a warning if the current branch is a wip |
 | gwip             | Commit wip branch                               |
 | gunwip           | Uncommit wip branch                             |
+| gunwipall        | Uncommit `--wip--` commits recursively          |
 
 ### Deprecated functions
 

+ 14 - 0
plugins/git/git.plugin.zsh

@@ -27,6 +27,20 @@ function work_in_progress() {
   command git -c log.showSignature=false log -n 1 2>/dev/null | grep -q -- "--wip--" && echo "WIP!!"
 }
 
+# Same as `gunwip` but recursive
+# "Unwips" all recent `--wip--` commits in loop until there is no left
+function gunwipall() {
+  while true; do
+    commit_message=$(git rev-list --max-count=1 --format="%s" HEAD)
+    if [[ $commit_message =~ "--wip--" ]]; then
+      git reset "HEAD~1"
+      (( $? )) && return 1
+    else
+      break
+    fi
+  done
+}
+
 # Check if main exists and use instead of master
 function git_main_branch() {
   command git rev-parse --git-dir &>/dev/null || return