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@xxxxxxxxxxxxxx> Cc: Dan Nicholson <dbn.lists@xxxxxxxxx> Cc: Eric W. Biederman <ebiederm@xxxxxxxxxxxx> Cc: Gerrit Pape <pape@xxxxxxxxxxx> Cc: Johannes Schindelin <Johannes.Schindelin@xxxxxx> Cc: Junio C Hamano <gitster@xxxxxxxxx> Cc: Pierre Habouzit <madcoder@xxxxxxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html