diff options
author | Pierre Habouzit <madcoder@debian.org> | 2008-03-08 19:27:09 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-03-09 23:45:12 -0700 |
commit | 9dd5bded1bdc4f518aeed6a32ad70ccdd182dde5 (patch) | |
tree | 09b874c0133b70deead568d9309dca8ce980c45f | |
parent | GIT 1.5.4.4 (diff) | |
download | tgif-9dd5bded1bdc4f518aeed6a32ad70ccdd182dde5.tar.xz |
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>
-rwxr-xr-x | git-quiltimport.sh | 22 |
1 files 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 |