From 22780d27c0a1f3bbaf428129e7af6972bce1d625 Mon Sep 17 00:00:00 2001 From: Stephen Rothwell Date: Mon, 4 Aug 2008 16:37:44 +1000 Subject: [PATCH] Add more tools --- check_left | 31 ++++++++++++++++++++++++ do_merge1 | 51 +++++++++++++++++++++++++++++++++++++++ import_quilt_series | 58 +++++++++++++++++++++++++++++++++++++++++++++ make_summ | 5 ++++ merge_fix | 58 +++++++++++++++++++++++++++++++++++++++++++++ merge_msg1 | 19 +++++++++++++++ 6 files changed, 222 insertions(+) create mode 100755 check_left create mode 100755 do_merge1 create mode 100755 import_quilt_series create mode 100755 make_summ create mode 100755 merge_fix create mode 100755 merge_msg1 diff --git a/check_left b/check_left new file mode 100755 index 0000000..9c1a27b --- /dev/null +++ b/check_left @@ -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 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 index 0000000..baf4310 --- /dev/null +++ b/import_quilt_series @@ -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 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 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 index 0000000..737e905 --- /dev/null +++ b/merge_msg1 @@ -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." + -- 2.39.2