From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Andrii Kolomoiets Newsgroups: gmane.emacs.bugs Subject: bug#38387: 27.0.50; [PATCH] vc-hg: use 'hg summary' to populate vc-dir headers Date: Thu, 28 Nov 2019 10:07:22 +0200 Message-ID: References: <7505dd70-86c1-9576-5dc9-42b1abca519e@yandex.ru> <0366bc0bf7f7c65bdc5e869397d4c945.squirrel@dancol.org> Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3601.0.10\)) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="24601"; mail-complaints-to="usenet@blaine.gmane.org" Cc: 38387@debbugs.gnu.org, Dmitry Gutov To: Daniel Colascione Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Nov 28 09:13:16 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iaEvL-0006Hz-Lu for geb-bug-gnu-emacs@m.gmane.org; Thu, 28 Nov 2019 09:13:15 +0100 Original-Received: from localhost ([::1]:46208 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaEvK-0007us-Bx for geb-bug-gnu-emacs@m.gmane.org; Thu, 28 Nov 2019 03:13:14 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:40005) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaEv0-0007kP-KF for bug-gnu-emacs@gnu.org; Thu, 28 Nov 2019 03:12:56 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iaEqJ-0000Qt-UO for bug-gnu-emacs@gnu.org; Thu, 28 Nov 2019 03:08:06 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:50586) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iaEqI-0000PI-2a for bug-gnu-emacs@gnu.org; Thu, 28 Nov 2019 03:08:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iaEqH-0002A8-UR for bug-gnu-emacs@gnu.org; Thu, 28 Nov 2019 03:08:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Andrii Kolomoiets Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 28 Nov 2019 08:08:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38387 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 38387-submit@debbugs.gnu.org id=B38387.15749284528270 (code B ref 38387); Thu, 28 Nov 2019 08:08:01 +0000 Original-Received: (at 38387) by debbugs.gnu.org; 28 Nov 2019 08:07:32 +0000 Original-Received: from localhost ([127.0.0.1]:56559 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iaEpn-00029K-TO for submit@debbugs.gnu.org; Thu, 28 Nov 2019 03:07:32 -0500 Original-Received: from mail-lj1-f170.google.com ([209.85.208.170]:38777) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iaEpm-000297-5V for 38387@debbugs.gnu.org; Thu, 28 Nov 2019 03:07:30 -0500 Original-Received: by mail-lj1-f170.google.com with SMTP id k8so16899864ljh.5 for <38387@debbugs.gnu.org>; Thu, 28 Nov 2019 00:07:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=cVA0sBtOliSqZXnH3JaW28eDoUkqfMKB/3QPSlTL1ew=; b=p3Rf8Dpwtqvg63h0Tj3LOHh0W+gf6r3hXmLE2qHPsVq/U9xql5VWbPu0plP/GuN7wJ +FbSjtP4bz0lpWTcfkOpZ+Xbt6zCbOs1QugO9byiWzL4iPZm5jCIx6K5gF1sE5I6yBBM 6o+cIop8Z+Djbrabd7d8l1yY2H5HvxiKWTirJjF0B7u866j62uO/fZpVKXJpk3GA/sIr MmZA1w0UGWFKwyr/hHPz8u06D/DqJeuwVg0dJlnNBsgC0nY2Zuw2YMEuubccsQUEmQ8Q fuDxva2e2vSpBRsaOGpEGiT/IsHBBlqXZw7Wt7AI9wfy6Q0IPMFArKz9QskeNufXEKw4 QDGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=cVA0sBtOliSqZXnH3JaW28eDoUkqfMKB/3QPSlTL1ew=; b=QmlKnZPjDZ721RtxZuPt2E/0q0178RtXMm/GM0QP4QG3v2MDFHl2TZAdiXVYLfhMBz 9v/9GYWUdp2XZ7vy2beBoS4HwSMb/bPrSRH5PiwXG4h8EZtjbXuvCuQ1UtOIWSAPIg/V imSY8j7LBjDfcf+FGqpdkb22Wo5NiEX69w32mzlqDgj7lBLle9fZ0SWHeJSB0uJfU7Xv jv2Tg5kvjtqvEIneDkXpO0CUdYdXVXAPJf+wYV9mh+Ee/nwpXT+izk7A7vU8e9bNzJaj AvmzNI3RvJs/ev+jDT40JFflR/rBz1YNTj5+SAFkgypuqF2YogjoDYMo7zgk59NkkFI+ c7iQ== X-Gm-Message-State: APjAAAUzQUl6vsmmeYjaMSbP9dyNUd2tHZ+ebBQnsiqAhcq1gZAncQYL ViiU9VQovta/fst7fc92UY4= X-Google-Smtp-Source: APXvYqz7kkV8dG8OL2aN1QyyPbretyTNUTK5B3vWPrZAgJBIsjfnEAQUS3Jlp/f9W8e97Kw1Gsz1tA== X-Received: by 2002:a2e:85d5:: with SMTP id h21mr33195305ljj.243.1574928444164; Thu, 28 Nov 2019 00:07:24 -0800 (PST) Original-Received: from [10.1.1.147] (188-42-207-82.ip.ukrtel.net. [82.207.42.188]) by smtp.gmail.com with ESMTPSA id b28sm9429372ljp.9.2019.11.28.00.07.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Nov 2019 00:07:23 -0800 (PST) X-Priority: 3 (Normal) In-Reply-To: <0366bc0bf7f7c65bdc5e869397d4c945.squirrel@dancol.org> X-Mailer: Apple Mail (2.3601.0.10) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:172582 Archived-At: On 27 Nov 2019, at 20:53, Daniel Colascione wrote: > >> Hi Andrii, >> >> On 26.11.2019 17:16, Andrii Kolomoiets wrote: >> >>> By invoking single 'summary' command we can get more info about >>> repository state: parent revisions, current branch, tags, bookmarks, >>> commit status, available updates and phase. >> >> I guess the questions are: >> >> - Is this output better than the previous one? Hopefully others will >> chime in, e.g. Daniel, who wrote some major improvements to vc-hg a few >> years ago. Current output displays current branch and tag. There are also root dir, but vc displays working dir itself, so root is not needed. BTW root can be replaced with bookmark because bookmark is what vc-hg-create-tag create when branchp. From user's POV the branch creation is not working: 1. Open vc-dir for hg repository 2. C-u B c 3. Enter branch name to create and nothing changed in vc-dir - branch and tag are remains the same. Info that 'summary' shows but missed in the current output: - Parent revision and first line of commit message. During merge both parents are shown. Very handy. This info can be obtained by parsing 'hg log' command output. - Bookmarks, if any. Can be obtained by 'hg id -B'. - Commit state. Shows the count of modified, added, removed, renamed, copied, deleted, unknown and unresolved files. Alright, all affected files are listed in the same vc-dir buffer and one can count them so those numbers may be not very interesting. But commit state also can show if graft, update or merge is in progress; if head are closed; if it is a new branch; if there are changes in subrepositories. I don't know how to obtain this info. - Update state. Shows the available updates count and/or branch heads count. I don't know how obtain this info, maybe some log command. - Number of incoming and outgoing changes (with '--remote' switch). It is slow, but we can allow user to decide use it or not. - Phase. Can show how many changesets are not shared yet. IMO 'summary' gives better overview of repo state. >> - Is 'hg summary' stable enough? Maybe a few years from now Mercurial >> changes its output and this code stops working in all Emacs we'd have >> released in the meantime? This is why we try to use "porcelain" level >> commands (in Git terminology) when possible, not user-level. This code do nothing but propertize the text. We just show the user the output of the user command. The layout can be messed though if the name-value separator will be changed. To solve this the regexp can be put into the variable so it can be changed easily. Removal of the 'summary' command is the worst case. But AFAIK there are no prerequisites for this. Let's not hide usefull info from the user because we affraid of hypothetical removal of the 'summary' command :) For now, comparing 'summary' output of hg 2.6.2 and 5.2, I can see that phase info is added in recent version and no breaking changes at all. > What's the performance of summary like these days? Let's see. hg summary 0.21s user 0.16s system 98% cpu 0.376 total hg log -r 'p1(.)+p2(.)' 0.14s user 0.08s system 99% cpu 0.221 total hg id --branch 0.14s user 0.13s system 98% cpu 0.280 total hg id --tags 0.15s user 0.14s system 98% cpu 0.299 total hg id --bookmarks 0.15s user 0.15s system 98% cpu 0.298 total hg phase 0.12s user 0.07s system 97% cpu 0.193 total Yes, 'summary' is slower than single 'id' command. But again, it is faster to run a single command that gives all the info rather than run five different commands. Imagine working with repo over TRAMP. Best regards.