Zsh Mailing List Archive
Messages sorted by:
Re: [PATCH] vcs_info: add 'find-deepest' zstyle
- X-seq: zsh-workers 47505
- From: "Daniel Shahaf" <d.s@xxxxxxxxxxxxxxxxxx>
- To: "Frank Terbeck" <ft@xxxxxxx>, zsh-workers@xxxxxxx
- Subject: Re: [PATCH] vcs_info: add 'find-deepest' zstyle
- Date: Mon, 26 Oct 2020 20:58:25 +0000
- Archived-at: <https://zsh.org/workers/47505>
- Archived-at: <http://www.zsh.org/sympa/arcsearch_id/zsh-workers/2020-10/56643e6c-0f7c-49f0-8089-4d4a42008dae%40www.fastmail.com>
- Authentication-results: zsh.org; iprev=pass (wout1-smtp.messagingengine.com) smtp.remote-ip=22.214.171.124; dkim=pass header.d=daniel.shahaf.name header.s=fm1 header.a=rsa-sha256; dkim=pass header.d=messagingengine.com header.s=fm1 header.a=rsa-sha256; dmarc=none header.from=daniel.shahaf.name; arc=none
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= daniel.shahaf.name; h=mime-version:message-id:in-reply-to :references:date:from:to:subject:content-type :content-transfer-encoding; s=fm1; bh=7jzw5Xojkp1JS45Aj8kvsCLG2z E4F1CAJ09HxvZsfM0=; b=BCADAn83oQqvo7qz5WEBKFoNIHdNLcuMh35/QBCd6l uHDW9Gs2wQPkedoJPaWuyE14DvDwMzV3aET/XRd7/QCFxEboY8k7ZGgGDngGZwVM +tdDYSMw62KmdZJsoOrgj2UqDK9LFmmlGbqDiVNHkabbeBryHx9z/kcZaNeBUZH8 2uZw26L51qf7XsKZN9kVg7quQqu/Z0JOLM6MZfBIAEUG03GaAyiKYCJ1rxl24ikZ PrIBDE2lIwM9l2YuBcKI8SIHdIQqY0JfFlP20b1lzMhDTJYlHWkHK8jPoPnvF1bj gBQYm+1BSwQX+0wMZSglLFpPmg6Z+vxRv1IzMpLl1OGg==
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding: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=fm1; bh=7jzw5Xojkp1JS45Aj8kvsCLG2zE4F1CAJ09HxvZsf M0=; b=hS2sZFK5rgTHosD8RBn+fsDAwGMnB5V2qRrx7OAAhlQE26E0V0NhtGd0b Rzx+TU+1GtYt9/m4KkkHAICea59y4cHtLE00c6p+5U9fJiXmb47wdDpv20+5QTcu oYeTwWSmRdEC4D1nU2MS3yFmhph7LcFrJDBoapGBD0p95TwTzYoU8NsSKGaRHGLD JVXh14i7+NCCUR0/nrqsYRbKMm4azY0V0d4ueYpP5hl/r6AFNtCDNHE8V2esvH0G DourxSNJc0U42lPHbY3XD6agBSXliwdNMw4bxKbqG12WK+7CQO0bjYHXqJxS+/1n diFuD6BqJ11dsAtLSOgxxO2gyGokg==
- In-reply-to: <firstname.lastname@example.org>
- List-archive: <http://www.zsh.org/sympa/arc/zsh-workers>
- List-help: <mailto:email@example.com?subject=help>
- List-id: <zsh-workers.zsh.org>
- List-owner: <mailto:firstname.lastname@example.org>
- List-post: <mailto:email@example.com>
- List-subscribe: <mailto:firstname.lastname@example.org?subject=subscribe%20zsh-workers>
- List-unsubscribe: <mailto:email@example.com?subject=unsubscribe%20zsh-workers>
- References: <firstname.lastname@example.org> <email@example.com> <firstname.lastname@example.org> <37168-1603506679.130606@RR8o.26Eg.GGvC> <email@example.com> <firstname.lastname@example.org>
- Sender: zsh-workers-request@xxxxxxx
Frank Terbeck wrote on Sun, 25 Oct 2020 23:13 +00:00:
> Daniel Shahaf wrote:
> > Oliver Kiddle wrote on Sat, 24 Oct 2020 04:31 +0200:
> >> I don't have much use for nested repositories but vcs_info tends to be
> >> more use with git than subversion.
> > +1, primarily because git is much more stateful (e.g., interrupted
> > rebases).
> I think it's mostly because git is a decentralised system, where more
> information is available without having to touch a networked system,
> like the central server in centralised systems. The latter will kill
> latency dependant use cases, such as prompts.
I don't see how vcs_info's admittedly increased usefulness under Git
follows from Git's being decentralized and from more information being
Decentralization is reflected in, for instance, the data model (a DAG of
commits) and in the existence of the «git push $remote» syntax. Neither
of those is directly reflected in information typically extracted into
prompts: for instance, when the checked out branch tracks a remote
branch, vcs_info doesn't have a built-in facility for displaying the
name of the remote.
Same goes for having the history available locally. vcs_info git
prompts do not typically show information from commits other than the
current one. The only exceptions I can think of are the detached HEAD %b
expando fallback code that uses `git describe`/`git name-rev` and the
statistics expandos in the patch-format style.
If showing previous commits' data were a common requirement, one would
have expected the use-server style to be used by at least some of the
centralized backends. However, that style is used only by the p4
backend for detection (as opposed to interrogation) and by the
'checkout' variant of the bzr backend.
On the other hand, consider «git rebase -i» which I cited as an example.
There is no conceptual problem with implementing the equivalent of that
feature in Subversion — and if that were done, showing state in the
prompt would become much more useful under that backend.
Furthermore, under Subversion I use hooks to display some additional
information I find useful: a list of changelist names and the
modified/switched/partial-depth indications from `svnversion` output.
None of these states is inherent to Subversion's centralized
nature: there's nothing stopping git and hg from implementing the
equivalents of «svn changelist», «svn switch» and «svn update
--set-depth=exclude». (To be clear, I'm not saying they should. I'm
just saying those features are orthogonal to centralization/decentralization.)
And the reason all this is so? vcs_info shows the _current_ state,
which is a moving target. It doesn't show the history, and doesn't need
to, because the history is in the user's mental cache anyway. That's
also why the git-rev-list(1) uses in Misc/vcs_info-examples print the
statistics of the local HEAD relative to the upstream HEAD, but not the
statistics of the upstream HEAD relative to an empty repository.
P.S. Speaking of my hooks, I've got some other ones that might be of
independent interest: I have my svn prompts show the `svnversion`
output's revision range, e.g., "42:100", rather than just whatever `svn
info --show-item=revision ./` happens to be; I print the topmost patch
in quilt addon mode, and the commit being rebased in interrupted
rebases; and I indicate presence of GIT_* envvars and per-repository
addons (e.g., git-annex(1), vcsh(1)).
Messages sorted by: