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
21 branch_prefix="$1"; shift;;
25 echo "Usage: tg [...] import [-d BASE_BRANCH] {[-p PREFIX] RANGE...|-s NAME COMMIT}" >&2
28 ranges="$ranges $arg";;
33 ## Make sure our tree is clean
35 git update-index --ignore-submodules --refresh || exit
36 [ -z "$(git diff-index --cached --name-status -r --ignore-submodules HEAD --)" ] ||
37 die "the index is not clean"
46 ! header="$(git config topgit.to)" || headers="$headers%nTo: $header"
47 ! header="$(git config topgit.cc)" || headers="$headers%nCc: $header"
48 ! header="$(git config topgit.bcc)" || headers="$headers%nBcc: $header"
49 git log -1 --pretty=format:"From: %an <%ae>$headers%nSubject: %s%n%n%b" "$commit"
54 # nice sed script from git-format-patch.sh
65 git log -1 --pretty=format:"%s" "$commit" | sed -e "$titleScript"
72 info "---- Importing $commit to $branch_name"
73 tg create "$branch_name" $basedep
75 git cherry-pick --no-commit "$commit"
76 get_commit_msg "$commit" > .topmsg
77 git add -f .topmsg .topdeps
78 git commit -C "$commit"
79 info "++++ Importing $commit finished"
82 if [ -n "$single" ]; then
83 process_commit $ranges "$single"
87 # nice arg verification stolen from git-format-patch.sh
88 for revpair in $ranges
92 rev1=`expr "z$revpair" : 'z\(.*\)\.\.'`
93 rev2=`expr "z$revpair" : 'z.*\.\.\(.*\)'`
96 die "Unknow range spec $revpair"
99 git rev-parse --verify "$rev1^0" >/dev/null 2>&1 ||
100 die "Not a valid rev $rev1 ($revpair)"
101 git rev-parse --verify "$rev2^0" >/dev/null 2>&1 ||
102 die "Not a valid rev $rev2 ($revpair)"
103 git cherry -v "$rev1" "$rev2" |
104 while read sign rev comment
108 info "Merged already: $comment"
111 process_commit "$rev" "$branch_prefix$(get_branch_name "$rev")"