git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Eric Sunshine <sunshine@sunshineco.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Git List <git@vger.kernel.org>, Duy Nguyen <pclouds@gmail.com>,
	Michael J Gruber <git@drmicha.warpmail.net>
Subject: Re: [PATCH v2 06/20] checkout: check_linked_checkout: improve "already checked out" aesthetic
Date: Thu, 16 Jul 2015 20:32:38 -0400	[thread overview]
Message-ID: <CAPig+cRtCon=jaqbjZyHTvJ3cydiyAz+5OC=3x30VfAJniYYMQ@mail.gmail.com> (raw)
In-Reply-To: <xmqqy4ig3s3q.fsf@gitster.dls.corp.google.com>

On Thu, Jul 16, 2015 at 1:55 PM, Junio C Hamano <gitster@pobox.com> wrote:
> How does this work with manually configured GIT_DIR environment, by
> the way?  I think GIT_DIR=/collection/of/repos/foo.git would be OK,
> as strbuf_strip_suffix() would hopefully leave it intact, but I am
> more interested in the general working of linked checkout feature,
> not just this error message.

I may be misunderstanding your question, but my answer is that
strbuf_strip_suffix() is not applied to $GIT_DIR, but rather to the
content of file $GIT_COMMON_DIR/worktrees/<tag>/gitdir, which is the
path to the .git file in the linked worktree. That is, given:

    git worktree add ../foo HEAD

then the content of 'gitdir' is the absolute path of "../foo/.git",
and strbuf_strip_suffix() operates on that value.

> In the new world order with GIT_DIR and GIT_COMMON_DIR, does
> "$GIT_DIR" always have to be the same as "$GIT_WORK_TREE/.git"?  Do
> we need some sanity check if that is the case?  Perhaps: if you have
> $GIT_DIR set to $somewhere/.git/worktrees/$name, then
>
>  - $GIT_COMMON_DIR must match $somewhere/.git,
>
>  - $somewhere/.git/worktrees/$name/commondir must point at
>    $GIT_COMMON_DIR,
>
>  - $GIT_WORK_TREE/.git must match $GIT_DIR
>
> or something like that?

Duy is probably better suited to answer this, as he would likely have
taken these issues into consideration when implementing the feature.
(I've been poking through documentation and code for quite a while
trying to answer this email but don't yet have a sufficient grasp to
do it justice. I'm not even sure where such a sanity check would be
placed.)

>>       } else
>>               strbuf_addstr(&gitdir, get_git_common_dir());
>>       skip_prefix(branch, "refs/heads/", &branch);
>> +     strbuf_strip_suffix(&gitdir, "/.git");
>
> Sick people have '/.git' and run "git add etc/passwd"; do we want to
> consider such a use case?

I originally implemented this as stripping only ".git" since it felt
natural for the result to have a trailing slash, however, when I
looked back at your report[1], I saw that you suggested stripping
"/.git", so I changed it to strip the slash as well. Given the above
"sick" use-case, we may indeed want to strip only ".git".

[1]: http://article.gmane.org/gmane.comp.version-control.git/274001

>>       die(_("'%s' is already checked out at '%s'"), branch, gitdir.buf);
>>  done:
>>       strbuf_release(&path);

  reply	other threads:[~2015-07-17  0:32 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-16  8:20 [PATCH v2 00/20] rid git-checkout of too-intimate knowledge of new worktree Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 01/20] checkout: avoid resolving HEAD unnecessarily Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 02/20] checkout: name check_linked_checkouts() more meaningfully Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 03/20] checkout: improve die_if_checked_out() robustness Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 04/20] checkout: die_if_checked_out: simplify strbuf management Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 05/20] checkout: generalize die_if_checked_out() branch name argument Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 06/20] checkout: check_linked_checkout: improve "already checked out" aesthetic Eric Sunshine
2015-07-16 17:55   ` Junio C Hamano
2015-07-17  0:32     ` Eric Sunshine [this message]
2015-07-17  1:42       ` Duy Nguyen
2015-07-16  8:20 ` [PATCH v2 07/20] checkout: check_linked_checkout: simplify symref parsing Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 08/20] checkout: teach check_linked_checkout() about symbolic link HEAD Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 09/20] branch: publish die_if_checked_out() Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 10/20] worktree: simplify new branch (-b/-B) option checking Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 11/20] worktree: introduce options container Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 12/20] worktree: make --detach mutually exclusive with -b/-B Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 13/20] worktree: make branch creation distinct from worktree population Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 14/20] worktree: elucidate environment variables intended for child processes Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 15/20] worktree: add_worktree: construct worktree-population command locally Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 16/20] worktree: detect branch-name/detached and error conditions locally Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 17/20] worktree: make setup of new HEAD distinct from worktree population Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 18/20] worktree: avoid resolving HEAD unnecessarily Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 19/20] worktree: populate via "git reset --hard" rather than "git checkout" Eric Sunshine
2015-07-16  8:20 ` [PATCH v2 20/20] checkout: drop intimate knowledge of newly created worktree Eric Sunshine
2015-07-16 18:13   ` Junio C Hamano

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+cRtCon=jaqbjZyHTvJ3cydiyAz+5OC=3x30VfAJniYYMQ@mail.gmail.com' \
    --to=sunshine@sunshineco.com \
    --cc=git@drmicha.warpmail.net \
    --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).