[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Quilt-dev] [PATCH] quilt fetch: pull series and patches over ftp/http
From: |
Brandon Philips |
Subject: |
[Quilt-dev] [PATCH] quilt fetch: pull series and patches over ftp/http |
Date: |
Sun, 12 Aug 2007 21:00:32 -0700 |
User-agent: |
Mutt/1.5.16 (2007-06-11) |
I have seen a number of people posting patch series on ftp and http sites but
there is no good way of pulling these series into a tree, until now. :)
example usage:
quilt fetch
http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.2-rc2/2.6.2-rc2-mm1/broken-out/series
This will download all patches in the series file and import them into the tree
in the proper order.
KNOWN BUGS: My regular expression in check_line doesn't work for series entries
with -p flags like this one: http://ifup.org/patches/test/series . Does anyone
have any idea how to fix this? Surprisingly this works:
echo io-fingerprinting.patch -p2 | egrep -q
'^\s*[_a-zA-Z0-9\.\-]+(\s\-p\s*[0123456789]?)?\s*$'; echo $?
Signed-off-by: Brandon Philips <address@hidden>
---
quilt/fetch.in | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 135 insertions(+)
Index: quilt/quilt/fetch.in
===================================================================
--- /dev/null
+++ quilt/quilt/fetch.in
@@ -0,0 +1,135 @@
+#! @BASH@
+
+# This script is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# See the COPYING and AUTHORS files for more details.
+
+# Read in library functions
+if [ "$(type -t patch_file_name)" != function ]
+then
+ if ! [ -r $QUILT_DIR/scripts/patchfns ]
+ then
+ echo "Cannot read library $QUILT_DIR/scripts/patchfns" >&2
+ exit 1
+ fi
+ . $QUILT_DIR/scripts/patchfns
+fi
+
+usage()
+{
+ if [ x$1 = x-h ]
+ then
+ printf $"
+Import all patches in the series file pointed at by URL. The patches will be
+inserted following the current top patch, and must be pushed after import to
+apply them.
+
+-f Overwite/update existing patches.
+
+-d {o|a|n}
+ When overwriting in existing patch, keep the old (o), all (a), or
+ new (n) patch header. If both patches include headers, this option
+ must be specified. This option is only effective when -f is used.
+"
+ exit 0
+ else
+ exit 1
+ fi
+}
+
+options=`getopt -o d:fp:Rh -- "$@"`
+
+if [ $? -ne 0 ]
+then
+ usage
+fi
+
+eval set -- "$options"
+
+while true
+do
+ case "$1" in
+ -h)
+ usage -h ;;
+ -d)
+ case "$2" in
+ o|n|a) import_opts+=" -d $2" ;;
+ *) usage ;;
+ esac
+ shift 2 ;;
+ -f)
+ import_opts+=" -f"
+ shift ;;
+ --)
+ shift
+ break ;;
+ esac
+done
+
+get_url_to_tmp()
+{
+ tmp=$(gen_tempfile)
+ curl -s -S -f "$1" -o "$tmp"
+
+ echo "$tmp"
+}
+
+make_url()
+{
+ echo "$1/$2"
+}
+
+check_line()
+{
+ local line=$1
+
+ if [ "$line" = "" ]
+ then
+ return 1
+ fi
+
+ echo "$line" | egrep -q '^\s*#.*'
+ if [ $? -eq 0 ]
+ then
+ return 1
+ fi
+
+ echo $line | egrep -q
'^[a-zA-Z0-9]+[_a-zA-Z0-9\.\-]+(\s\-p\s*[0123456789]?)?\s*$'
+ if [ $? -ne 0 ]
+ then
+ echo "$line is not a valid series entry, exitting"
+ exit 1
+ fi
+
+ return 0
+}
+
+get_patch_name()
+{
+ echo $1 | egrep -o "^[_a-zA-Z0-9\.\-]+"
+}
+
+dirname=`dirname $1`
+
+series=$(get_url_to_tmp $1)
+tac $series | while read line
+do
+ check_line "$line" || continue
+ name=$(get_patch_name $line)
+ echo "Fetching $name"
+ url=$(make_url $dirname $name)
+ tmp=$(get_url_to_tmp $url)
+
+ quilt import $import_opts -P $line $tmp
+
+ rm $tmp
+done
+
+rm $series
+
+### Local Variables:
+### mode: shell-script
+### End:
+# vim:filetype=sh
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Quilt-dev] [PATCH] quilt fetch: pull series and patches over ftp/http,
Brandon Philips <=