From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26039 invoked by alias); 29 Jun 2010 16:30:02 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 15133 Received: (qmail 5048 invoked from network); 29 Jun 2010 16:29:59 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.1 Received-SPF: pass (ns1.primenet.com.au: SPF record at benizi.com designates 64.130.10.15 as permitted sender) Date: Tue, 29 Jun 2010 12:29:29 -0400 (EDT) From: "Benjamin R. Haskell" To: Piotr Kalinowski cc: zsh-users@zsh.org Subject: Re: Git completion - trying to improve speed In-Reply-To: Message-ID: References: User-Agent: Alpine 2.01 (LNX 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 29 Jun 2010, Piotr Kalinowski wrote: > Hi, > > I'm working on quite a large repository, and found git checkout > completion to be veeery slow. I've found patch on google that does > improve situation dramatically when you supply some prefix, see: > http://www.zsh.org/mla/workers/2008/msg01535.html. I've applied it to > git-version of git completion. However, I've got weird side effect. > > Let user use 'git checkout test-', wanting to complete something > like local branch test-feature1 or test-feature2. However: > > - First completion is immediately inserted with menu displayed despite > the shell being configured otherwise (inserted in full, not just > common prefix). > > - The first completion is something like origin/test-feature1 instead > of a local branch. > > I'm not much of a shell guru so I thought I'd ask if someone more into > the subject had any ideas what's going on, before I start to > reverse-engineer _git script ;) > Not entirely sure about your problem. That message is spot-on about the source of the problem, though. _multi_parts is really slow. Since I have a mapping for completing filenames generally via ^X^F, I've actually been satisfied with adding the following to my startup files: __git_files(){} That prevents most(?) filename completion via _git, but I much prefer that to the alternative of pegging a CPU at 100% for more than a minute whenever I accidentally hit after 'git co' (w/ 'co' aliased to 'checkout') in my work repo (which is much smaller than the kernel repo, but many untracked files). I have a branch in my local zsh repo called completion/_git/why-so-slow, but it's been sitting dormant for a while for lack of tuits (along with completion/_virtualbox and completion/_imagemagick). -- Best, Ben