]> git.ozlabs.org Git - next-scripts/commitdiff
Add more tools
authorStephen Rothwell <sfr@canb.auug.org.au>
Mon, 4 Aug 2008 06:37:44 +0000 (16:37 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 4 Aug 2008 06:37:44 +0000 (16:37 +1000)
check_left [new file with mode: 0755]
do_merge1 [new file with mode: 0755]
import_quilt_series [new file with mode: 0755]
make_summ [new file with mode: 0755]
merge_fix [new file with mode: 0755]
merge_msg1 [new file with mode: 0755]

diff --git a/check_left b/check_left
new file mode 100755 (executable)
index 0000000..9c1a27b
--- /dev/null
@@ -0,0 +1,31 @@
+#!/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
diff --git a/do_merge1 b/do_merge1
new file mode 100755 (executable)
index 0000000..b930478
--- /dev/null
+++ b/do_merge1
@@ -0,0 +1,51 @@
+#!/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
diff --git a/import_quilt_series b/import_quilt_series
new file mode 100755 (executable)
index 0000000..baf4310
--- /dev/null
@@ -0,0 +1,58 @@
+#!/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
+
diff --git a/make_summ b/make_summ
new file mode 100755 (executable)
index 0000000..f04fbb5
--- /dev/null
+++ b/make_summ
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+egrep '(git (rm|reset|checkout|quiltimport))|Merging|Applying|CONFLICT|Revert' merge.log | grep -v 'reset HEAD\^' >summ
+
+exit 0
diff --git a/merge_fix b/merge_fix
new file mode 100755 (executable)
index 0000000..e7c749c
--- /dev/null
+++ b/merge_fix
@@ -0,0 +1,58 @@
+#!/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
diff --git a/merge_msg1 b/merge_msg1
new file mode 100755 (executable)
index 0000000..737e905
--- /dev/null
@@ -0,0 +1,19 @@
+#!/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."
+