X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topgit.git;a=blobdiff_plain;f=tg-import.sh;h=a8d3be5b3098d73c9b1dabfc9e1d509ae533a533;hp=6f8c8daf08d2bc6abb14d4bb22d49995f4463730;hb=170fa45b8745b673d31f4b2398780fc0bb7c703d;hpb=995861effbc75374ac47dfd7fd787f01c6366bef diff --git a/tg-import.sh b/tg-import.sh index 6f8c8da..a8d3be5 100644 --- a/tg-import.sh +++ b/tg-import.sh @@ -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