summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorLibravatar Shawn O. Pearce <spearce@spearce.org>2006-11-27 03:41:28 -0500
committerLibravatar Junio C Hamano <junkio@cox.net>2006-11-27 12:09:16 -0800
commitd3d717a4ad0c8d7329e79f7d0313baec57c6b585 (patch)
tree03b3419fea3d87dd91229d24b0dac1a7e8c08eec /contrib
parentTeach bash how to complete options for git-name-rev. (diff)
downloadtgif-d3d717a4ad0c8d7329e79f7d0313baec57c6b585.tar.xz
Add current branch in PS1 support to git-completion.bash.
Many users want to display the current branch name of the current git repository as part of their PS1 prompt, much as their PS1 prompt might also display the current working directory name. We don't force our own PS1 onto the user. Instead we let them craft their own PS1 string and offer them the function __git_ps1 which they can invoke to obtain either "" (when not in a git repository) or "(%s)" where %s is the name of the current branch, as read from HEAD, with the leading refs/heads/ removed. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/completion/git-completion.bash19
1 files changed, 19 insertions, 0 deletions
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 1dfb59207a..a740d05e28 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -18,12 +18,31 @@
# 2) Added the following line to your .bashrc:
# source ~/.git-completion.sh
#
+# 3) Consider changing your PS1 to also show the current branch:
+# PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
+#
+# The argument to __git_ps1 will be displayed only if you
+# are currently in a git repository. The %s token will be
+# the name of the current branch.
+#
__gitdir ()
{
echo "${__git_dir:-$(git rev-parse --git-dir 2>/dev/null)}"
}
+__git_ps1 ()
+{
+ local b="$(git symbolic-ref HEAD 2>/dev/null)"
+ if [ -n "$b" ]; then
+ if [ -n "$1" ]; then
+ printf "$1" "${b##refs/heads/}"
+ else
+ printf " (%s)" "${b##refs/heads/}"
+ fi
+ fi
+}
+
__git_refs ()
{
local cmd i is_hash=y dir="${1:-$(__gitdir)}"