summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xhgimport61
1 files changed, 61 insertions, 0 deletions
diff --git a/hgimport b/hgimport
new file mode 100755
index 000000000..e286f374b
--- /dev/null
+++ b/hgimport
@@ -0,0 +1,61 @@
+#!/bin/bash
+# Copyright (c) 2006-2007 Mauro Carvalho Chehab (mchehab@infradead.org)
+# This code is placed under the terms of the GNU General Public License v2
+#
+#This script is capable to mass import patches from a mercurial tree
+#
+
+if [ "$1" == "" ]; then
+ echo "Usage: $0 <url>"
+ exit
+fi
+
+TREE="`echo $1|perl -ne 's|[/]$||; s|^.*[/]||; print $_;'`"
+
+if [[ "`echo $1|grep ^http://`" != "" ]]; then
+ SITE="`echo $1|perl -ne 's|[/]$||; print $_;'`"
+ echo Pushing from remote site $SITE, tree: $TREE
+else
+ DIR=$1
+ echo "Pushing from local directory $DIR, tree=$TREE"
+fi
+
+if [ "$TMP" == "" ]; then
+ TMP=/tmp
+fi
+TMP=$TMP/newpatches
+if [ ! -d $TMP ]; then
+ mkdir $TMP
+else
+ rm $TMP/*
+fi
+
+if [ "$DIR" != "" ]; then
+ CS="`hg outgoing -R $DIR .|grep 'changeset:'|cut -f2 -d:`"
+else
+ CS="`hg incoming $SITE |grep 'changeset:'|cut -f3 -d:`"
+fi
+
+NUM="`echo $CS|wc -w`"
+echo Number of patches: $NUM
+
+j=1
+for i in $CS; do
+ name=$TMP/hg_${TREE}_$(printf %0${#NUM}d ${j}).patch
+ echo $name with cs=$i
+ if [ "$DIR" != "" ]; then
+ hg export -R $DIR $i >$name
+ else
+ wget -q -O $name "$SITE?cmd=changeset;node=$i;style=raw"
+ fi
+
+ j=$((j+1))
+done
+
+echo "Diffstat of the imported series:"
+diffstat -w 72 -p1 $TMP/hg_${TREE}_*.patch
+
+# To cherry pick all files, you can do something like:
+#for i in $TMP/newpatches/*; do
+# hg import $i;
+#done