Re: [PATCH 1/2] store submodule in common dir
- From
Stefan Beller <sbeller@google.com>
- Date
- Aug 14, 2018, 23:23 UTC
- Message-ID
- <CAGZ79kbhwyMTmnwhuaOLOnffaEX_G1L7dR=qvV6Rjncq0POq7g@mail.gmail.com>
- In-Reply-To
- <xmqqo9e4y2gr.fsf@gitster-ct.c.googlers.com>
On Tue, Aug 14, 2018 at 4:04 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 36 quoted lines
> > Stefan Beller <sbeller@google.com> writes: > > > Signed-off-by: Stefan Beller <sbeller@google.com> > > --- > > path.c | 1 + > > 1 file changed, 1 insertion(+) > > > > On Tue, Aug 14, 2018 at 3:27 PM Joakim Tjernlund <Joakim.Tjernlund@infinera.com> wrote: > >> > >> I am trying to create 3 submodules from the same git repo, each pointing to a different branch. > >> Since the repo is somewhat large, I don't want the 3 submodules to clone the same repo 3 > >> times, I want one clone and then have the 3 submodules to point to different commits. > >> > >> Is this possible? If not, could it be added? > > > > yup. > > > > According to recent discussions, it would be just this patch. > > (plus some unspecified amount of work, TBD). > > > > I thought about proposing something proper later, but here is the WIP patch. > > > > Thanks, > > Stefan > > My understanding of what Joakim wants to do is to have a top-level > project that has three subdirectories, e.g. kernel/v2.2, kernel/v2.4 > and kernel/v2.6, each of which is a submodule that houses these > versions of Linux kernel source, but only clone Linus's repository > (as the up-to-late tree has all the necessary history to check out > these past development tracks). And that should be doable with > just the main checkout, without any additional worktree (it's just > the matter of having .git/modules/kernel%2fv2.6/ directory pointed > by two symlinks from .git/modules/kernel%2fv2.[24], or something > like that).
Ah! I misunderstood due to fast reading.
For that I think you are interested in the feature added in d92a39590d1 (Add --reference option to git submodule., 2009-05-04), i.e. both the update and add command take the --reference flag that can be pointed at another repository such as an outside clone of these three submodules, so some deduplication will be performed.
Show 7 quoted lines
> Isn't "common_dir" stuff used to decide if each of separate > "worktree" instance (of the superproject) shares ".git/$stuff" > with each other? > > Unless I am grossly misinterpreting the original question, I fail to > see how changing .git/modules to be shared across worktrees possibly > affects anything. I am puzzled...
I did misunderstand grossly.
Stefan