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

Re: [PATCH] pathspec: remove check_path_for_gitlink

From
Stefan Beller <sbeller@google.com>
Date
May 6, 2016, 06:58 UTC
Message-ID
<CAGZ79kaO+g7Dm5AgdYGADj=pYDLjV-ALGTxrmwrNGUy1NB=tNg@mail.gmail.com>
In-Reply-To
<xmqq60ur7ll3.fsf@gitster.mtv.corp.google.com>
On Thu, May 5, 2016 at 11:21 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 20 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>> When deep/in/ is an unrelated repository, and running either
>>
>>     git add deep/in/the
>>     git add deep/in/the/tree
>>
>> would add deep/in/the/tree/is-a-leaf.txt to my index, but if I did
>>
>>     git add deep/in
>>
>> I'd lose that and suddenly everything there turns into a submodule.
>
> Also, I recall that you floated an idea to declare that
>
>     git add deep/in/the/tree/is-a-leaf.txt
>
> must always behave as if this is done instead:
>
>     git -C deep/in/the/tree/ add is-a-leaf.txt
In a different thread, yeah. I am not sure about that any more.
Show 8 quoted lines
>
> Even though I am not a huge fan of an operation that crosses module
> boundaries, I think that is a sensible semantics of a "cross module
> boundary operation" (the actual implementation should not be
> iterating over pathspecs and chdir(2)ing around for each and every
> one of them, though), if we need "cross module boundary operation"
> in order to support end users working on a project with one or more
> submodules at the same time.
I agree.
>
> But treating the bug under discussion as a "feature" will destroy
> that future.

The bug under discussion was blogged about in 2010 and still persists. I'll try to find out if people actually use it.

If that bug was fixed, but I still wanted to enjoy the upsides of it, I could to that with pointing core.worktree into deep/in/tree. e.g. I have git.git and gitk-git as separate repositories, then I could still do a

    GIT_DIR=gitk-git/.git git -C git.git/gitk-git git checkout
<sha1-of-gitk-repo>
This looks more complicated than this bug/feature though.
There are 2 fundamental cases though.
 (1) The bug we're talking about (as explained in that blog), refers to 2
    independent repositories, whose work trees are nested
 (2) You seemed to bring in the notion that the nested repo is considered
    a submodule of the outer repo, i.e. they have a relationship.

I don't mind (1). It's a neat hack as these 2 repos are totally unrelated (except for the working tree in the file system being the same files). You could also achieve a similar handling by hardlinking gitk-git/gitk and git.git/gitk-git/gitk.

In (2), we have a gitlink, which by definition takes up the whole directory. So any file in that directory in the file system which represents the root of the submodule should belong to the submodule.

Previous: Junio C HamanoNext: Junio C Hamano
Message 9 of 16 in “pathspec: remove check_path_for_gitlink”
  1. pathspec: remove check_path_for_gitlinkStefan Beller, May 5, 2016
  2. Junio C HamanoMay 5, 2016
  3. Stefan BellerMay 5, 2016
  4. Junio C HamanoMay 5, 2016
  5. Stefan BellerMay 5, 2016
  6. Junio C HamanoMay 5, 2016
  7. Stefan BellerMay 6, 2016
  8. Junio C HamanoMay 6, 2016
  9. Stefan BellerMay 6, 2016
  10. Junio C HamanoMay 6, 2016
  11. Duy NguyenMay 6, 2016
  12. Stefan BellerMay 6, 2016
  13. Junio C HamanoMay 6, 2016
  14. Stefan BellerMay 6, 2016
  15. Junio C HamanoMay 6, 2016
  16. Duy NguyenMay 7, 2016

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.