zsh-workers
 help / color / mirror / code / Atom feed
From: "Øystein Walle" <oystwa@gmail.com>
To: zsh-workers@zsh.org
Cc: m0viefreak <m0viefreak.cm@googlemail.com>
Subject: [PATCH v2 09/14] _git: support completing remote branches without <remote>/ prefix
Date: Sun, 22 Sep 2013 12:48:23 +0200	[thread overview]
Message-ID: <026c333dd802bc8ed890acfdf008d5de8c97eb23.1379846744.git.oystwa@gmail.com> (raw)
In-Reply-To: <cover.1379846744.git.oystwa@gmail.com>
In-Reply-To: <cover.1379846744.git.oystwa@gmail.com>

From: m0viefreak <m0viefreak.cm@googlemail.com>

this is used in git 1.8's
git checkout <branch>
as a shorthand for
git checkout -b <branch> --track <remote>/<branch>
in case <branch> exists on exactly one remote and is not a local branch
---
 Completion/Unix/Command/_git | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 0d0cb02..9d07453 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -440,22 +440,27 @@ _git-checkout () {
       if (( CURRENT == 1 )) && [[ -z $opt_args[(I)--] ]]; then
         # TODO: Allow A...B
         local branch_arg='branches::__git_revisions' \
+              remote_branch_noprefix_arg='remote branches::__git_remote_branch_names_noprefix' \
               tree_ish_arg='tree-ishs::__git_tree_ishs' \
               file_arg='modified-files::__git_modified_files'
 
         if [[ -n ${opt_args[(I)-b|-B|--orphan]} ]]; then
+          remote_branch_noprefix_arg=
           tree_ish_arg=
           file_arg=
         elif [[ -n $opt_args[(I)--track] ]]; then
           branch_arg='remote-branches::__git_remote_branch_names'
+          remote_branch_noprefix_arg=
           tree_ish_arg=
           file_arg=
         elif [[ -n ${opt_args[(I)--ours|--theirs|-m|--conflict|--patch]} ]]; then
           branch_arg=
+          remote_branch_noprefix_arg=
         fi
 
         _alternative \
           $branch_arg \
+          $remote_branch_noprefix_arg \
           $tree_ish_arg \
           $file_arg && ret=0
       elif [[ -n ${opt_args[(I)-b|-B|-t|--track|--orphan]} ]]; then
@@ -5371,6 +5376,17 @@ __git_remote_branch_names () {
   _wanted remote-branch-names expl 'remote branch name' compadd $* - $branch_names
 }
 
+(( $+functions[__git_remote_branch_names_noprefix] )) ||
+__git_remote_branch_names_noprefix () {
+  local expl
+  declare -a heads
+
+  branch_names=(${${${(f)"$(_call_program remote-branch-refs-noprefix git for-each-ref --format='"%(refname)"' refs/remotes 2>/dev/null)"}##*/}:#HEAD})
+  __git_command_successful $pipestatus || return 1
+
+  _wanted remote-branch-names-noprefix expl 'remote branch name' compadd $* - $branch_names
+}
+
 (( $+functions[__git_commits] )) ||
 __git_commits () {
   # TODO: deal with things that __git_heads and __git_tags has in common (i.e.,
-- 
1.8.2.2


  parent reply	other threads:[~2013-09-22 10:49 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
2013-09-22 10:48 ` [PATCH v2 01/14] _git: fix a wrong variable in __git_config_values Øystein Walle
2013-09-22 10:48 ` [PATCH v2 02/14] _git: fix usage of ->int: for some entries in _git-config Øystein Walle
2013-09-22 10:48 ` [PATCH v2 03/14] _git: make git submodule <cmd> completion work Øystein Walle
2013-09-22 10:48 ` [PATCH v2 04/14] _git: correctly use __git_guard_number in some cases Øystein Walle
2013-09-22 10:48 ` [PATCH v2 05/14] _git: completion updates to match latest git v1.8.3 Øystein Walle
2013-09-22 10:48 ` [PATCH v2 06/14] _git: completion updates to match latest git v1.8.3 part 2 Øystein Walle
2013-09-22 10:48 ` [PATCH v2 07/14] _git: add new configuration options to match latest git v1.8.3 Øystein Walle
2013-09-22 10:48 ` [PATCH v2 08/14] _git: reword _git-config TODO Øystein Walle
2013-09-22 10:48 ` Øystein Walle [this message]
2013-09-22 10:48 ` [PATCH v2 10/14] _git: fix some typos in description texts Øystein Walle
2013-09-22 10:48 ` [PATCH v2 11/14] _git: remove TODOs of actually documented options Øystein Walle
2013-09-22 10:48 ` [PATCH v2 12/14] _git: correct some "undocumented" options Øystein Walle
2013-09-22 10:48 ` [PATCH v2 13/14] _git: change completion text for consistency Øystein Walle
2013-09-22 10:48 ` [PATCH v2 14/14] _git: git rm: make git rm --cached work as intended Øystein Walle
2013-09-22 12:09 ` [PATCH v2 00/14] Improvements to the Git completion functions Frank Terbeck
2013-09-22 12:31   ` Frank Terbeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=026c333dd802bc8ed890acfdf008d5de8c97eb23.1379846744.git.oystwa@gmail.com \
    --to=oystwa@gmail.com \
    --cc=m0viefreak.cm@googlemail.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).