2 # TopGit - A different patch queue manager
3 # (c) Petr Baudis <pasky@suse.cz> 2008
4 # (c) Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> 2008
18 branch_prefix
="$1"; shift;;
22 echo "Usage: tg [...] import {[-p PREFIX] RANGE...|-s NAME COMMIT}" >&2
25 ranges
="$ranges $arg";;
30 ## Make sure our tree is clean
32 git update-index
--ignore-submodules --refresh ||
exit
33 [ -z "$(git diff-index --cached --name-status -r --ignore-submodules HEAD --)" ] ||
34 die
"the index is not clean"
42 git log
-1 --pretty=format
:"From: %an <%ae>%n%n%s%n%n%b" "$commit"
47 # nice sed script from git-format-patch.sh
58 git log
-1 --pretty=format
:"%s" "$commit" |
sed -e "$titleScript"
65 info
"---- Importing $commit to $branch_name"
66 tg create
"$branch_name"
67 git cherry-pick
--no-commit "$commit"
68 get_commit_msg
"$commit" > .topmsg
69 git add
-f .topmsg .topdeps
70 git commit
-C "$commit"
71 info
"++++ Importing $commit finished"
74 if [ -n "$single" ]; then
75 process_commit
"$ranges" "$single"
79 # nice arg verification stolen from git-format-patch.sh
80 for revpair
in $ranges
84 rev1
=`expr "z$revpair" : 'z\(.*\)\.\.'`
85 rev2
=`expr "z$revpair" : 'z.*\.\.\(.*\)'`
88 die
"Unknow range spec $revpair"
91 git rev-parse
--verify "$rev1^0" >/dev
/null
2>&1 ||
92 die
"Not a valid rev $rev1 ($revpair)"
93 git rev-parse
--verify "$rev2^0" >/dev
/null
2>&1 ||
94 die
"Not a valid rev $rev2 ($revpair)"
95 git cherry
-v "$rev1" "$rev2" |
96 while read sign
rev comment
100 info
"Merged already: $comment"
103 process_commit
"$rev" "$branch_prefix$(get_branch_name "$rev")"