enter "$d0/$d" verbose
r=`git symbolic-ref HEAD`
r=${r#refs/heads/}
- if git diff HEAD | grep .; then
+ diffdata=`git diff --color HEAD`
+ if [ -n "$diffdata" ]; then
# we have uncommitted changes
- if yesno "Uncommitted changes in \"$r\" in $dv. Commit?"; then
+ if yesno "Uncommitted changes in \"$r\" in $dv. Commit?" 'echo "$diffdata" | less -r'; then
verbose git commit -a
fi
fi
bra=`git config "branch.$r.merge" || echo "$r"`
upstream="$rem/$bra"
if ! git rev-parse "$upstream" >/dev/null 2>&1; then
- upstream="`repobranch "$d"`"
+ upstream="origin/`repobranch "$d"`"
fi
- if git log "$upstream".."$r" | grep .; then
- if yesno "Push \"$r\" in $dv?"; then
+ logdata=`git log --color "$upstream".."$r"`
+ if [ -n "$logdata" ]; then
+ if yesno "Push \"$r\" in $dv?" 'echo "$logdata" | less -r'; then
verbose git push "$rem" HEAD
fi
fi
rm -rf "$patchdir"
;;
admin-merge)
- if [ "$#" = 1 ]; then
- set -- "${1%%/*}" "${1#*/}"
- fi
- for d in $repos; do
- enter "$d0/$d" verbose
- git rev-parse "$1/$2" || continue
- # 1. review
- {
- git log HEAD.."$1/$2"
- git diff HEAD..."$1/$2"
- } | less
- if yesno "Merge \"$1/$2\" into `git symbolic-ref HEAD` of $d?"; then
- git merge "$1/$2"
- if "$SELF" compile && yesno "Still merge \"$1/$2\" into `git symbolic-ref HEAD` of $d? Maybe you want to test first."; then
- git push origin HEAD
- git push "$1" :"$2"
- else
- git reset --hard HEAD@{1}
- fi
- fi
- done
- ;;
- admin-merge-2)
+ branch=$1
t=`mktemp`
report=""
reportecho()
continue
;;
esac
+ if [ -n "$branch" ]; then
+ if [ x"$branch" != x"${ref#refs/remotes/origin/}" ]; then
+ continue
+ fi
+ fi
reportecho " Branch $ref:"
note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
logdata=`git log --color "$base".."$ref"`