chiark / gitweb /
Merge commit 'refs/top-bases/debian/locations' into debian/locations
[topgit.git] / tg-import.sh
index ddd532110ab37a75a3bac7d39b10c69728601e08..799efc9a8395228604e1ccf94cc66a0c36144ec9 100644 (file)
@@ -4,14 +4,42 @@
 # (c) Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>  2008
 # GPLv2
 
 # (c) Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>  2008
 # GPLv2
 
+branch_prefix=t/
+ranges=
 
 
-tg_get_commit_msg()
+
+## Parse options
+
+while [ -n "$1" ]; do
+       arg="$1"; shift
+       case "$arg" in
+       -p)
+               branch_prefix="$1"; shift;;
+       -*)
+               echo "Usage: tg [...] import [-p PREFIX] RANGE..." >&2
+               exit 1;;
+       *)
+               ranges="$ranges $arg";;
+       esac
+done
+
+
+## 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"
 }
 
 {
        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"
 {
        # nice sed script from git-format-patch.sh
        commit="$1"
@@ -27,20 +55,21 @@ tg_get_branch_name()
        git log -1 --pretty=format:"%s" "$commit" | sed -e "$titleScript"
 }
 
        git log -1 --pretty=format:"%s" "$commit" | sed -e "$titleScript"
 }
 
-tg_process_commit()
+process_commit()
 {
        commit="$1"
 {
        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"
        git add -f .topmsg .topdeps
        git commit -C "$commit"
+       info "++++ Importing $commit finished"
 }
 
 # nice arg verification stolen from git-format-patch.sh
 }
 
 # nice arg verification stolen from git-format-patch.sh
-for revpair
+for revpair in $ranges
 do
        case "$revpair" in
        ?*..?*)
 do
        case "$revpair" in
        ?*..?*)
@@ -63,7 +92,7 @@ do
                        info "Merged already: $comment"
                        ;;
                *)
                        info "Merged already: $comment"
                        ;;
                *)
-                       tg_process_commit "$rev"
+                       process_commit "$rev"
                        ;;
                esac
        done
                        ;;
                esac
        done