git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 00/21] Support multiple worktrees

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 22, 2013, 06:38 UTC
Message-ID
<7vvbyhjsp4.fsf@alter.siamese.dyndns.org>
In-Reply-To
<CACsJy8DuXbCTjcVJNH=w6h3zgo0sxRgMfSQXZFtngYy2FLJTDg@mail.gmail.com>
Duy Nguyen <pclouds@gmail.com> writes:
Show 9 quoted lines
>> I am not happy with the choice of "main/HEAD" that would squat on a
>> good name for remote-tracking branch (i.e. s/origin/main/), though.
>> $GIT_DIR/COMMON_HEAD perhaps?
>
> It's not just about HEAD. Anything worktree-specific of the main
> checkout can be accessed this way, e.g. main/index,
> main/FETCH_HEAD.... and it's not exactly "common" because it's
> worktree info. Maybe 1ST_ as the prefix (e.g. 1ST_HEAD, 1ST_index...)
> ?

Do we even need to expose them as ref-like things as a part of the external API/UI in the first place? For end-user scripts that want to operate in a real or borrowing worktree, there should be no reason to touch this "other" repository directly. Things like "if one of the wortrees tries to check out a branch that is already checked out elsewhere, error out" policy may need to consult the other worktrees via $GIT_COMMON_DIR mechanism but at that level we have all the control without contaminating end-user facing ref namespace in a way main/FETCH_HEAD... do. You said

    This makes it possible for a linked checkout to detach HEAD of
    the main one.

but I think that is misguided---it just makes it easier to confuse users, if done automatically and without any policy knob. It instead should error out, while saying which worktree has the branch in question checked out. After all, checking out a branch that is checked out in another worktree (not the common one) needs the same caution, so "main/HEAD" is not the only special one.

And if your updated "git checkout 'frotz'" gives a clear report of which worktree has the branch 'frotz' checked out, the user can go there to detach the HEAD in that worktree to detach with

	git -C $the_other_one checkout HEAD^0
if he chooses to.
Previous: Duy NguyenNext: Duy Nguyen
Message 4 of 7 in “Re: [PATCH v2 00/21] Support multiple worktrees”
  1. Duy NguyenDec 19, 2013
  2. Junio C HamanoDec 20, 2013
  3. Duy NguyenDec 21, 2013
  4. Junio C HamanoDec 22, 2013
  5. Duy NguyenDec 22, 2013
  6. Junio C HamanoDec 26, 2013
  7. Duy NguyenDec 28, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.