On Fri, Jan 12, 2018 at 04:56:03PM +0700, Nguyễn Thái Ngọc Duy wrote: > v3 turns a single patch into a series. Changes from v2 > > - env var quoting is now done correctly (from shell syntax perspective) > - the program name is prepended in git_cmd mode > - cwd is now printed too (because I have too, see 4/4) > - we don't blindly print the env delta anymore but print the actual > differences compared to parent env > - which means we also print "unset XXX" statements in $GIT_TRACE Overall I like it, though I raised on corner case in 4/4. > The new output on git.git looks like this > > trace: run_command: cd 'sha1collisiondetection'; unset GIT_PREFIX; GIT_DIR='.git' git 'status' '--porcelain=2' > > a bit longer than I would like, but that's because of > sha1collisiondetection and it's not long enough for me to invent > $GIT_TRACE_EXEC. IMHO the unconditional single-quotes make this longer and uglier than it needs to be. I've often been tempted to have them kick in only when necessary. Here are some patches to do that (on top of yours). [5/4]: sq_quote_argv: drop maxlen parameter [6/4]: trace: avoid unnecessary quoting builtin/am.c | 2 +- builtin/rev-parse.c | 4 ++-- quote.c | 30 +++++++++++++++++++++++++++--- quote.h | 10 +++++++++- trace.c | 10 +++++----- 5 files changed, 44 insertions(+), 12 deletions(-) -Peff