From: Junio C Hamano <gitster@pobox.com>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: git@vger.kernel.org, Duy Nguyen <pclouds@gmail.com>,
Mark Levedahl <mlevedahl@gmail.com>,
Mikael Magnusson <mikachu@gmail.com>
Subject: Re: [PATCH 00/16] worktree: use "git reset --hard" to populate worktree
Date: Mon, 13 Jul 2015 11:36:11 -0700 [thread overview]
Message-ID: <xmqqsi8rzyzo.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1436573146-3893-1-git-send-email-sunshine@sunshineco.com> (Eric Sunshine's message of "Fri, 10 Jul 2015 20:05:30 -0400")
Eric Sunshine <sunshine@sunshineco.com> writes:
> This is a follow-on series to [1], which migrated "git checkout --to"
> functionality to "git worktree add". That series continued using "git
> checkout" for the initial population of the new worktree, which required
> git-checkout to have too intimate knowledge that it was operating in a
> newly created worktree.
>
> This series eliminates git-checkout from the picture by instead
> employing "git reset --hard"[2] to populate the new worktree initially.
>
> It is built atop 1eb07d8 (worktree: add: auto-vivify new branch when
> <branch> is omitted, 2015-07-06), currently in 'next', which is
> es/worktree-add except for the final patch (which retires
> --ignore-other-worktrees) since the intention[3] was to drop that patch.
A few comments on things I noticed while reading (mostly coming from
the original before this patch series):
- What does this comment apply to?
/*
* $GIT_COMMON_DIR/HEAD is practically outside
* $GIT_DIR so resolve_ref_unsafe() won't work (it
* uses git_path). Parse the ref ourselves.
*/
It appears in front of a call to check-linked-checkout, but I
think the comment attempts to explain why it manually decides
what the path should be in that function, so perhaps move it to
the callee from the caller?
- check_linked_checkout() when trying to decide what branch is
checked out assumes HEAD is always a regular file, but I do not
think we have dropped the support of SYMLINK_HEAD yet. It needs
to check st_mode and readlink(2), like resolve_ref_unsafe() does.
- After a new skelton worktree is set up, the code runs a few
commands to finish populating it, under a different pair of
GIT_DIR/GIT_WORK_TREE, but the function does so with setenv(); it
may be cleaner to use cp.env[] for it, as the process we care
about using the updated environment is not "worktree add" command
we are running ourselves, but "update-ref/symbolic-ref" and
"reset" commands that run in the new worktree.
Other than that, looks nicely done.
I however have to wonder if the stress on "reset --hard" on log
messages of various commits (and in the endgame) is somewhat
misplaced.
The primary thing we wanted to see, which this series nicely brings
us, is to remove "new-worktree-mode" hack from "checkout" (in other
words, instead of "reset --hard", "checkout -f" would also have been
a satisfactory endgame).
Thanks.
next prev parent reply other threads:[~2015-07-13 18:38 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-11 0:05 [PATCH 00/16] worktree: use "git reset --hard" to populate worktree Eric Sunshine
2015-07-11 0:05 ` [PATCH 01/16] checkout: avoid resolving HEAD unnecessarily Eric Sunshine
2015-07-11 0:05 ` [PATCH 02/16] checkout: name check_linked_checkouts() more meaningfully Eric Sunshine
2015-07-11 0:05 ` [PATCH 03/16] checkout: improve die_if_checked_out() robustness Eric Sunshine
2015-07-11 0:05 ` [PATCH 04/16] checkout: die_if_checked_out: simplify strbuf management Eric Sunshine
2015-07-11 0:05 ` [PATCH 05/16] checkout: generalize die_if_checked_out() branch name argument Eric Sunshine
2015-07-11 0:05 ` [PATCH 06/16] branch: publish die_if_checked_out() Eric Sunshine
2015-07-11 0:05 ` [PATCH 07/16] worktree: simplify new branch (-b/-B) option checking Eric Sunshine
2015-07-11 0:05 ` [PATCH 08/16] worktree: introduce options container Eric Sunshine
2015-07-11 0:05 ` [PATCH 09/16] worktree: make --detach mutually exclusive with -b/-B Eric Sunshine
2015-07-11 0:05 ` [PATCH 10/16] worktree: make branch creation distinct from worktree population Eric Sunshine
2015-07-12 1:20 ` Duy Nguyen
2015-07-12 2:36 ` Eric Sunshine
2015-07-12 2:48 ` Duy Nguyen
2015-07-12 3:10 ` Eric Sunshine
2015-07-12 3:14 ` Eric Sunshine
2015-07-12 3:27 ` Eric Sunshine
2015-07-12 10:03 ` Duy Nguyen
[not found] ` <CACsJy8BTTdWrCZNz=y686pgju5X8-2mPrNNQ-+z4ByeKD6O5Uw@mail.gmail.com>
2015-07-12 19:20 ` Eric Sunshine
2015-07-11 0:05 ` [PATCH 11/16] worktree: add_worktree: construct worktree-population command locally Eric Sunshine
2015-07-11 0:05 ` [PATCH 12/16] worktree: detect branch symref/detach and error conditions locally Eric Sunshine
2015-07-11 0:05 ` [PATCH 13/16] worktree: make setup of new HEAD distinct from worktree population Eric Sunshine
2015-07-11 0:05 ` [PATCH 14/16] worktree: avoid resolving HEAD unnecessarily Eric Sunshine
2015-07-11 0:05 ` [PATCH 15/16] worktree: populate via "git reset --hard" rather than "git checkout" Eric Sunshine
2015-07-11 0:05 ` [PATCH 16/16] checkout: drop intimate knowledge of new worktree initial population Eric Sunshine
2015-07-13 18:36 ` Junio C Hamano [this message]
2015-07-14 9:53 ` [PATCH 00/16] worktree: use "git reset --hard" to populate worktree Michael J Gruber
2015-07-14 10:09 ` Duy Nguyen
2015-07-14 16:40 ` Eric Sunshine
2015-07-15 6:48 ` Eric Sunshine
2015-07-15 9:59 ` Duy Nguyen
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqsi8rzyzo.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=mikachu@gmail.com \
--cc=mlevedahl@gmail.com \
--cc=pclouds@gmail.com \
--cc=sunshine@sunshineco.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.