In test mode, git completion should propose commands only if they
belong to the list of authorized commands.

Signed-off-by: Jean-Noel Avila <jn.av...@free.fr>
---

Better show some code than try to explain. Here is what I mean by
"filter the output git help -a". 

 contrib/completion/git-completion.bash | 16 +++++++++++++++-
 t/t9902-completion.sh                  |  4 ++--
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/contrib/completion/git-completion.bash 
b/contrib/completion/git-completion.bash
index 14dd5e7..6490553 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -531,6 +531,20 @@ __git_complete_strategy ()
        return 1
 }
 
+if test -z "$AUTHORIZED_CMD_LIST"; then
+       __git_cmdlist ()
+       { 
+               echo $1;
+       }
+else
+       __git_cmdlist ()
+       { 
+               if [[ " $AUTHORIZED_CMD_LIST " =~ " $1 " ]] ; then
+                               echo $1
+               fi
+       }
+fi
+
 __git_list_all_commands ()
 {
        local i IFS=" "$'\n'
@@ -538,7 +552,7 @@ __git_list_all_commands ()
        do
                case $i in
                *--*)             : helper pattern;;
-               *) echo $i;;
+               *) __git_cmdlist $i;;
                esac
        done
 }
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index 3cd53f8..5e7d81e 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -12,8 +12,8 @@ complete ()
        # do nothing
        return 0
 }
-
-. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash"
+AUTHORIZED_CMD_LIST=" checkout show add filter-branch ls-files send-email 
describe"
+. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash" 
 
 # We don't need this function to actually join words or do anything special.
 # Also, it's cleaner to avoid touching bash's internal completion variables.
-- 
1.8.1.1.271.g02f55e6

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to