# [PATCH 1/2] bash: add git-branch options

3 messages from 2008-03-04 to 2008-03-05. Participants: SZEDER Gábor, Shawn O. Pearce.
Thread: https://gitlist.dev/t/12501

## SZEDER Gábor, 2008-03-04 18:00

Subject: [PATCH 1/2] bash: add git-branch options
Message-ID: <d55a578b4b3f3b7d679b7f8b69497955c7a82a50.1204652001.git.szeder@ira.uka.de>
URL: https://gitlist.dev/e/d55a578b4b3f3b7d679b7f8b69497955c7a82a50.1204652001.git.szeder%40ira.uka.de

```
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
---
 contrib/completion/git-completion.bash |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 8f70e1e..8d6733a 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -506,7 +506,16 @@ _git_bisect ()
 
 _git_branch ()
 {
-	__gitcomp "$(__git_refs)"
+	case "${COMP_WORDS[COMP_CWORD]}" in
+	--*=*)	COMPREPLY=() ;;
+	--*)
+		__gitcomp "
+			--color --no-color --verbose --abbrev= --no-abbrev
+			--track --no-track
+			"
+		;;
+	*)	__gitcomp "$(__git_refs)" ;;
+	esac
 }
 
 _git_bundle ()
-- 
1.5.4.3


```

## SZEDER Gábor, 2008-03-04 18:00

Subject: [PATCH 2/2] bash: git-branch -d and -m lists only local branches
Message-ID: <4fffe1c7adc092af695610a87f97c8684ae0eea6.1204652001.git.szeder@ira.uka.de>
URL: https://gitlist.dev/e/4fffe1c7adc092af695610a87f97c8684ae0eea6.1204652001.git.szeder%40ira.uka.de
In-Reply-To: <d55a578b4b3f3b7d679b7f8b69497955c7a82a50.1204652001.git.szeder@ira.uka.de>

```
But still all branches are listed, if -r is present

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
---
 contrib/completion/git-completion.bash |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 8d6733a..49e6df0 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -506,6 +506,17 @@ _git_bisect ()
 
 _git_branch ()
 {
+	local i c=1 only_local_ref="n" has_r="n"
+
+	while [ $c -lt $COMP_CWORD ]; do
+		i="${COMP_WORDS[c]}"
+		case "$i" in
+		-d|-m)	only_local_ref="y" ;;
+		-r)	has_r="y" ;;
+		esac
+		c=$((++c))
+	done
+
 	case "${COMP_WORDS[COMP_CWORD]}" in
 	--*=*)	COMPREPLY=() ;;
 	--*)
@@ -514,7 +525,13 @@ _git_branch ()
 			--track --no-track
 			"
 		;;
-	*)	__gitcomp "$(__git_refs)" ;;
+	*)
+		if [ $only_local_ref = "y" -a $has_r = "n" ]; then
+			__gitcomp "$(__git_heads)"
+		else
+			__gitcomp "$(__git_refs)"
+		fi
+		;;
 	esac
 }
 
-- 
1.5.4.3


```

## Shawn O. Pearce, 2008-03-05 05:51

Subject: Re: [PATCH 2/2] bash: git-branch -d and -m lists only local branches
Message-ID: <20080305055138.GC8410@spearce.org>
URL: https://gitlist.dev/e/20080305055138.GC8410%40spearce.org
In-Reply-To: <4fffe1c7adc092af695610a87f97c8684ae0eea6.1204652001.git.szeder@ira.uka.de>

```
SZEDER Gbor <szeder@ira.uka.de> wrote:
> But still all branches are listed, if -r is present
> 
> Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>

Nice.

Both patches 1 and 2,
Acked-by: Shawn O. Pearce <spearce@spearce.org>

> ---
>  contrib/completion/git-completion.bash |   19 ++++++++++++++++++-
>  1 files changed, 18 insertions(+), 1 deletions(-)

-- 
Shawn.

```
