From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 1574 invoked from network); 29 Mar 2021 07:06:35 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 29 Mar 2021 07:06:35 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1617001595; b=Ozk8GMlJ8JRHLMfj1D5qp05LA0jlc2gUKz2yvBCBYFhuao+EKA3Y+UikoBqdAZZGrhN/rrc6u7 ZmT6xQznhWa6JDGsPoqn3kaI+xJ3nKib9amUp1mhhbnyxoBGMianiLsUfSdSGL8wfDk/5SRI83 PgbaofpT/mSSdyxt2dyx4Bf2xXHq9Z4QF9kdeHtlZrDAFomSZD5Mnlh3+pRN14lRsdllyoU986 NTtBbb91URuCt+xVFtTHw3Hs3MfrRDbFQ5+56EWSA5O5D0Xk+3yPB9PDvCjaaWV0U97i+bEZLK 8FQkvyrNO3XGqVz3khlzPLedoky4uQkh7vWxPp3LsoNOog==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (out1-smtp.messagingengine.com) smtp.remote-ip=66.111.4.25; dkim=pass header.d=daniel.shahaf.name header.s=fm3 header.a=rsa-sha256; dkim=pass header.d=messagingengine.com header.s=fm2 header.a=rsa-sha256; dmarc=none header.from=daniel.shahaf.name; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1617001595; bh=yn3M0mLF7wUk8L/CM9s2liDNvdek1vY/Hn8XtMv5l6c=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:In-Reply-To:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:DKIM-Signature:DKIM-Signature:DKIM-Signature; b=a+OdqfGrBhSmY9eMgO5eQB6XS0MYrn8YSVNDvM2EBVIYy5q4V8BuC7v2lo7PyHTRFX3gFuVR3P IGaMxcP1DZDF+14SKhnzcohcRKD1ztFYT75FQtrbPBVSGFBkgvnyfiY56vTNfBF8ckOeOLWYYd 8x4zmk5ig+c0QponcP/GcjMHNdQiwNKxr2aNCAlQOm33NCbbaJRsW2BFA49ShiYcdA4ZXZJWQT MB7VLAVuEOnhbldV3gNLFws9AQ6WS+wfJQWeXPgxfMD0+CaRy3ysIzwupjKH9j3Mfu9JXcCCMl An1g2D0k/Da4SK+KbKrbk/YcB2v6gUrXYvLeMJMYDvU0ow==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=YzK4TUz9W15O1r7L0cIPmEy9X8zShCcvcYgkhgP5zdc=; b=LKpR4+WK0eWwbF6mzsQjRakc5V A9lsHqR2EkJtciXLE1qib9b2NMoe8+wlqHjkfj/sghaVEeQqWYFAzuwQ5OxfKJz5YJarqutH765AW +PBQHUDZRJSL6j5vdrMStxfbsH1WUmQ9y1Qz1KxvVA8SK/l6bF+Tud5/8UF0a3lMd0PqGuBljlxk+ gcac+y9a6obZ/whQnNiwtfv6vOljwpnBgVEdNUM+IfqWsDnlpiC5wialD7sgXqppJzpzBcWxN/20v 8Y3cEw7Cu+BR9TPWNU6ZcInURerTW7kB8APinXZipGEIjb7xvurD1FOFzmJIhAKuNvLhbZZ9oDIne reSF+geg==; Received: from authenticated user by zero.zsh.org with local id 1lQlyr-000GIQ-Jz; Mon, 29 Mar 2021 07:06:33 +0000 Authentication-Results: zsh.org; iprev=pass (out1-smtp.messagingengine.com) smtp.remote-ip=66.111.4.25; dkim=pass header.d=daniel.shahaf.name header.s=fm3 header.a=rsa-sha256; dkim=pass header.d=messagingengine.com header.s=fm2 header.a=rsa-sha256; dmarc=none header.from=daniel.shahaf.name; arc=none Received: from out1-smtp.messagingengine.com ([66.111.4.25]:53783) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_256_GCM_SHA384:256) id 1lQlyY-000GAK-MP; Mon, 29 Mar 2021 07:06:15 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id BE0E95C0004; Mon, 29 Mar 2021 03:06:13 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Mon, 29 Mar 2021 03:06:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= daniel.shahaf.name; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to; s=fm3; bh=YzK 4TUz9W15O1r7L0cIPmEy9X8zShCcvcYgkhgP5zdc=; b=IwrosXS02GnvS1DV+aZ xS3699I5rX6gplsklN8O6iU9nZgrTqUaxIkpn88JuU00Q06l5oz85nj7aUQWIA+U sa9q9qWNBI1aZSsKFvC6LH0ofYPYd/nFRiS0LyyRX32ZtTYUUB5BAGe3YOqWt80m l+ZMrGUnbUBj8eDomRJBvB5MBaUF2w4xu2jzvmlZNTJSQLOc0rjFsqY8FX09uAbY OSCJGgGe6rr2vu2Fbh9MoZBp9HkaBaBcyPGJivX2DCLgO9jGIkww2t+2+jWReItc PxsQxnQMUFDUfBfqzPh4zZTrIGttXGfPw2pjMix4opsDb/w6e9pKCS1Uk2XklpN6 A1Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=YzK4TU z9W15O1r7L0cIPmEy9X8zShCcvcYgkhgP5zdc=; b=H13vct7WUTY/WbVDDfOy0b W1gk0CInLRVKxbwRLnx5EVhNt2g8ZXbKSdfwAxveLaO/4b+RFRdtd+J/My7NodQK josVzjKE0kMvYp9PNxgjRcSKc666wAOjBy0Xv6IRmMcKWnZEuIERAPRqVwE9ZfMf 5/nvSATykHld+r2sgIlKm/ocxg8YVPyWq8gLKrperrOElynwj+tJINiMfe4Cxtt+ V1D6jQKN1LS976lTpT4d2WYgwBn+iEcjVviQClexr22JvWP4dvJfxw9MtvR+9WsO 8rie0nO4fKh+JtxfWJAGf1KFy3MHS27rpmVvLMqPhQNW6iVyRBd6e/UyIqzK9s5Q == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudehjedguddugecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhepfffhvffukfhfgggtuggjfgesth dttddttdervdenucfhrhhomhepffgrnhhivghlucfuhhgrhhgrfhcuoegurdhssegurghn ihgvlhdrshhhrghhrghfrdhnrghmvgeqnecuggftrfgrthhtvghrnhephfdtgeejkedvfe ekveelledujeeuledujedtjeekleeiteejvefgudefhfefgfehnecuffhomhgrihhnpehg ihhthhhusgdrtghomhenucfkphepjeelrddukedvrdefiedrudekudenucevlhhushhtvg hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegurdhssegurghnihgvlhdr shhhrghhrghfrdhnrghmvg X-ME-Proxy: Received: from tarpaulin.shahaf.local2 (bzq-79-182-36-181.red.bezeqint.net [79.182.36.181]) by mail.messagingengine.com (Postfix) with ESMTPA id 48776108005C; Mon, 29 Mar 2021 03:06:13 -0400 (EDT) Received: by tarpaulin.shahaf.local2 (Postfix, from userid 1005) id 4F83X319ZBz1YC; Mon, 29 Mar 2021 07:06:11 +0000 (UTC) Date: Mon, 29 Mar 2021 07:06:11 +0000 From: Daniel Shahaf To: Tim Lee Cc: zsh-workers@zsh.org Subject: Re: [PATCH] Improve vcs_info example for ahead/behind git commits Message-ID: <20210329070611.GM18178@tarpaulin.shahaf.local2> References: <20210328213628.7rwz62bq5p2isd6b@home-guest> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210328213628.7rwz62bq5p2isd6b@home-guest> User-Agent: Mutt/1.10.1 (2018-07-13) X-Seq: 48306 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: Tim Lee wrote on Mon, Mar 29, 2021 at 05:36:28 +0800: > This patch improves the example hook that shows +N/-N when the > local git branch is ahead-of or behind the remote HEAD. Thanks. Review: > Improvements: > > * Use git-rev-list's `--count` option instead of piping to `wc -l`. > `--count` has been available since git 1.7.2 > (https://github.com/git/git/commit/f69c501832ecd6880602c55565508e70c3a013d5) Sure. > * Remove unnecessary use of `${hook_com[branch]}` because `@{upstream}` > defaults to the current branch when no branch name is provided. > `@{upstream}` was introduced in git 1.7.0 > (https://github.com/git/git/commit/28fb84382b0eb728534dbe2972bbfec3f3d83dd9) I'm not sure that's unnecessary, for two reasons: 1. hook_com[branch], as opposed to hook_com[branch_orig], may have been changed by a previous hook. 2. There may be educational value to demonstrating a use of hook_com[branch], even if it's implied. WDYT? > > diff --git a/Misc/vcs_info-examples b/Misc/vcs_info-examples > index 94b8a7b5e..36d4d3bf8 100644 > --- a/Misc/vcs_info-examples > +++ b/Misc/vcs_info-examples > @@ -179,14 +179,18 @@ function +vi-git-st() { > local ahead behind > local -a gitstatus > > - # for git prior to 1.7 > + # for git prior to 1.7.0 > # ahead=$(git rev-list origin/${hook_com[branch]}..HEAD | wc -l) > - ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l) > + # for git 1.7.0 and 1.7.1 > + # ahead=$(git rev-list @{upstream}..HEAD 2>/dev/null | wc -l) > + ahead=$(git rev-list --count @{upstream}..HEAD 2>/dev/null) > (( $ahead )) && gitstatus+=( "+${ahead}" ) The version of this function in my zshrc starts like this: . git rev-parse @{upstream} >/dev/null 2>&1 || return 0 local -a x=( $(git rev-list --left-right --count HEAD...@{upstream} ) ) The first line is to handle a detached HEAD, I think, and should presumably be added? The second line saves a fork(), which is valuable on some platforms. (I actually posted my function in users/21810, but didn't notice these two issues back then. Daniel Hahler posted his version too in users/21813.) Other than that, the patch LGTM. Personally I might not have bothered to add instructions for a 2010-vintage Git in 2021, though. Cheers, Daniel > - # for git prior to 1.7 > + # for git prior to 1.7.0 > # behind=$(git rev-list HEAD..origin/${hook_com[branch]} | wc -l) > - behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l) > + # for git 1.7.0 and 1.7.1 > + # behind=$(git rev-list HEAD..@{upstream} 2>/dev/null | wc -l) > + behind=$(git rev-list --count HEAD..@{upstream} 2>/dev/null) > (( $behind )) && gitstatus+=( "-${behind}" ) > > hook_com[misc]+=${(j:/:)gitstatus} >