tg import: Standard script header
[topgit/lukasnellen.git] / tg-import.sh
blobddd532110ab37a75a3bac7d39b10c69728601e08
1 #!/bin/sh
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
5 # GPLv2
8 tg_get_commit_msg()
10 commit="$1"
11 git log -1 --pretty=format:"From: %an <%ae>%n%n%s%n%n%b" "$commit"
14 tg_get_branch_name()
16 # nice sed script from git-format-patch.sh
17 commit="$1"
18 titleScript='
19 s/[^-a-z.A-Z_0-9]/-/g
20 s/\.\.\.*/\./g
21 s/\.*$//
22 s/--*/-/g
23 s/^-//
24 s/-$//
27 git log -1 --pretty=format:"%s" "$commit" | sed -e "$titleScript"
30 tg_process_commit()
32 commit="$1"
33 branch_name=$(tg_get_branch_name "$commit")
34 echo "Importing $commit to $branch_name"
35 tg create tp/"$branch_name"
36 git read-tree "$commit"
37 tg_get_commit_msg "$commit" > .topmsg
38 git add -f .topmsg .topdeps
39 git commit -C "$commit"
42 # nice arg verification stolen from git-format-patch.sh
43 for revpair
45 case "$revpair" in
46 ?*..?*)
47 rev1=`expr "z$revpair" : 'z\(.*\)\.\.'`
48 rev2=`expr "z$revpair" : 'z.*\.\.\(.*\)'`
51 die "Unknow range spec $revpair"
53 esac
54 git rev-parse --verify "$rev1^0" >/dev/null 2>&1 ||
55 die "Not a valid rev $rev1 ($revpair)"
56 git rev-parse --verify "$rev2^0" >/dev/null 2>&1 ||
57 die "Not a valid rev $rev2 ($revpair)"
58 git cherry -v "$rev1" "$rev2" |
59 while read sign rev comment
61 case "$sign" in
62 '-')
63 info "Merged already: $comment"
66 tg_process_commit "$rev"
68 esac
69 done
70 done