X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=tg-import.sh;h=799efc9a8395228604e1ccf94cc66a0c36144ec9;hb=97ce88672c1c2bd6decabc54f5ae1e08e4ea8f32;hp=910d30080abb498c89d216280104622a6c07700d;hpb=112f06814e4abad03b37a90b181cdbc7a13267e2;p=topgit.git diff --git a/tg-import.sh b/tg-import.sh index 910d300..799efc9 100644 --- a/tg-import.sh +++ b/tg-import.sh @@ -4,6 +4,7 @@ # (c) Aneesh Kumar K.V 2008 # GPLv2 +branch_prefix=t/ ranges= @@ -12,8 +13,10 @@ ranges= while [ -n "$1" ]; do arg="$1"; shift case "$arg" in + -p) + branch_prefix="$1"; shift;; -*) - echo "Usage: tg [...] import RANGE..." >&2 + echo "Usage: tg [...] import [-p PREFIX] RANGE..." >&2 exit 1;; *) ranges="$ranges $arg";; @@ -21,13 +24,22 @@ while [ -n "$1" ]; do done -tg_get_commit_msg() +## Make sure our tree is clean + +git update-index --ignore-submodules --refresh || exit +[ -z "$(git diff-index --cached --name-status -r --ignore-submodules HEAD --)" ] || + die "the index is not clean" + + +## Perform import + +get_commit_msg() { commit="$1" git log -1 --pretty=format:"From: %an <%ae>%n%n%s%n%n%b" "$commit" } -tg_get_branch_name() +get_branch_name() { # nice sed script from git-format-patch.sh commit="$1" @@ -43,16 +55,17 @@ tg_get_branch_name() git log -1 --pretty=format:"%s" "$commit" | sed -e "$titleScript" } -tg_process_commit() +process_commit() { commit="$1" - branch_name=$(tg_get_branch_name "$commit") - echo "Importing $commit to $branch_name" - tg create tp/"$branch_name" - git read-tree "$commit" - tg_get_commit_msg "$commit" > .topmsg + branch_name=$(get_branch_name "$commit") + info "---- Importing $commit to $branch_prefix$branch_name" + tg create "$branch_prefix""$branch_name" + git cherry-pick --no-commit "$commit" + get_commit_msg "$commit" > .topmsg git add -f .topmsg .topdeps git commit -C "$commit" + info "++++ Importing $commit finished" } # nice arg verification stolen from git-format-patch.sh @@ -79,7 +92,7 @@ do info "Merged already: $comment" ;; *) - tg_process_commit "$rev" + process_commit "$rev" ;; esac done