summaryrefslogtreecommitdiff
path: root/git-quiltimport.sh
diff options
context:
space:
mode:
authorPierre Habouzit <madcoder@debian.org>2008-03-08 18:27:09 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-03-10 06:45:12 (GMT)
commit9dd5bded1bdc4f518aeed6a32ad70ccdd182dde5 (patch)
tree09b874c0133b70deead568d9309dca8ce980c45f /git-quiltimport.sh
parent56d5fe285583b5177ffc65dbe7df636ed5b8cc6b (diff)
downloadgit-9dd5bded1bdc4f518aeed6a32ad70ccdd182dde5.zip
git-9dd5bded1bdc4f518aeed6a32ad70ccdd182dde5.tar.gz
git-9dd5bded1bdc4f518aeed6a32ad70ccdd182dde5.tar.bz2
git-quiltimport: better parser to grok "enhanced" series files.
The previous parser wasn't able to grok: * empty lines; * annotated patch levels (trailing -pNNN annotations); * trailing comments. Now it understands them and uses the patch level hints as a git apply argument. Signed-off-by: Pierre Habouzit <madcoder@debian.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-quiltimport.sh')
-rwxr-xr-xgit-quiltimport.sh22
1 files changed, 19 insertions, 3 deletions
diff --git a/git-quiltimport.sh b/git-quiltimport.sh
index 233e5ea..84c8b8e 100755
--- a/git-quiltimport.sh
+++ b/git-quiltimport.sh
@@ -63,7 +63,23 @@ tmp_info="$tmp_dir/info"
commit=$(git rev-parse HEAD)
mkdir $tmp_dir || exit 2
-for patch_name in $(grep -v '^#' < "$QUILT_PATCHES/series" ); do
+while read patch_name level garbage
+do
+ case "$patch_name" in ''|'#'*) continue;; esac
+ case "$level" in
+ -p*);;
+ ''|'#'*)
+ level=;;
+ *)
+ echo "unable to parse patch level, ignoring it."
+ level=;;
+ esac
+ case "$garbage" in
+ ''|'#'*);;
+ *)
+ echo "trailing garbage found in series file: $garbage"
+ exit 1;;
+ esac
if ! [ -f "$QUILT_PATCHES/$patch_name" ] ; then
echo "$patch_name doesn't exist. Skipping."
continue
@@ -113,10 +129,10 @@ for patch_name in $(grep -v '^#' < "$QUILT_PATCHES/series" ); do
fi
if [ -z "$dry_run" ] ; then
- git apply --index -C1 "$tmp_patch" &&
+ git apply --index -C1 $level "$tmp_patch" &&
tree=$(git write-tree) &&
commit=$( (echo "$SUBJECT"; echo; cat "$tmp_msg") | git commit-tree $tree -p $commit) &&
git update-ref -m "quiltimport: $patch_name" HEAD $commit || exit 4
fi
-done
+done <"$QUILT_PATCHES/series"
rm -rf $tmp_dir || exit 5