chiark / gitweb /
tg import -s: Whitespace fix
[topgit.git] / tg-import.sh
index 11829a94cd737b14bf8b0a8cbf4e7c9b3d9c59ba..2a24fbb96dfc7e0600416e0eb51bae5bb63a95be 100644 (file)
@@ -5,7 +5,9 @@
 # GPLv2
 
 branch_prefix=t/
+single=
 ranges=
+basedep=
 
 
 ## Parse options
@@ -13,10 +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..." >&2
+               echo "Usage: tg [...] import [-d BASE_BRANCH] {[-p PREFIX] RANGE...|-s NAME COMMIT}" >&2
                exit 1;;
        *)
                ranges="$ranges $arg";;
@@ -58,16 +64,22 @@ get_branch_name()
 process_commit()
 {
        commit="$1"
-       branch_name=$(get_branch_name "$commit")
-       info "---- Importing $commit to $branch_prefix$branch_name"
-       tg create "$branch_prefix""$branch_name"
-       git read-tree "$commit"
+       branch_name="$2"
+       info "---- Importing $commit to $branch_name"
+       tg create "$branch_name" $basedep
+       basedep=
+       git cherry-pick --no-commit "$commit"
        get_commit_msg "$commit" > .topmsg
        git add -f .topmsg .topdeps
        git commit -C "$commit"
        info "++++ Importing $commit finished"
 }
 
+if [ -n "$single" ]; then
+       process_commit $ranges "$single"
+       exit
+fi
+
 # nice arg verification stolen from git-format-patch.sh
 for revpair in $ranges
 do
@@ -92,7 +104,7 @@ do
                        info "Merged already: $comment"
                        ;;
                *)
-                       process_commit "$rev"
+                       process_commit "$rev" "$branch_prefix$(get_branch_name "$rev")"
                        ;;
                esac
        done