--- /dev/null
+#!/bin/bash
+
+LOG_FILE="../left_over.log"
+
+cp /dev/null $LOG_FILE
+
+log()
+{
+ echo "$@" | tee -a $LOG_FILE
+}
+
+heads=$(grep -v '^#' ../real_control | awk -F ' ' '$2=="quilt" { printf("quilt/%s ", $3); } $2=="git" { printf("%s/%s ", $3, $5); }')
+
+for h in $heads; do
+ mb=$(git merge-base origin/master $h)
+ rh=$(git rev-parse $h)
+ [ "$mb" = "$rh" ] &&
+ continue
+
+# c=$(git rev-list --pretty='format:%m%H' --no-merges --left-right --cherry-pick origin/master...$h | sed -n 's/^>//p')
+# [ -z "$c" ] &&
+# continue
+
+## git shortlog --no-walk $c 2>&1 | tee -a $LOG_FILE
+# log $h "$(echo $c | wc -w)"
+
+ gitk stable..$h
+
+done
+
+exit 0
--- /dev/null
+#!/bin/bash
+
+LOG_FILE="../merge.log"
+build_host="sprygo"
+build_dir="/scratch/sfr/next"
+build_cmd="bin/build_next"
+
+no_build=false
+[ "$1" = "-n" ] && {
+ shift
+ no_build=true
+}
+[ -n "$1" ] && build_host="$1"
+
+log()
+{
+ echo "$@" | tee -a $LOG_FILE
+}
+
+execute()
+{
+ log "$" $@
+ $@ 2>&1 | tee -a $LOG_FILE
+ return ${PIPESTATUS[0]}
+}
+
+heads=$(grep -v '^#' ../real_control | awk -F ' ' '$2=="quilt" { printf("quilt/%s ", $3); } $2=="git" { printf("%s/%s ", $3, $5); }')
+
+for h in $heads; do
+ log Merging $h
+ old_head=$(git rev-parse HEAD)
+ execute git merge $h || {
+ echo Merge failed 1>&2
+ bash -i || exit
+ GIT_EDITOR=: execute git commit -v -a
+ execute git diff -M --stat --summary 'HEAD^..'
+ }
+ new_head=$(git rev-parse HEAD)
+ [ "$old_head" = "$new_head" ] && continue
+ $no_build && continue
+ rsync -avH --exclude .git --delete . "$build_host":"$build_dir"/. || {
+ echo Rsync failed 1>&2
+ bash -i || exit
+ }
+ ssh "$build_host" "$build_cmd" || {
+ echo Build failed 1>&2
+ bash -i || exit
+ }
+done
+
+exit 0
--- /dev/null
+#!/bin/bash
+
+quilt_dir="../quilt"
+
+name="$1"
+
+sfile="$quilt_dir/$name/series"
+base=$(sed -n 's/^[# ]*NEXT_BASE[ ]*\(.*\)[ ]*$/\1/p' "$sfile")
+if [ -n "$base" ]; then
+ base=$(grep -v '^#' ../real_control | awk -F ' ' '$3=="'"$base"'" { if ($2=="quilt") printf("quilt/%s", "'"$base"'"); else printf("%s/%s", "'"$base"'", $5); }')
+else
+ base=$(sed -n 's/^[# ]*BASE[ ]*\(.*\)[ ]*$/\1/p' "$sfile")
+fi
+rbase="$base"
+case "$base" in
+*-git[0-9]*) rbase=$(wget -q -O - "http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-${base}.id")
+ ;;
+commit*) rbase=$(expr "$base" : "commit[ ]*\(.*\)")
+ ;;
+[0-9]*.*) rbase="v$base"
+ ;;
+esac
+#log "Importing $name based on $base"
+git rev-list -n 1 "$rbase" -- >/dev/null 2>&1 || {
+# log "Unknown BASE"
+ continue
+}
+grep -q NEXT_PATCHES "$sfile" && {
+ mv -f "$sfile" "$sfile.orig"
+ do_echo=:
+ while read line; do
+ case $line in
+ *NEXT_PATCHES_START*) do_echo=echo
+ ;;
+ *NEXT_PATCHES_END*) do_echo=:
+ ;;
+ esac
+ $do_echo $line
+ done <"$sfile.orig" >"$sfile"
+}
+
+#execute git branch -D "next-quilt-$name"
+git branch -D "next-quilt-$name"
+#execute git checkout -b "next-quilt-$name" "$rbase" || sh -i || {
+git checkout -b "next-quilt-$name" "$rbase" || sh -i || {
+ [ -f "$sfile.orig" ] && mv -f $sfile.orig $sfile
+ exit 1
+}
+author=$(grep -v '^#' ../real_control | awk -F ' ' '$3=="'"$name"'" { printf("%s", $1); }' | sed 's/,.*$//')
+#execute git quiltimport --author "$author" --patches "$quilt_dir/$name" || sh -i || {
+git quiltimport --author "$author" --patches "$quilt_dir/$name" || sh -i || {
+ [ -f "$sfile.orig" ] && mv -f $sfile.orig $sfile
+ exit 1
+}
+
+[ -f "$sfile.orig" ] &&
+ mv -f $sfile.orig $sfile
+
--- /dev/null
+#!/bin/bash
+
+egrep '(git (rm|reset|checkout|quiltimport))|Merging|Applying|CONFLICT|Revert' merge.log | grep -v 'reset HEAD\^' >summ
+
+exit 0
--- /dev/null
+#!/bin/bash
+
+LOG_FILE="../merge.log"
+build_host="sprygo"
+build_dir="/scratch/sfr/next"
+build_cmd="bin/build_next"
+
+no_build=false
+[ "$1" = "-n" ] && {
+ shift
+ no_build=true
+}
+patch="$1"
+[ -f "$patch" ] || {
+ echo "patch does not exist" 1>&2
+ exit 1
+}
+[ -n "$2" ] && build_host="$2"
+
+log()
+{
+ echo "$@" | tee -a $LOG_FILE
+}
+
+execute()
+{
+ log "$" $@
+ $@ 2>&1 | tee -a $LOG_FILE
+ return ${PIPESTATUS[0]}
+}
+
+execute git am -3 "$patch" || {
+ echo "git am failed" 1>&2
+ bash -i || exit
+}
+GIT_EDITOR=: execute git reset 'HEAD^' || {
+ echo "git reset failed" 1>&2
+ bash -i || exit
+}
+GIT_EDITOR=: execute git commit -v -a --amend || {
+ echo "git commit failed" 1>&2
+ bash -i || exit
+}
+
+$no_build && exit 0
+
+rsync -avH --exclude .git --delete . "$build_host":"$build_dir"/. || {
+ echo Rsync failed 1>&2
+ bash -i || exit
+}
+
+echo "Building using $build_cmd on $build_host"
+ssh "$build_host" "$build_cmd" || {
+ echo Build failed 1>&2
+ bash -i || exit
+}
+
+exit 0
--- /dev/null
+#!/bin/bash
+
+log=../merge.log
+[ -f merge.log ] && log=merge.log
+control=../real_control
+[ -f real_control ] && control=real_control
+
+branch=$(grep '^Merging ' $log | tail -1 | sed 's/^Merging //')
+branch=${branch#quilt/}
+branch=${branch%%/*}
+
+contact=$(sed -n "/ $branch /s/ .*$//p" $control)
+
+gitk --merge $1 &
+gvim $1
+sylpheed --compose "mailto:$contact?Cc=linux-next@vger.kernel.org&Subject=linux-next: manual merge of the $branch tree&Body=Hi ,%0A\
+%0A\
+Today's linux-next merge of the $branch tree got a conflict in $1 between commit (%22%22) from the tree and commit (%22%22) from the $branch tree."
+