From: Jeff King <peff@peff.net>
To: Stefan Beller <sbeller@google.com>
Cc: Brandon Williams <bmwill@google.com>,
Junio C Hamano <gitster@pobox.com>,
"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [PATCH 1/2] add: warn when adding an embedded repository
Date: Thu, 15 Jun 2017 02:01:31 -0400 [thread overview]
Message-ID: <20170615060131.cntluubjgkfsiehh@sigill.intra.peff.net> (raw)
In-Reply-To: <CAGZ79kaN=XVe3OWE5DHsMfbzW_rZOdRurgSfpz52dSZDA_V6fg@mail.gmail.com>
On Wed, Jun 14, 2017 at 10:53:12AM -0700, Stefan Beller wrote:
> >> In my ideal dream world of submodules we would have the following:
> >>
> >> $ cat .gitmodules
> >> [submodule "sub42"]
> >> path = foo
> >> # path only in tree!
> >
> > TBH, I am not sure why we need "path"; couldn't we just use the
> > subsection name as an implicit path?
>
> That is what was done back in the time. But then people wanted to rename
> submodules (i.e. move them around in the worktree), so the path is not
> constant, so either we'd have to move around the git dir whenever the
> submodule is renamed (bad idea IMO), or instead introduce a mapping
> between (constant name <-> variable path). So that was done.
Ah, right. That makes sense. I forgot that in addition to the in-tree
path, we have to store the submodule repository itself as some name. The
extra level of indirection there isn't strictly necessary, but it lets
the "name" act as a unique id.
> Historically (IIUC) we had submodule.path.url which then was changed
> to submodule.name.url + name->path resolution. And as a hack(?) or
> easy way out of a problem then, the name is often the same as the path
> hence confusing people, when they see:
>
> [submodule "foo"]
> path = foo
> url = dadada/foo
>
> What foo means what now? ;)
Right, I am such a person that has been confused. ;)
Thanks for explaining.
> Talking about another tangent:
>
> For files there is a rename detection available. For submodules
> It is hard to imagine that there ever will be such a rename detection
> as files have because of the explciit name<->path mapping.
>
> We *know* when a submodule was moved. So why even try
> to do rename detection? As we record only sha1s for a submodule
> you could swap two submodule object names by accident.
> Consider a superproject that contains different kernels, such as
> a kernel for your phone/embedded device and then a kernel for
> your workstation or other device. And these two kernels are different
> for technical reasons but share the same history.
Do you mean during the rename detection phase of a diff, check to see if
.gitmodules registered a change in path for a particular module (by
finding its entry in the diff and looking at both sides), and if so then
mark that as a rename for the submodule paths?
From a cursory glance, that sounds like an interesting approach.
-Peff
next prev parent reply other threads:[~2017-06-15 6:01 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-06 3:56 [BUG?] gitlink without .gitmodules no longer fails recursive clone Jeff King
2017-06-06 18:01 ` Stefan Beller
2017-06-06 18:10 ` Brandon Williams
2017-06-06 18:39 ` Jeff King
2017-06-09 23:19 ` Jeff King
2017-06-10 2:10 ` Junio C Hamano
2017-06-10 7:13 ` Jeff King
2017-06-10 11:12 ` Junio C Hamano
2017-06-12 5:30 ` Stefan Beller
2017-06-13 9:14 ` Jeff King
2017-06-13 9:24 ` [PATCH 1/2] add: warn when adding an embedded repository Jeff King
2017-06-13 17:07 ` Stefan Beller
2017-06-13 17:16 ` Brandon Williams
2017-06-14 6:36 ` Jeff King
2017-06-14 10:54 ` [PATCH v2 0/2] " Jeff King
2017-06-14 10:58 ` [PATCH v2 1/2] add: " Jeff King
2017-06-14 10:58 ` [PATCH v2 2/2] t: move "git add submodule" into test blocks Jeff King
2017-06-14 17:53 ` [PATCH 1/2] add: warn when adding an embedded repository Stefan Beller
2017-06-15 6:01 ` Jeff King [this message]
2017-06-13 17:16 ` Junio C Hamano
2017-06-14 6:38 ` Jeff King
2017-06-13 9:24 ` [PATCH 2/2] t: move "git add submodule" into test blocks Jeff King
2017-06-13 17:15 ` Stefan Beller
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=20170615060131.cntluubjgkfsiehh@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=bmwill@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=sbeller@google.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).