Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Ohmyzsh
Commits
7377ba3f
Commit
7377ba3f
authored
Apr 29, 2011
by
Kevin Daudt
Browse files
Added git-flow plugin
parent
c8ac3356
Changes
2
Show whitespace changes
Inline
Side-by-side
.gitignore
View file @
7377ba3f
...
@@ -3,3 +3,4 @@ log/.zsh_history
...
@@ -3,3 +3,4 @@ log/.zsh_history
projects.zsh
projects.zsh
custom/*
custom/*
!custom/example.zsh
!custom/example.zsh
cache
plugins/git-flow/git-flow.plugin.zsh
0 → 100644
View file @
7377ba3f
#!zsh
#
# Installation
# ------------
#
# To achieve git-flow completion nirvana:
#
# 0. Update your zsh's git-completion module to the newest verion.
# From here. http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob_plain;f=Completion/Unix/Command/_git;hb=HEAD
#
# 1. Install this file. Either:
#
# a. Place it in your .zshrc:
#
# b. Or, copy it somewhere (e.g. ~/.git-flow-completion.zsh) and put the following line in
# your .zshrc:
#
# source ~/.git-flow-completion.zsh
#
# c. Or, use this file as a oh-my-zsh plugin.
#
_git-flow
()
{
local
curcontext
=
"
$curcontext
"
state line
typeset
-A
opt_args
_arguments
-C
\
':command:->command'
\
'*::options:->options'
case
$state
in
(
command
)
local
-a
subcommands
subcommands
=(
'init:Initialize a new git repo with support for the branching model.'
'feature:Manage your feature branches.'
'release:Manage your release branches.'
'hotfix:Manage your hotfix branches.'
'support:Manage your support branches.'
'version:Shows version information.'
)
_describe
-t
commands
'git flow'
subcommands
;;
(
options
)
case
$line
[
1]
in
(
init
)
_arguments
\
-f
'[Force setting of gitflow branches, even if already configured]'
;;
(
version
)
;;
(
hotfix
)
__git-flow-hotfix
;;
(
release
)
__git-flow-release
;;
(
feature
)
__git-flow-feature
;;
esac
;;
esac
}
__git-flow-release
()
{
local
curcontext
=
"
$curcontext
"
state line
typeset
-A
opt_args
_arguments
-C
\
':command:->command'
\
'*::options:->options'
case
$state
in
(
command
)
local
-a
subcommands
subcommands
=(
'start:Start a new release branch.'
'finish:Finish a release branch.'
'list:List all your release branches. (Alias to `git flow release`)'
)
_describe
-t
commands
'git flow release'
subcommands
_arguments
\
-v
'[Verbose (more) output]'
;;
(
options
)
case
$line
[
1]
in
(
start
)
_arguments
\
-F
'[Fetch from origin before performing finish]'
\
':version:__git_flow_version_list'
;;
(
finish
)
_arguments
\
-F
'[Fetch from origin before performing finish]'
\
-s
'[Sign the release tag cryptographically]'
\
-u
'[Use the given GPG-key for the digital signature (implies -s)]'
\
-m
'[Use the given tag message]'
\
-p
'[Push to $ORIGIN after performing finish]'
\
':version:__git_flow_version_list'
;;
*
)
_arguments
\
-v
'[Verbose (more) output]'
;;
esac
;;
esac
}
__git-flow-hotfix
()
{
local
curcontext
=
"
$curcontext
"
state line
typeset
-A
opt_args
_arguments
-C
\
':command:->command'
\
'*::options:->options'
case
$state
in
(
command
)
local
-a
subcommands
subcommands
=(
'start:Start a new hotfix branch.'
'finish:Finish a hotfix branch.'
'list:List all your hotfix branches. (Alias to `git flow hotfix`)'
)
_describe
-t
commands
'git flow hotfix'
subcommands
_arguments
\
-v
'[Verbose (more) output]'
;;
(
options
)
case
$line
[
1]
in
(
start
)
_arguments
\
-F
'[Fetch from origin before performing finish]'
\
':hotfix:__git_flow_version_list'
\
':branch-name:__git_branch_names'
;;
(
finish
)
_arguments
\
-F
'[Fetch from origin before performing finish]'
\
-s
'[Sign the release tag cryptographically]'
\
-u
'[Use the given GPG-key for the digital signature (implies -s)]'
\
-m
'[Use the given tag message]'
\
-p
'[Push to $ORIGIN after performing finish]'
\
':hotfix:__git_flow_hotfix_list'
;;
*
)
_arguments
\
-v
'[Verbose (more) output]'
;;
esac
;;
esac
}
__git-flow-feature
()
{
local
curcontext
=
"
$curcontext
"
state line
typeset
-A
opt_args
_arguments
-C
\
':command:->command'
\
'*::options:->options'
case
$state
in
(
command
)
local
-a
subcommands
subcommands
=(
'start:Start a new feature branch.'
'finish:Finish a feature branch.'
'list:List all your feature branches. (Alias to `git flow feature`)'
'publish: public'
'track: track'
'diff: diff'
'rebase: rebase'
'checkout: checkout'
'pull: pull'
)
_describe
-t
commands
'git flow feature'
subcommands
_arguments
\
-v
'[Verbose (more) output]'
;;
(
options
)
case
$line
[
1]
in
(
start
)
_arguments
\
-F
'[Fetch from origin before performing finish]'
\
':feature:__git_flow_feature_list'
\
':branch-name:__git_branch_names'
;;
(
finish
)
_arguments
\
-F
'[Fetch from origin before performing finish]'
\
-r
'[Rebase instead of merge]'
\
':feature:__git_flow_feature_list'
;;
(
publish
)
_arguments
\
':feature:__git_flow_feature_list'
\
;;
(
track
)
_arguments
\
':feature:__git_flow_feature_list'
\
;;
(
diff
)
_arguments
\
':branch:__git_branch_names'
\
;;
(
rebase
)
_arguments
\
-i
'[Do an interactive rebase]'
\
':branch:__git_branch_names'
;;
(
checkout
)
_arguments
\
':branch:__git_flow_feature_list'
\
;;
(
pull
)
_arguments
\
':remote:__git_remotes'
\
':branch:__git_branch_names'
;;
*
)
_arguments
\
-v
'[Verbose (more) output]'
;;
esac
;;
esac
}
__git_flow_version_list
()
{
local
expl
declare
-a
versions
versions
=(
${${
(f)
"
$(
_call_program versions git flow release list 2> /dev/null |
tr
-d
' |*'
)
"
}}
)
__git_command_successful
||
return
_wanted versions expl
'version'
compadd
$versions
}
__git_flow_feature_list
()
{
local
expl
declare
-a
features
features
=(
${${
(f)
"
$(
_call_program features git flow feature list 2> /dev/null |
tr
-d
' |*'
)
"
}}
)
__git_command_successful
||
return
_wanted features expl
'feature'
compadd
$features
}
__git_remotes
()
{
local
expl gitdir remotes
gitdir
=
$(
_call_program gitdir git rev-parse
--git-dir
2>/dev/null
)
__git_command_successful
||
return
remotes
=(
${${
(f)
"
$(
_call_program remotes git config
--get-regexp
'"^remote\..*\.url$"'
)
"
}
//#(#b)remote.(*).url */
$match
[1]
}
)
__git_command_successful
||
return
# TODO: Should combine the two instead of either or.
if
((
$#remotes
>
0
))
;
then
_wanted remotes expl remote compadd
$*
-
$remotes
else
_wanted remotes expl remote _files
$*
-
-W
"(
$gitdir
/remotes)"
-g
"
$gitdir
/remotes/*"
fi
}
__git_flow_hotfix_list
()
{
local
expl
declare
-a
hotfixes
hotfixes
=(
${${
(f)
"
$(
_call_program hotfixes git flow hotfix list 2> /dev/null |
tr
-d
' |*'
)
"
}}
)
__git_command_successful
||
return
_wanted hotfixes expl
'hotfix'
compadd
$hotfixes
}
__git_branch_names
()
{
local
expl
declare
-a
branch_names
branch_names
=(
${${
(f)
"
$(
_call_program branchrefs git
for
-each-ref
--format
=
'"%(refname)"'
refs/heads 2>/dev/null
)
"
}
#refs/heads/
}
)
__git_command_successful
||
return
_wanted branch-names expl branch-name compadd
$*
-
$branch_names
}
__git_command_successful
()
{
if
((
${#
pipestatus
:#0
}
>
0
))
;
then
_message
'not a git repository'
return
1
fi
return
0
}
zstyle
':completion:*:*:git:*'
user-commands flow:
'description for foo'
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment