From 272e6ab3cb0414281ce4e9f20a0256e8f6949bc0 Mon Sep 17 00:00:00 2001 From: Dominic Battre Date: Fri, 15 Sep 2023 06:27:53 +0000 Subject: [PATCH] Bash autocompletion for 'git new-branch' and 'git reparent-branch' This CL introduces bash autocompletion for some specific git commands contributed by depot_tools (git new-branch and git reparent-branch). Change-Id: I8208ef7d7d974765c468d01fa94c4ed334b01bb3 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4859465 Reviewed-by: Josip Sokcevic Commit-Queue: Dominic Battre --- git_completion.sh | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 git_completion.sh diff --git a/git_completion.sh b/git_completion.sh new file mode 100755 index 0000000000..c1baa2cdd2 --- /dev/null +++ b/git_completion.sh @@ -0,0 +1,65 @@ +# Copyright (c) 2023 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +# This adds completion to bash shells for git commands. It is +# meant for developers and not needed for inclusion by any automated +# processes that will, of course, specify the full command, not rely +# on or benefit from tab-completion. +# +# Requires: +# Installed git bash completion. +# +# Usage: +# Add this to your .bashrc: +# +# # The next lines enable bash completion for git commands from +# # depot_tools. +# if [ -f "$HOME/bin/depot_tools/git_completion.sh" ]; then +# . "$HOME/bin/depot_tools/git_completion.sh" +# fi + + +_git_new_branch () +{ + case "$cur" in + -*) + __gitcomp_nl_append "--upstream_current" + __gitcomp_nl_append "--upstream" + __gitcomp_nl_append "--lkgr" + __gitcomp_nl_append "--inject_current" + ;; + *) + case "$prev,$cur" in + --upstream,o*) + # By default (only local branch heads are shown after --upstream, see + # the case below. If, however, the user types "--upstream o", also + # remote branches (origin/*) are shown. + __git_complete_refs --cur="$cur" + ;; + --upstream,*) + __gitcomp_nl "$(__git_heads '' $cur)" + ;; + esac + esac +} + +_git_reparent_branch () +{ + case "$cur" in + -*) + __gitcomp_nl_append "--lkgr" + __gitcomp_nl_append "--root" + ;; + o*) + # By default (only local branch heads are shown after --upstream, see the + # case below. If, however, the user types "--upstream o", also remote + # branches (origin/*) are shown. + __git_complete_refs --cur="$cur" + ;; + *) + __gitcomp_nl "$(__git_heads '' $cur)" + ;; + esac +}