git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Eric Sunshine <sunshine@sunshineco.com>
To: Rafael Silva <rafaeloliveira.cs@gmail.com>
Cc: Git List <git@vger.kernel.org>, Junio C Hamano <gitster@pobox.com>
Subject: Re: [RFC PATCH 0/2] teach `worktree list` to mark locked worktrees
Date: Fri, 9 Oct 2020 18:50:02 -0400	[thread overview]
Message-ID: <CAPig+cR8D13cM8OewRVYfg7wNjVC05tVQw80-dm4B5XPmjHJWw@mail.gmail.com> (raw)
In-Reply-To: <20201002162802.GA15646@contrib-buster.localdomain>

On Fri, Oct 2, 2020 at 12:28 PM Rafael Silva
<rafaeloliveira.cs@gmail.com> wrote:
> On Wed, Sep 30, 2020 at 03:19:27AM -0400, Eric Sunshine wrote:
> > [...] For reference, here are some earlier messages related to
> > this topic:
>
> Thank you for all this reference, it's really helpful. It is nice to see
> that we already have few discussion on this topic that we can use and
> work on top of that.
>
> Sorry for the bit late response.

Likewise.

> > I'm not suggesting that this patch series implement verbose mode, but
> > bring it to attention to make sure we don't paint ourselves into a
> > corner when deciding how the "locked" annotation should be presented.
>
> Doing a little investigation on the code, it seems the machinery for checking
> whether a worktree is prunable it seems is already there implemented
> on the `should_prune_worktree()`.

Yes, when I mentioned that in [1], I envisioned
should_prune_worktree() being moved from builtin/worktree.c to
top-level worktree.c and possibly generalized a bit if necessary.

One thing to note is that should_prune_worktree() is somewhat
expensive, so we'd probably want to make determination of "prunable
reason" lazy, much like the lock reason is retrieved lazily rather
than doing it when get_worktrees() is called. Thus, like the lock
reason, the prunable reason would be accessed indirectly via a
function, say worktree_prunable_reason(), rather than directly from
'struct worktree'.

[1]: https://lore.kernel.org/git/CAPig+cTTrv2C7JLu1dr4+N8xo+7YQ+deiwLDA835wBGD6fhS1g@mail.gmail.com/

> In such case, I would love to get started working on a bigger patch that
> will implemented not only the annotation, but the verbose mode as well.
> Specially because I was also thinking about how to make the "locked reason"
> message available to the command output and the design proposed by [2]
> sounds like a good way to manage that.

I'd be happy to see that implemented.

> Additionally, having the ability to see the annotation and the reason in
> case you see the annotation seems like more complete work for the intention
> of the patch.
>
> Unless you think that is better to start with the annotation, and some time
> later addressing the other changes specified by [2].

Whatever you feel comfortable tackling is fine. The simple "locked"
annotation is nicely standalone, so it could be resubmitted with the
changes suggested by reviewers, and graduate without waiting for the
more complex tasks which could be done as follow-up series. Or, expand
the current series to tackle verbose mode and/or prunable status or
both or any combination.

> > A reason that it would be nice to address the shortcomings of
> > porcelain format is because there are several additional pieces of
> > information it could be providing. Summarizing from [1], in addition
> > to the worktree path, its head, checked out branch, whether its bare
> > or detached, for each worktree, porcelain could also show:
> >
> >   * whether it is locked
> >    - the lock reason (if available)
> >    - and whether the worktree is currently accessible (mounted)
> >   * whether it can be pruned
> >    - and the prune reason if so
> >   * worktree ID (the <id> of .git/worktrees/<id>/)
>
> That something that can also work on. But I agreed that it could be bit
> more work for a newcomer. I was thinking that I can split the work in
> three series of patches.
>
>  1. Implementing the annotation for the standards "list" command, implementing
>   not only the locked but the prunable as on aforementioned in [2].
>
>  2. A second series of patch that will introduce the verbose as defined in [2]
>
>  3. Third and final series that extend the porcelain format.
>
> I would like to kindly ask your opnion on this. Whether you think it will
> be a good idea to implement all these changes this way and I can start
> working on that.

Such an organization would be fine. Tackle what you feel is
appropriate and what "scratches your itch". Breaking the changes down
into smaller chunks, as you propose, also helps reviewers since it's
easier to review a shorter series than a long one.

> I will change this series to become the first part of annotations, specially
> because after reading your response and references, it seems this will be
> much complete functionality that I would like to have on Git.

Makes sense.

  reply	other threads:[~2020-10-09 22:50 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-28 15:49 [RFC PATCH 0/2] teach `worktree list` to mark locked worktrees Rafael Silva
2020-09-28 15:49 ` [RFC PATCH 1/2] worktree: teach `list` to mark locked worktree Rafael Silva
2020-09-28 21:37   ` Junio C Hamano
2020-09-29 21:36     ` Rafael Silva
2020-09-30  7:35     ` Eric Sunshine
2020-09-28 15:49 ` [RFC PATCH 2/2] t2402: add test to locked linked worktree marker Rafael Silva
2020-09-28 21:54   ` Junio C Hamano
2020-09-29 21:37     ` Rafael Silva
2020-09-30  8:06   ` Eric Sunshine
2020-09-28 21:19 ` [RFC PATCH 0/2] teach `worktree list` to mark locked worktrees Junio C Hamano
2020-09-29 21:35   ` Rafael Silva
2020-09-30  7:19 ` Eric Sunshine
2020-10-02 16:28   ` Rafael Silva
2020-10-09 22:50     ` Eric Sunshine [this message]
2020-10-10 19:06       ` Rafael Silva
2020-10-10 18:55 ` [PATCH v2 0/1] Teach "worktree list" to annotate " Rafael Silva
2020-10-10 18:55   ` [PATCH v2 1/1] worktree: teach `list` to annotate locked worktree Rafael Silva
2020-10-11  6:26     ` Eric Sunshine
2020-10-11  6:34       ` Eric Sunshine
2020-10-11 10:04       ` Rafael Silva
2020-10-11 10:11   ` [PATCH v3 0/1] Teach "worktree list" to annotate locked worktrees Rafael Silva
2020-10-11 10:11     ` [PATCH v3] worktree: teach `list` to annotate locked worktree Rafael Silva
2020-10-12  2:24       ` Eric Sunshine

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=CAPig+cR8D13cM8OewRVYfg7wNjVC05tVQw80-dm4B5XPmjHJWw@mail.gmail.com \
    --to=sunshine@sunshineco.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=rafaeloliveira.cs@gmail.com \
    /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://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).