summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Completion/Unix/Command/_git15
1 files changed, 13 insertions, 2 deletions
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 37ac3e0fd..d3002075f 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -5369,8 +5369,19 @@ __git_ref_specs_pushy () {
(( $+functions[__git_ref_specs_fetchy] )) ||
__git_ref_specs_fetchy () {
- # TODO: this is wrong
- __git_ref_specs_pushy "$@"
+ # TODO: This needs to deal with a lot more types of things.
+ if compset -P '*:'; then
+ __git_heads_local
+ else
+ compset -P '+'
+ if compset -S ':*'; then
+ # TODO: have the caller supply the correct remote name, restrict to refs/remotes/${that_remote}/* only
+ __git_remote_branch_names_noprefix
+ else
+ # TODO: have the caller supply the correct remote name, restrict to refs/remotes/${that_remote}/* only
+ __git_remote_branch_names_noprefix -qS :
+ fi
+ fi
}
(( $+functions[__git_ref_specs] )) ||