git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Eric Sunshine <sunshine@sunshineco.com>
To: Duy Nguyen <pclouds@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>, Git List <git@vger.kernel.org>
Subject: Re: [RFC/PATCH] worktree: replace "checkout --to" with "worktree new"
Date: Wed, 1 Jul 2015 22:52:58 -0400	[thread overview]
Message-ID: <CAPig+cT=U6LxpJuUMaCd-x=gQPvh89SDNUo12+2_3uYb_q3=Og@mail.gmail.com> (raw)
In-Reply-To: <CACsJy8BdvLiM8Ki=N1k-fBrqqoEONhjwcN6jzGUk=3NPRRujQw@mail.gmail.com>

On Wed, Jul 1, 2015 at 9:07 PM, Duy Nguyen <pclouds@gmail.com> wrote:
> On Thu, Jul 2, 2015 at 12:13 AM, Eric Sunshine <sunshine@sunshineco.com> wrote:
>>>    I noticed GIT_CHECKOUT_NEW_WORKTREE environment variabl that does
>>>    not seem to be documented.  Is this something we still need?
>>>    The log message of 529fef20 (checkout: support checking out into
>>>    a new working directory, 2014-11-30) does not tell us much.
>>
>> Yes, it's still used for the same purpose as before the conversion: as
>> a private signal to the sub git-checkout invocation that it's
>> operating on a new worktree. When defined, it sets the
>> 'new_worktree_mode' flag in checkout.c, and there are still a few bits
>> of code which apparently need to know about it. It would be nice to
>> eliminate this special knowledge from checkout.c, however, I'm not yet
>> familiar enough with the checkout code to determine if doing so is
>> viable.
>
> I think it can go away. When "--to" is used, I have to re-execute "git
> checkout" command again after creating the new worktree. I could
> process the command line arguments from the first execution, delete
> "--to", then use the remaining options to run checkout the second
> time. But I chose to pass the entire command line to the second
> execution. The env is used to let the second run know it should ignore
> "--to" (or we get infinite recursion). With "git worktree add" this
> recursion disappears and this env var has no reason to exist.

The recursion protection is indeed no longer needed and gets removed
by the "worktree add" patch. However, there are still a few bits of
code which want to know that the checkout is happening in a new
worktree. I haven't examined them closely yet to diagnose if this
specialized knowledge can be eliminated. Perhaps you can weight in. In
particular:

checkout_paths:
    if (opts->new_worktree)
        die(_("'%s' cannot be used with updating paths"), "--to");

merge_working_tree:
    tree = parse_tree_indirect(old->commit &&
        !opts->new_worktree_mode ?
            old->commit->object.sha1 :
            EMPTY_TREE_SHA1_BIN);

switch_branches:
    if (!opts->quiet && !old.path && old.commit &&
        new->commit != old.commit && !opts->new_worktree_mode)
            orphaned_commit_warning(old.commit, new->commit);

  reply	other threads:[~2015-07-02  2:53 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-30  4:56 [RFC/PATCH] worktree: replace "checkout --to" with "worktree new" Eric Sunshine
2015-06-30  9:23 ` Duy Nguyen
2015-06-30 16:33   ` Junio C Hamano
2015-07-01 10:46     ` Duy Nguyen
2015-06-30 22:02   ` Eric Sunshine
2015-07-01  6:37     ` Eric Sunshine
2015-06-30 17:13 ` Junio C Hamano
2015-06-30 22:11 ` Eric Sunshine
2015-06-30 22:27   ` Junio C Hamano
2015-07-01  4:48     ` Mikael Magnusson
2015-06-30 22:32   ` Mark Levedahl
2015-07-01 16:53 ` Junio C Hamano
2015-07-01 17:13   ` Eric Sunshine
2015-07-01 17:16     ` Eric Sunshine
2015-07-01 17:32     ` Junio C Hamano
2015-07-01 18:18     ` Eric Sunshine
2015-07-01 18:52       ` Junio C Hamano
2015-07-02  1:07     ` Duy Nguyen
2015-07-02  2:52       ` Eric Sunshine [this message]
2015-07-02 12:41         ` Duy Nguyen
2015-07-02 12:50           ` Duy Nguyen
2015-07-02 17:06             ` Eric Sunshine
2015-07-02 22:41               ` Duy Nguyen
2015-07-02 16:59           ` Eric Sunshine
2015-07-02 18:45         ` Eric Sunshine
2015-07-02 19:00           ` Eric Sunshine
2015-07-02 19:19             ` 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+cT=U6LxpJuUMaCd-x=gQPvh89SDNUo12+2_3uYb_q3=Og@mail.gmail.com' \
    --to=sunshine@sunshineco.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=pclouds@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).