One side effect of commit ca85fbd82022 ("Move the code which adds the
default parameters from quiltrc") is that we now source the quiltrc
configuration file twice. While parsing this file shouldn't take
overly long, this still feels conceptually wrong.

This can be avoided by reusing the same shell for the quilt command
as we used for the quilt "launcher" itself, instead of starting a
new instance of bash for it.

As a nice side bonus, this makes quilt 1-2% faster (measured on
the test suite).

Signed-off-by: Jean Delvare <[email protected]>
---
Andreas, do you expect any problem with this change? Did you have a
reason for running commands in their own shell in the first place?

 bin/quilt.in              |    5 ++++-
 quilt/scripts/patchfns.in |    9 +++------
 2 files changed, 7 insertions(+), 7 deletions(-)

--- quilt.orig/bin/quilt.in     2021-06-18 19:10:22.022985352 +0200
+++ quilt/bin/quilt.in  2021-06-21 14:11:44.546661397 +0200
@@ -163,7 +163,10 @@ if [ -n "$QUILT_COMMAND" ]; then
        unset args
 fi
 
-bash $BASH_OPTS -c ". $QUILT_DIR/$command" "quilt ${command##*/}" "$@"
+if [ -n "$BASH_OPTS" ]; then
+       set $BASH_OPTS
+fi
+. "$QUILT_DIR/$command"
 ### Local Variables:
 ### mode: shell-script
 ### End:
--- quilt.orig/quilt/scripts/patchfns.in        2021-06-18 19:10:22.022985352 
+0200
+++ quilt/quilt/scripts/patchfns.in     2021-06-21 15:19:49.591074152 +0200
@@ -28,11 +28,6 @@ fi
 unset CDPATH
 shopt -s dotglob
 
-if [ -e "$QUILTRC" ]
-then
-       source "$QUILTRC"
-fi
-
 . $QUILT_DIR/scripts/utilfns
 
 # ========================================================
@@ -1079,8 +1074,10 @@ quilt_command()
        # the command line
        export QUILT_NO_DIFF_INDEX
        export QUILT_NO_DIFF_TIMESTAMPS
+       # Propagate tracing options in case we are called recursively
+       export BASH_OPTS
 
-       QUILT_COMMAND="" bash $BASH_OPTS -c "${SUBDIR:+cd $SUBDIR;} . 
$QUILT_DIR/$command" "quilt $command" "$@"
+       QUILT_COMMAND="" bash $BASH_OPTS -c "${SUBDIR:+cd $SUBDIR;} [ ! -e 
\"$QUILTRC\" ] || source \"$QUILTRC\"; . $QUILT_DIR/$command" "quilt $command" 
"$@"
 }
 
 check_external_tool()


-- 
Jean Delvare
SUSE L3 Support

_______________________________________________
Quilt-dev mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/quilt-dev

Reply via email to