From 9dd5bded1bdc4f518aeed6a32ad70ccdd182dde5 Mon Sep 17 00:00:00 2001 From: Pierre Habouzit Date: Sat, 8 Mar 2008 19:27:09 +0100 Subject: [PATCH 1/2] 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 Signed-off-by: Junio C Hamano --- git-quiltimport.sh | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/git-quiltimport.sh b/git-quiltimport.sh index 233e5eae1d..84c8b8ef4f 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 From 18d077c1bf576d51e2ad09e41b22042b8cb5c9f4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 12 Mar 2008 21:07:19 -0700 Subject: [PATCH 2/2] quiltimport: fix misquoting of parsed -p parameter Signed-off-by: Junio C Hamano --- git-quiltimport.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/git-quiltimport.sh b/git-quiltimport.sh index 84c8b8ef4f..7cd8f7134e 100755 --- a/git-quiltimport.sh +++ b/git-quiltimport.sh @@ -67,7 +67,7 @@ while read patch_name level garbage do case "$patch_name" in ''|'#'*) continue;; esac case "$level" in - -p*);; + -p*) ;; ''|'#'*) level=;; *) @@ -129,7 +129,7 @@ do fi if [ -z "$dry_run" ] ; then - git apply --index -C1 $level "$tmp_patch" && + git apply --index -C1 ${level:+"$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