summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-03-14 00:16:26 -0700
committerJunio C Hamano <gitster@pobox.com>2008-03-14 00:16:26 -0700
commit1b56bc9a1545902db64b8bdce48a499900acfe0b (patch)
tree271f9169c23a82aace4fb0e812abedfdcdac9ba6
parent381b851c9b010147bb1fa83a013b7c8f60419026 (diff)
parent18d077c1bf576d51e2ad09e41b22042b8cb5c9f4 (diff)
downloadgit-1b56bc9a1545902db64b8bdce48a499900acfe0b.tar.gz
Merge branch 'ph/maint-quiltimport' into maint
* ph/maint-quiltimport: quiltimport: fix misquoting of parsed -p<num> parameter git-quiltimport: better parser to grok "enhanced" series files.
-rwxr-xr-xgit-quiltimport.sh22
1 files changed, 19 insertions, 3 deletions
diff --git a/git-quiltimport.sh b/git-quiltimport.sh
index 233e5eae1d..7cd8f7134e 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:+"$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