Re: [PATCH v3] Make running git under other debugger-like programs easy

2018-04-25 Thread Junio C Hamano
Johannes Schindelin  writes:

>> ...
>> 
>> There is also a handy shortcut of GIT_DEBUGGER=1 meaning the same as
>> GIT_DEBUGGER="gdb --args"
>> 
>> Original-patch-by: Johannes Schindelin 
>> Signed-off-by: Elijah Newren 
>
> Looks good to me!
> Dscho

Thanks, both.


Re: [PATCH v3] Make running git under other debugger-like programs easy

2018-04-25 Thread Johannes Schindelin
Hi Elijah,

On Tue, 24 Apr 2018, Elijah Newren wrote:

> This allows us to run git, when using the script from bin-wrappers, under
> other programs.  A few examples for usage within testsuite scripts:
> 
>debug git checkout master
>debug --debugger=nemiver git $ARGS
>debug -d "valgrind --tool-memcheck --track-origins=yes" git $ARGS
> 
> Or, if someone has bin-wrappers/ in their $PATH and is executing git
> outside the testsuite:
> 
>GIT_DEBUGGER="gdb --args" git $ARGS
>GIT_DEBUGGER=nemiver git $ARGS
>GIT_DEBUGGER="valgrind --tool=memcheck --track-origins=yes" git $ARGS
> 
> There is also a handy shortcut of GIT_DEBUGGER=1 meaning the same as
> GIT_DEBUGGER="gdb --args"
> 
> Original-patch-by: Johannes Schindelin 
> Signed-off-by: Elijah Newren 

Looks good to me!
Dscho


[PATCH v3] Make running git under other debugger-like programs easy

2018-04-24 Thread Elijah Newren
This allows us to run git, when using the script from bin-wrappers, under
other programs.  A few examples for usage within testsuite scripts:

   debug git checkout master
   debug --debugger=nemiver git $ARGS
   debug -d "valgrind --tool-memcheck --track-origins=yes" git $ARGS

Or, if someone has bin-wrappers/ in their $PATH and is executing git
outside the testsuite:

   GIT_DEBUGGER="gdb --args" git $ARGS
   GIT_DEBUGGER=nemiver git $ARGS
   GIT_DEBUGGER="valgrind --tool=memcheck --track-origins=yes" git $ARGS

There is also a handy shortcut of GIT_DEBUGGER=1 meaning the same as
GIT_DEBUGGER="gdb --args"

Original-patch-by: Johannes Schindelin 
Signed-off-by: Elijah Newren 
---

Finally getting back to this now that I have tied up all loose ends
with the directory rename detection series (or at least I hope they
are all tied up).

There is only one change since v2:
  s/DBG_FLAGS/GIT_DEBUGGER/, as suggested by Dscho


 t/test-lib-functions.sh | 24 
 wrap-for-bin.sh | 19 +--
 2 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index b895366fee..a407b09b48 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -145,12 +145,28 @@ test_pause () {
"$SHELL_PATH" <&6 >&5 2>&7
 }
 
-# Wrap git in gdb. Adding this to a command can make it easier to
-# understand what is going on in a failing test.
+# Wrap git with a debugger. Adding this to a command can make it easier
+# to understand what is going on in a failing test.
 #
-# Example: "debug git checkout master".
+# Examples:
+# debug git checkout master
+# debug --debugger=nemiver git $ARGS
+# debug -d "valgrind --tool=memcheck --track-origins=yes" git $ARGS
 debug () {
-GIT_TEST_GDB=1 "$@" <&6 >&5 2>&7
+   case "$1" in
+   -d)
+   GIT_DEBUGGER="$2" &&
+   shift 2
+   ;;
+   --debugger=*)
+   GIT_DEBUGGER="${1#*=}" &&
+   shift 1
+   ;;
+   *)
+   GIT_DEBUGGER=1
+   ;;
+   esac &&
+   GIT_DEBUGGER="${GIT_DEBUGGER}" "$@" <&6 >&5 2>&7
 }
 
 # Call test_commit with the arguments
diff --git a/wrap-for-bin.sh b/wrap-for-bin.sh
index 5842408817..95851b85b6 100644
--- a/wrap-for-bin.sh
+++ b/wrap-for-bin.sh
@@ -20,10 +20,17 @@ PATH='@@BUILD_DIR@@/bin-wrappers:'"$PATH"
 
 export GIT_EXEC_PATH GITPERLLIB PATH GIT_TEXTDOMAINDIR
 
-if test -n "$GIT_TEST_GDB"
-then
-   unset GIT_TEST_GDB
-   exec gdb --args "${GIT_EXEC_PATH}/@@PROG@@" "$@"
-else
+case "$GIT_DEBUGGER" in
+'')
exec "${GIT_EXEC_PATH}/@@PROG@@" "$@"
-fi
+   ;;
+1)
+   unset GIT_DEBUGGER
+   exec gdb --args "${GIT_EXEC_PATH}/@@PROG@@" "$@"
+   ;;
+*)
+   GIT_DEBUGGER_ARGS="$GIT_DEBUGGER"
+   unset GIT_DEBUGGER
+   exec ${GIT_DEBUGGER_ARGS} "${GIT_EXEC_PATH}/@@PROG@@" "$@"
+   ;;
+esac
-- 
2.17.0.2.g31fed8301b