| #!bash | 
 | # | 
 | # git-flow-completion | 
 | # =================== | 
 | #  | 
 | # Bash completion support for [git-flow](http://github.com/nvie/gitflow) | 
 | #  | 
 | # The contained completion routines provide support for completing: | 
 | #  | 
 | #  * git-flow init and version | 
 | #  * feature, hotfix and release branches | 
 | #  * remote feature branch names (for `git-flow feature track`) | 
 | #  | 
 | #  | 
 | # Installation | 
 | # ------------ | 
 | #  | 
 | # To achieve git-flow completion nirvana: | 
 | #  | 
 | #  0. Install git-completion. | 
 | #  | 
 | #  1. Install this file. Either: | 
 | #  | 
 | #     a. Place it in a `bash-completion.d` folder: | 
 | #  | 
 | #        * /etc/bash-completion.d | 
 | #        * /usr/local/etc/bash-completion.d | 
 | #        * ~/bash-completion.d | 
 | #  | 
 | #     b. Or, copy it somewhere (e.g. ~/.git-flow-completion.sh) and put the following line in | 
 | #        your .bashrc: | 
 | #  | 
 | #            source ~/.git-flow-completion.sh | 
 | #  | 
 | #  2. If you are using Git < 1.7.1: Edit git-completion.sh and add the following line to the giant | 
 | #     $command case in _git: | 
 | #  | 
 | #         flow)        _git_flow ;; | 
 | #  | 
 | #  | 
 | # The Fine Print | 
 | # -------------- | 
 | #  | 
 | # Copyright (c) 2010 [Justin Hileman](http://justinhileman.com) | 
 | #  | 
 | # Distributed under the [MIT License](http://creativecommons.org/licenses/MIT/) | 
 |  | 
 | _git_flow () | 
 | { | 
 | 	local subcommands="init feature release hotfix" | 
 | 	local subcommand="$(__git_find_subcommand "$subcommands")" | 
 | 	if [ -z "$subcommand" ]; then | 
 | 		__gitcomp "$subcommands" | 
 | 		return | 
 | 	fi | 
 |  | 
 | 	case "$subcommand" in | 
 | 	feature) | 
 | 		__git_flow_feature | 
 | 		return | 
 | 		;; | 
 | 	release) | 
 | 		__git_flow_release | 
 | 		return | 
 | 		;; | 
 | 	hotfix) | 
 | 		__git_flow_hotfix | 
 | 		return | 
 | 		;; | 
 | 	*) | 
 | 		COMPREPLY=() | 
 | 		;; | 
 | 	esac | 
 | } | 
 |  | 
 | __git_flow_feature () | 
 | { | 
 | 	local subcommands="list start finish publish track diff rebase checkout pull" | 
 | 	local subcommand="$(__git_find_subcommand "$subcommands")" | 
 | 	if [ -z "$subcommand" ]; then | 
 | 		__gitcomp "$subcommands" | 
 | 		return | 
 | 	fi | 
 |  | 
 | 	case "$subcommand" in | 
 | 	pull) | 
 | 		__gitcomp "$(__git_remotes)" | 
 | 		return | 
 | 		;; | 
 | 	checkout|finish|diff|rebase) | 
 | 		__gitcomp "$(__git_flow_list_features)" | 
 | 		return | 
 | 		;; | 
 | 	publish) | 
 | 		__gitcomp "$(comm -23 <(__git_flow_list_features) <(__git_flow_list_remote_features))" | 
 | 		return | 
 | 		;; | 
 | 	track) | 
 | 		__gitcomp "$(__git_flow_list_remote_features)" | 
 | 		return | 
 | 		;; | 
 | 	*) | 
 | 		COMPREPLY=() | 
 | 		;; | 
 | 	esac | 
 | } | 
 |  | 
 | __git_flow_list_features () | 
 | { | 
 | 	git flow feature list 2> /dev/null | tr -d ' |*' | 
 | } | 
 |  | 
 | __git_flow_list_remote_features () | 
 | { | 
 | 	git branch -r 2> /dev/null | grep "origin/$(__git_flow_feature_prefix)" | awk '{ sub(/^origin\/$(__git_flow_feature_prefix)/, "", $1); print }' | 
 | } | 
 |  | 
 | __git_flow_feature_prefix () | 
 | { | 
 | 	git config gitflow.prefix.feature 2> /dev/null || echo "feature/" | 
 | } | 
 |  | 
 | __git_flow_release () | 
 | { | 
 | 	local subcommands="list start finish" | 
 | 	local subcommand="$(__git_find_subcommand "$subcommands")" | 
 | 	if [ -z "$subcommand" ]; then | 
 | 		__gitcomp "$subcommands" | 
 | 		return | 
 | 	fi | 
 | 	 | 
 | 	case "$subcommand" in | 
 | 	finish) | 
 | 		__gitcomp "$(__git_flow_list_releases)" | 
 | 		return | 
 | 		;; | 
 | 	*) | 
 | 		COMPREPLY=() | 
 | 		;; | 
 | 	esac | 
 |  | 
 | } | 
 |  | 
 | __git_flow_list_releases () | 
 | { | 
 | 	git flow release list 2> /dev/null | 
 | } | 
 |  | 
 | __git_flow_hotfix () | 
 | { | 
 | 	local subcommands="list start finish" | 
 | 	local subcommand="$(__git_find_subcommand "$subcommands")" | 
 | 	if [ -z "$subcommand" ]; then | 
 | 		__gitcomp "$subcommands" | 
 | 		return | 
 | 	fi | 
 |  | 
 | 	case "$subcommand" in | 
 | 	finish) | 
 | 		__gitcomp "$(__git_flow_list_hotfixes)" | 
 | 		return | 
 | 		;; | 
 | 	*) | 
 | 		COMPREPLY=() | 
 | 		;; | 
 | 	esac | 
 | } | 
 |  | 
 | __git_flow_list_hotfixes () | 
 | { | 
 | 	git flow hotfix list 2> /dev/null | 
 | } | 
 |  | 
 | # temporarily wrap __git_find_on_cmdline() for backwards compatibility | 
 | if [ -z "`type -t __git_find_subcommand`" ]; then | 
 | 	alias __git_find_subcommand=__git_find_on_cmdline | 
 | fi |