From 7442ed29c778e1e1a2f0c1cf0057207d9f319a0c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 14 Jan 2006 18:17:16 -0800 Subject: [PATCH] Automatically remove already merged ones. Signed-off-by: Junio C Hamano --- PU | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/PU b/PU index 55d987b7..7af28ac9 100755 --- a/PU +++ b/PU @@ -3,27 +3,47 @@ # Rebuild "pu" from topic branches. # -git status && exit +git-update-index --refresh || exit +case "$(git-diff-index --name-status HEAD)" in +'') ;; +*) echo 2>&1 "Local modifications exist." + exit 1;; +esac git checkout pu && git reset --hard master && ORIG_HEAD=`git rev-parse ORIG_HEAD` || exit +LF=' +' case "$#" in 0) # interactive ;-) shift HH=`cd .git/refs/heads && find -type f | - sed -e 's/^\.\///' -e '/^master$/d' -e '/^maint$/d' -e '/^pu$/d'` + sed -e 's/^\.\///' \ + -e '/^naster$/d' -e '/^master$/d' -e '/^maint$/d' -e '/^pu$/d'` while test "$HH" do I=0 echo "0: done" + NHH= for H in $HH do + HSHA1=`git-rev-parse --verify $H` || continue + MB=`git-show-branch --merge-base pu $HSHA1` + case "$LF$MB$LF" in + *"$LF$HSHA1$LF"*) continue ;; # already merged. + esac I=$(($I+1)) echo -n "$I: " - git-show-branch --no-current $H + git-show-branch $H + NHH="${NHH}$H " done + case "$I" in + 0) + break ;; + esac + HH=$NHH echo -n "Merge which ones (0 to finish)? " read ans case "$ans" in -- 2.11.0