3 . "$(dirname $0)/common.sh"
5 log_file=../quilt-import.log
6 #cp /dev/null $log_file
10 echo "$@" | tee -a $log_file
16 "$@" 2>&1 | tee -a $log_file
17 [ ${PIPESTATUS[0]} -eq 0 ] || $SHELL -i || exit 1
22 quilters=$(grep -v '^#' $CTRL_FILE | awk -F '\t' '$2=="quilt" { print $3; }')
24 for name in $quilters; do
26 sfile="../quilt/$name/series"
27 base=$(sed -n 's/^#[ \t]*NEXT[-_]BASE[ \t]*\([^ \t]*\)[ \t]*$/\1/p' "$sfile")
28 if [ -n "$base" ]; then
29 nbase=$(grep -v '^#' $CTRL_FILE | awk -F '\t' '$3=="'"$base"'" { printf("%s/%s", "'"$base"'", $5); }')
30 [ -n "$nbase" ] && base="$nbase"
32 base=$(sed -n 's/^#[ \t]*BASE[ \t]*\(.*\)[ \t]*$/\1/p' "$sfile")
35 base=$(sed '1{s/^#.*GIT commit \(.*\)$/\1/;q}' "$sfile")
42 *-git[0-9]*) rbase=$("$bin_dir/get_gitid" "${base}")
44 commit*) rbase=${base##commit*[[:space:]]}
46 [0-9]*.*) rbase="v$base"
49 log "Importing $name based on $base"
50 rbase_sha1=$(git rev-parse --verify "$rbase^{commit}") || {
55 # don't bother importing things that haven't changed
56 mb=$(git merge-base "$rbase_sha1" "$name/master")
57 change_size=$(cd ../quilt;git diff last_merge.. -- "$name/" | wc -c)
58 [ "$mb" = "$rbase_sha1" ] && [ $change_size -eq 0 ] && {
59 log "Unchanged quilt series $name"
63 sed_exp='s/[ \t]*#.*$//;/^[ \t]*$/!p'
64 grep -q NEXT_PATCHES "$sfile" &&
65 sed_exp='/NEXT_PATCHES_START/,/NEXT_PATCHES_END/{'"$sed_exp"';}'
66 patches=$(sed -n "$sed_exp" "$sfile")
68 git show-ref --quiet --verify "refs/heads/$name/master" ||
69 execute git branch "$name/master" "$rbase_sha1"
71 [ -n "$patches" ] || {
72 log " quilt series is empty"
73 execute git branch -f "$name/master" "$rbase_sha1"
77 [ -d "../quilt-tmp" ] ||
78 execute git clone -s -l -n -q . ../quilt-tmp
80 log '$' cd ../quilt-tmp
82 execute git reset --hard "$rbase_sha1"
85 old_head=$(git rev-parse --verify HEAD)
86 execute git am --patch-format=mbox "../quilt/$name/$f"
87 new_head=$(git rev-parse --verify HEAD)
88 [ "$new_head" = "$old_head" ] && {
89 echo "Tree unchanged, please check ..."
97 execute git fetch -f ../quilt-tmp master:"$name/master"
100 [ -d "../quilt-tmp" ] &&
103 ( cd ../quilt; git branch -f last_merge HEAD )