X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-quiltimport.sh;h=c9aecfd9132f2cb199add497d6c6ab2ebb79fdba;hb=d14e7407b34b8c11b407358b9677c283c381a71c;hp=6b0c4d2f279cf9e567e8c317c21e59d352ce3ff6;hpb=faf8280850e9af4ef63decd8d4e65a7609544c21;p=git.git diff --git a/git-quiltimport.sh b/git-quiltimport.sh index 6b0c4d2f2..c9aecfd91 100755 --- a/git-quiltimport.sh +++ b/git-quiltimport.sh @@ -1,7 +1,7 @@ #!/bin/sh OPTIONS_KEEPDASHDASH= OPTIONS_SPEC="\ -git-quiltimport [options] +git quiltimport [options] -- n,dry-run dry run author= author name and email address for patches without any @@ -53,7 +53,7 @@ if ! [ -d "$QUILT_PATCHES" ] ; then fi # Temporary directories -tmp_dir=.dotest +tmp_dir="$GIT_DIR"/rebase tmp_msg="$tmp_dir/msg" tmp_patch="$tmp_dir/patch" tmp_info="$tmp_dir/info" @@ -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 @@ -77,8 +93,9 @@ for patch_name in $(grep -v '^#' < "$QUILT_PATCHES/series" ); do } # Parse the author information - export GIT_AUTHOR_NAME=$(sed -ne 's/Author: //p' "$tmp_info") - export GIT_AUTHOR_EMAIL=$(sed -ne 's/Email: //p' "$tmp_info") + GIT_AUTHOR_NAME=$(sed -ne 's/Author: //p' "$tmp_info") + GIT_AUTHOR_EMAIL=$(sed -ne 's/Email: //p' "$tmp_info") + export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL while test -z "$GIT_AUTHOR_EMAIL" && test -z "$GIT_AUTHOR_NAME" ; do if [ -n "$quilt_author" ] ; then GIT_AUTHOR_NAME="$quilt_author_name"; @@ -104,17 +121,18 @@ for patch_name in $(grep -v '^#' < "$QUILT_PATCHES/series" ); do GIT_AUTHOR_EMAIL="$patch_author_email" fi done - export GIT_AUTHOR_DATE=$(sed -ne 's/Date: //p' "$tmp_info") - export SUBJECT=$(sed -ne 's/Subject: //p' "$tmp_info") + GIT_AUTHOR_DATE=$(sed -ne 's/Date: //p' "$tmp_info") + SUBJECT=$(sed -ne 's/Subject: //p' "$tmp_info") + export GIT_AUTHOR_DATE SUBJECT if [ -z "$SUBJECT" ] ; then SUBJECT=$(echo $patch_name | sed -e 's/.patch$//') 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