3 log_file=../quilt-import.log
4 #cp /dev/null $log_file
8 echo "$@" | tee -a $log_file
14 "$@" 2>&1 | tee -a $log_file
15 [ ${PIPESTATUS[0]} -eq 0 ] || $SHELL -i || exit 1
20 quilters=$(grep -v '^#' ../real_control | awk -F '\t' '$2=="quilt" { print $3; }')
22 for name in $quilters; do
24 sfile="../quilt/$name/series"
25 base=$(sed -n 's/^#[ \t]*NEXT[-_]BASE[ \t]*\([^ \t]*\)[ \t]*$/\1/p' "$sfile")
26 if [ -n "$base" ]; then
27 nbase=$(grep -v '^#' ../real_control | awk -F '\t' '$3=="'"$base"'" { printf("%s/%s", "'"$base"'", $5); }')
28 [ -n "$nbase" ] && base="$nbase"
30 base=$(sed -n 's/^#[ \t]*BASE[ \t]*\(.*\)[ \t]*$/\1/p' "$sfile")
33 base=$(sed '1{s/^#.*GIT commit \(.*\)$/\1/;q}' "$sfile")
40 *-git[0-9]*) rbase=$($(dirname $0)/get_gitid "${base}")
42 commit*) rbase=${base##commit*[[:space:]]}
44 [0-9]*.*) rbase="v$base"
47 log "Importing $name based on $base"
48 rbase_sha1=$(git rev-parse --verify "$rbase^{commit}") || {
53 # don't bother importing things that haven't changed
54 mb=$(git merge-base "$rbase_sha1" "$name/master")
55 change_size=$(cd ../quilt;git diff last_merge.. -- "$name/" | wc -c)
56 [ "$mb" = "$rbase_sha1" ] && [ $change_size -eq 0 ] && {
57 log "Unchanged quilt series $name"
61 sed_exp='s/[ \t]*#.*$//;/^[ \t]*$/!p'
62 grep -q NEXT_PATCHES "$sfile" &&
63 sed_exp='/NEXT_PATCHES_START/,/NEXT_PATCHES_END/{'"$sed_exp"';}'
64 patches=$(sed -n "$sed_exp" "$sfile")
66 git show-ref --quiet --verify "refs/heads/$name/master" ||
67 execute git branch "$name/master" "$rbase_sha1"
69 [ -n "$patches" ] || {
70 log " quilt series is empty"
71 execute git branch -f "$name/master" "$rbase_sha1"
75 [ -d "../quilt-tmp" ] ||
76 execute git clone -s -l -n -q . ../quilt-tmp
78 log '$' cd ../quilt-tmp
80 execute git reset --hard "$rbase_sha1"
83 old_head=$(git rev-parse --verify HEAD)
84 execute git am "../quilt/$name/$f"
85 new_head=$(git rev-parse --verify HEAD)
86 [ "$new_head" = "$old_head" ] && {
87 echo "Tree unchanged, please check ..."
95 execute git fetch -f ../quilt-tmp master:"$name/master"
98 [ -d "../quilt-tmp" ] &&
101 ( cd ../quilt; git branch -f last_merge HEAD )