echo "\e[1m$*\e[m"
}
-checksum()
-{
- if [ -x /usr/bin/md5sum ]; then
- /usr/bin/md5sum "$@"
- elif [ -x /bin/md5sum ]; then
- /bin/md5sum "$@"
- elif [ -x /usr/bin/cksum ]; then
- /usr/bin/cksum "$@"
- else
- echo "NOCHECKSUM"
- fi
-}
-
-self=`checksum "$SELF"`
+self=`git hash-object "$SELF"`
checkself()
{
- self_new=`checksum "$SELF"`
+ self_new=`git hash-object "$SELF"`
if [ x"$self" != x"$self_new" ]; then
msg "./all has changed."
if [ -z "$XONOTIC_FORBID_RERUN_ALL" ]; then
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
rem=`git config "branch.$r.remote" || echo origin`
bra=`git config "branch.$r.merge" || echo "$r"`
upstream="$rem/$bra"
- if ! [ git rev-parse "$upstream" ]; then
- upstream="`repobranch "$d"`"
+ if ! git rev-parse "$upstream" >/dev/null 2>&1; then
+ 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"`