{"thread":{"id":"14984","subject":"[PATCH] topgit: Implement tg-import","startedAt":"2008-08-13T15:15:11Z","lastAt":"2008-08-13T15:15:11Z","messageCount":1,"participants":["Aneesh Kumar K.V"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"87059","messageId":"1218640511-12693-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com","threadId":"14984","inReplyTo":null,"subject":"[PATCH] topgit: Implement tg-import","fromName":"Aneesh Kumar K.V","fromEmail":"aneesh.kumar@linux.vnet.ibm.com","sentAt":"2008-08-13T15:15:11Z","receivedAt":"2008-08-13T15:15:11Z","isPatch":true,"sender":{"key":"aneesh.kumar@linux.vnet.ibm.com","avatar":"https://gravatar.com/avatar/a32cbcc7e70c8eb5a4cdbd1ea0b6c2ead382f2529cc43f51fd350767f079d92d?d=mp&s=160"},"body":"From: Aneesh Kumar K.V <aneesh.kumar@gmail.com>\n\nThis can be used to import a set of commits\nbetween range specified by range1..range2\nThis should help us to convert an already\nexisting quilt, stgit branches to topgit\nmanaged one\n\nSigned-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>\n---\n Makefile     |    2 +-\n README       |    7 ++++++\n tg-import.sh |   68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 3 files changed, 76 insertions(+), 1 deletions(-)\n create mode 100644 tg-import.sh\n\ndiff --git a/Makefile b/Makefile\nindex 6eade1e..95624ac 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -6,7 +6,7 @@ sharedir = $(PREFIX)/share/topgit\n hooksdir = $(cmddir)/hooks\n \n \n-commands_in = tg-create.sh tg-delete.sh tg-export.sh tg-info.sh tg-patch.sh tg-summary.sh tg-update.sh\n+commands_in = tg-create.sh tg-delete.sh tg-export.sh tg-info.sh tg-patch.sh tg-summary.sh tg-update.sh tg-import.sh\n hooks_in = hooks/pre-commit.sh\n \n commands_out = $(patsubst %.sh,%,$(commands_in))\ndiff --git a/README b/README\nindex b58a1b4..8b8f4d7 100644\n--- a/README\n+++ b/README\n@@ -330,6 +330,13 @@ tg export\n \tTODO: Make stripping of [PATCH] and other prefixes configurable\n \tTODO: --mbox option for other mode of operation\n \n+tg import\n+~~~~~~~~\n+\tImport the commits between the given revision range into\n+\ta topgit managed branch\n+\n+\tUsage: tg import rev1..rev2\n+\n tg update\n ~~~~~~~~~\n \tUpdate the current topic branch wrt. changes in the branches\ndiff --git a/tg-import.sh b/tg-import.sh\nnew file mode 100644\nindex 0000000..6c991c5\n--- /dev/null\n+++ b/tg-import.sh\n@@ -0,0 +1,68 @@\n+#!/bin/sh\n+# TopGit - A different patch queue manager\n+# GPLv2\n+\n+\n+tg_get_commit_msg()\n+{\n+\tcommit=\"$1\"\n+\tgit log -1 --pretty=format:\"From: %an <%ae>%n%n%s%n%n%b\" \"$commit\"\n+}\n+\n+tg_get_branch_name()\n+{\n+\t# nice sed script from git-format-patch.sh\n+\tcommit=\"$1\"\n+\ttitleScript='\n+\ts/[^-a-z.A-Z_0-9]/-/g\n+        s/\\.\\.\\.*/\\./g\n+\ts/\\.*$//\n+\ts/--*/-/g\n+\ts/^-//\n+\ts/-$//\n+\tq\n+'\n+\tgit log -1 --pretty=format:\"%s\" \"$commit\" | sed -e \"$titleScript\"\n+}\n+\n+tg_process_commit()\n+{\n+\tcommit=\"$1\"\n+\tbranch_name=$(tg_get_branch_name \"$commit\")\n+\techo \"Importing $commit to $branch_name\"\n+\ttg create tp/\"$branch_name\"\n+\tgit read-tree \"$commit\"\n+\ttg_get_commit_msg \"$commit\" > .topmsg\n+\tgit add -f .topmsg .topdeps\n+\tgit commit -C \"$commit\"\n+}\n+\n+# nice arg verification stolen from git-format-patch.sh\n+for revpair\n+do\n+\tcase \"$revpair\" in\n+\t?*..?*)\n+\t\trev1=`expr \"z$revpair\" : 'z\\(.*\\)\\.\\.'`\n+\t\trev2=`expr \"z$revpair\" : 'z.*\\.\\.\\(.*\\)'`\n+\t\t;;\n+\t*)\n+\t\tdie \"Unknow range spec $revpair\"\n+\t\t;;\n+\tesac\n+\tgit rev-parse --verify \"$rev1^0\" >/dev/null 2>&1 ||\n+\t\tdie \"Not a valid rev $rev1 ($revpair)\"\n+\tgit rev-parse --verify \"$rev2^0\" >/dev/null 2>&1 ||\n+\t\tdie \"Not a valid rev $rev2 ($revpair)\"\n+\tgit cherry -v \"$rev1\" \"$rev2\" |\n+\twhile read sign rev comment\n+\tdo\n+\t\tcase \"$sign\" in\n+\t\t'-')\n+\t\t\tinfo \"Merged already: $comment\"\n+\t\t\t;;\n+\t\t*)\n+\t\t\ttg_process_commit \"$rev\"\n+\t\t\t;;\n+\t\tesac\n+\tdone\n+done\n-- \n1.6.0.rc0.42.g186458.dirty\n"}]}