[PATCH] quiltimport: use quilt to do patch/series parsing and application
- From
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
- Date
- Mar 20, 2009, 19:18 UTC
- Message-ID
- <1237576683-5516-1-git-send-email-u.kleine-koenig@pengutronix.de>
- In-Reply-To
- <20090320190617.GA28784@pengutronix.de>
quilt supports packed patches that are not recognized by quiltimport. Instead of adding this feature explicitly, use quilt to do the dirty work.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Cc: Dan Nicholson <dbn.lists@gmail.com> Cc: Eric W. Biederman <ebiederm@xmission.com> Cc: Gerrit Pape <pape@smarden.org> Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de> Cc: Junio C Hamano <gitster@pobox.com> Cc: Pierre Habouzit <madcoder@debian.org> --- Hello,
note I didn't test it deeply, but I succeeded to import the preempt-rt patch.
Things that might be worth testing are:
missing patches referenced in series patch conflicts
Best regards Uwe
git-quiltimport.sh | 51 ++++++++++++++++++++++++--------------------------- 1 files changed, 24 insertions(+), 27 deletions(-)
diff --git a/git-quiltimport.sh b/git-quiltimport.sh index 9a6ba2b..8b76682 100755 --- a/git-quiltimport.sh +++ b/git-quiltimport.sh @@ -51,6 +51,7 @@ if ! [ -d "$QUILT_PATCHES" ] ; then echo "The \"$QUILT_PATCHES\" directory does not exist." exit 1 fi +export QUILT_PATCHES # Temporary directories tmp_dir="$GIT_DIR"/rebase-apply @@ -62,31 +63,23 @@ tmp_info="$tmp_dir/info" # Find the intial commit commit=$(git rev-parse HEAD) +# TODO: assert wc == index == HEAD +# TODO: assert .pc doesn't exist + +# detach HEAD +git checkout -q "$commit" + mkdir $tmp_dir || exit 2 -while read patch_name level garbage <&3 +while quilt unapplied > /dev/null 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 - fi + # apply patch + quilt push || exit 3 + + patch_name="$(quilt top)"; + echo $patch_name - git mailinfo "$tmp_msg" "$tmp_patch" \ - <"$QUILT_PATCHES/$patch_name" >"$tmp_info" || exit 3 + (quilt header; echo "---") | git mailinfo "$tmp_msg" "$tmp_patch" \ + >"$tmp_info" || exit 3 test -s "$tmp_patch" || { echo "Patch is empty. Was it split wrong?" exit 1 @@ -129,10 +122,14 @@ do fi if [ -z "$dry_run" ] ; then - 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 + quilt files | git update-index --add --remove --stdin && + (echo "$SUBJECT"; echo; cat "$tmp_msg") | git commit -F - || + exit 4 fi -done 3<"$QUILT_PATCHES/series" +done + +if [ -n "$dry_run" ] ; then + quilt pop -a; +fi + rm -rf $tmp_dir || exit 5
-- 1.6.2