# Rebuild "pu" from topic branches.
#
-. git-sh-setup
+git-update-index --refresh || exit
+case "$(git-diff-index --name-status HEAD)" in
+'') ;;
+*) echo 2>&1 "Local modifications exist."
+ exit 1;;
+esac
-git-status && exit
-git-checkout pu &&
-git-reset --hard master &&
-ORIG_HEAD=`git-rev-parse ORIG_HEAD` || exit
+case "$1" in
+--continue)
+ shift
+ ;;
+*)
+ git checkout pu &&
+ git reset --hard master || exit
+esac
+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 '/^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 $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
+ '' | 0)
+ break ;;
+ esac
+ I=0
+ UNUSE= USE= USED=
+ for H in $HH
+ do
+ I=$(($I+1))
+ case " $ans " in
+ *' '$I' '*)
+ USE="$USE$H "
+ USED="$USED,$H"
+ ;;
+ *)
+ UNUSE="$UNUSE$H "
+ ;;
+ esac
+ done
+ USED=`expr "$USED" : ',\(.*\)'`
+ git pull -n . $USE || exit
+ # git merge -n "Merge $USED" pu $USE || exit
+ HH=$UNUSE
+ done
+ exit
+ ;;
+esac
for H
do
- (IFS=",$IFS"; git-pull -n . $H) || exit
+# (IFS=",$IFS"; git merge -n "Merge $H" pu $H) || exit
+ (IFS=",$IFS"; git pull -n . $H) || exit
done
-(IFS=",$IFS"; git-show-branch master pu $* $ORIG_HEAD)
-
-
-
-
+(IFS=",$IFS"; git show-branch master $* pu `git rev-parse --short $ORIG_HEAD`)