chiark / gitweb /
Merge branch 'master' into refs/top-bases/debian/locations
[topgit.git] / tg-import.sh
index 6f8c8da..a8d3be5 100644 (file)
@@ -7,6 +7,7 @@
 branch_prefix=t/
 single=
 ranges=
+basedep=
 
 
 ## Parse options
@@ -14,12 +15,14 @@ ranges=
 while [ -n "$1" ]; do
        arg="$1"; shift
        case "$arg" in
+       -d)
+               basedep="$1"; shift;;
        -p)
                branch_prefix="$1"; shift;;
        -s)
                single="$1"; shift;;
        -*)
-               echo "Usage: tg [...] import {[-p PREFIX] RANGE...|-s NAME COMMIT}" >&2
+               echo "Usage: tg [...] import [-d BASE_BRANCH] {[-p PREFIX] RANGE...|-s NAME COMMIT}" >&2
                exit 1;;
        *)
                ranges="$ranges $arg";;
@@ -39,7 +42,11 @@ git update-index --ignore-submodules --refresh || exit
 get_commit_msg()
 {
        commit="$1"
-       git log -1 --pretty=format:"From: %an <%ae>%n%n%s%n%n%b" "$commit"
+       headers=""
+       ! header="$(git config topgit.to)" || headers="$headers%nTo: $header"
+       ! header="$(git config topgit.cc)" || headers="$headers%nCc: $header"
+       ! header="$(git config topgit.bcc)" || headers="$headers%nBcc: $header"
+       git log -1 --pretty=format:"From: %an <%ae>$headers%nSubject: %s%n%n%b" "$commit"
 }
 
 get_branch_name()
@@ -63,16 +70,20 @@ process_commit()
        commit="$1"
        branch_name="$2"
        info "---- Importing $commit to $branch_name"
-       tg create "$branch_name"
-       git cherry-pick --no-commit "$commit"
+       tg create "$branch_name" $basedep
+       basedep=
        get_commit_msg "$commit" > .topmsg
        git add -f .topmsg .topdeps
+       if ! git cherry-pick --no-commit "$commit"; then
+               info "The commit will also finish the import of this patch."
+               exit 2
+       fi
        git commit -C "$commit"
        info "++++ Importing $commit finished"
 }
 
 if [ -n "$single" ]; then
-       process_commit "$ranges" "$single"
+       process_commit $ranges "$single"
        exit
 fi
 
@@ -105,3 +116,5 @@ do
                esac
        done
 done
+
+# vim:noet