[PATCH] topgit: Implement tg-import

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxx>

This can be used to import a set of commits
between range specified by range1..range2
This should help us to convert an already
existing quilt, stgit branches to topgit
managed one

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxx>

---
 tg-import.sh |   97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 97 insertions(+), 0 deletions(-)
 create mode 100644 tg-import.sh

diff --git a/tg-import.sh b/tg-import.sh
new file mode 100644
index 0000000..0158f3b
--- /dev/null
+++ b/tg-import.sh
@@ -0,0 +1,97 @@
+#!/bin/bash
+#derived out of git-format-patch.sh
+
+function die()
+{
+	echo >&2 "$@"
+	exit 1
+}
+
+function tg_get_commit_msg
+{
+	commit=$1
+commitScript='
+	1,/^$/d
+	: loop
+	/^$/b loop
+	: body
+	p
+	n
+	b body'
+	author=$(git cat-file commit "$commit" | grep author |
+		cut -d ">" -f 1 | sed -ne "s/author//gp")
+	echo "From: "$author">"
+	git cat-file commit "$commit" | sed -ne "$commitScript"
+}
+
+function tg_get_patch
+{
+	git show $1
+}
+
+function tg_get_branch_name
+{
+
+titleScript='
+	1,/^$/d
+	: loop
+	/^$/b loop
+	s/[^-a-z.A-Z_0-9]/-/g
+        s/\.\.\.*/\./g
+	s/\.*$//
+	s/--*/-/g
+	s/^-//
+	s/-$//
+	q
+'
+	commit=$1
+	title=$(git cat-file commit "$commit" | sed -e "$titleScript")
+	echo ${title}
+}
+
+tmp=.tmp-series$$
+trap 'rm -f $tmp-*' 0 1 2 3 15
+
+series=$tmp-series
+# Now we have what we want in $@
+for revpair
+do
+	case "$revpair" in
+	?*..?*)
+		rev1=`expr "z$revpair" : 'z\(.*\)\.\.'`
+		rev2=`expr "z$revpair" : 'z.*\.\.\(.*\)'`
+		;;
+	*)
+		echo >&2 "Unknow range spec $revpair"
+		exit
+		;;
+	esac
+	git rev-parse --verify "$rev1^0" >/dev/null 2>&1 ||
+		die "Not a valid rev $rev1 ($revpair)"
+	git rev-parse --verify "$rev2^0" >/dev/null 2>&1 ||
+		die "Not a valid rev $rev2 ($revpair)"
+	git cherry -v "$rev1" "$rev2" |
+	while read sign rev comment
+	do
+		case "$sign" in
+		'-')
+			echo >&2 "Merged already: $comment"
+			;;
+		*)
+			echo $rev
+			;;
+		esac
+	done
+done >$series
+
+while read commit
+do
+	branch_name=$(tg_get_branch_name $commit)
+	echo "Importing $commit to $branch_name"
+	tg create tp/$branch_name
+	tg_get_commit_msg $commit > .topmsg
+	git add .topmsg
+	git commit -a -m "Add the commit message for the topic branch"
+	tg_get_patch $commit | patch -p1
+	git commit -a -m "Import the initial patch to the topic branch"
+done < $series
-- 
1.6.0.rc0.42.g186458.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux