blob: c1baa2cdd25151128e91848fe8c3d067d352dcda [file] [log] [blame]
# 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
}