|
I've run into a couple of problems while playing around with the new
"quilt delete" options I posted. "quilt delete" by itself is supposed to delete the top patch, invoking "pop" to remove it first, but there are a few problems in the way delete calls pop:
However, I got to thinking that it would be good to abstract away the magic used to invoke one quilt command from another to make sure it's done consistently and it's easy to change if necessary. The second patch ("quilt-quilt_command.patch") adds a new patch function "quilt_command" to do this, and updates the delete and edit commands to use it. One possible issue with this second patch is that I set QUILT_COMMAND="", which means that the command invoked will pick up no default arguments from QUILTRC. This seems desirable to me, as it means the command will get only the arguments the calling command passes. It would be easy enough to set QUILT_COMMAND so that the invoked command will pick up default arguments, though. Let me know what you think. -- Joe Green <[EMAIL PROTECTED]> MontaVista Software, Inc. |
Source: MontaVista Software, Inc. <[EMAIL PROTECTED]> Type: Defect Fix Disposition: submit to http://savannah.nongnu.org/projects/quilt There are a number of problems with the way "quilt pop" is invoked from "quilt delete": - Unlike the old rpatch function, "pop <patch>" doesn't mean to remove that patch, but only up to that patch. "pop" alone removes the top patch, which is what's wanted. - Invoking "quilt pop" as "@QUILT@/pop" breaks gen_tempfile, which expects $0 to be something like "quilt pop", and REALLY doesn't like slashes. Using the call formulation in bin/quilt.in solves this. - QUILT_COMMAND=delete is passed on to pop, which means pop picks up QUILT_DELETE_ARGS, which may not work. Setting QUILT_COMMAND="" for the call to pop solves this. Index: quilt-0.42/quilt/delete.in =================================================================== --- quilt-0.42.orig/quilt/delete.in +++ quilt-0.42/quilt/delete.in @@ -101,7 +101,7 @@ fi if is_applied $patch then if [ "$patch" != "$(top_patch)" ] || \ - ! @QUILT@/pop -fq "$patch" + ! QUILT_COMMAND= @BASH@ $BASH_OPTS -c ". @QUILT@/pop" "quilt pop" -fq then printf $"Patch %s is currently applied\n" \ "$(print_patch $patch)" >&2
Source: MontaVista Software, Inc. <[EMAIL PROTECTED]> Type: Enhancement Disposition: submit to http://savannah.nongnu.org/projects/quilt Use a standard function "quilt_command" to invoke one quilt command from another. Index: quilt-0.42/quilt/delete.in =================================================================== --- quilt-0.42.orig/quilt/delete.in +++ quilt-0.42/quilt/delete.in @@ -100,8 +100,7 @@ else fi if is_applied $patch then - if [ "$patch" != "$(top_patch)" ] || \ - ! QUILT_COMMAND= @BASH@ $BASH_OPTS -c ". @QUILT@/pop" "quilt pop" -fq + if [ "$patch" != "$(top_patch)" ] || ! quilt_command pop -fq then printf $"Patch %s is currently applied\n" \ "$(print_patch $patch)" >&2 Index: quilt-0.42/quilt/edit.in =================================================================== --- quilt-0.42.orig/quilt/edit.in +++ quilt-0.42/quilt/edit.in @@ -6,6 +6,17 @@ # # See the COPYING and AUTHORS files for more details. +# Read in library functions +if [ "$(type -t patch_file_name)" != function ] +then + if ! [ -r @SCRIPTS@/patchfns ] + then + echo "Cannot read library @SCRIPTS@/patchfns" >&2 + exit 1 + fi + . @SCRIPTS@/patchfns +fi + : ${EDITOR:=vi} usage() @@ -48,14 +59,14 @@ then usage fi -bash -c ". @QUILT@/add" "quilt add" "$@" +quilt_command add "$@" $EDITOR "$@" status=$? for file in "$@" do if ! [ -e "$file" ] then - bash -c ". @QUILT@/remove" "quilt remove" "$file" + quilt_command remove "$file" status=1 fi done Index: quilt-0.42/scripts/patchfns.in =================================================================== --- quilt-0.42.orig/scripts/patchfns.in +++ quilt-0.42/scripts/patchfns.in @@ -753,6 +753,14 @@ setup_colors() eval $C } +quilt_command () +{ + local command=$1 + shift + + QUILT_COMMAND="" @BASH@ $BASH_OPTS -c ". @QUILT@/$command" "quilt $command" "$@" +} + # # If the working directory does not contain a $QUILT_PATCHES directory, # quilt searches for its base directory up the directory tree. If no
_______________________________________________ Quilt-dev mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/quilt-dev
