git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jens Lehmann <Jens.Lehmann@web.de>
To: Max Kirillov <max@max630.net>, Junio C Hamano <gitster@pobox.com>
Cc: Duy Nguyen <pclouds@gmail.com>, Heiko Voigt <hvoigt@hvoigt.net>,
	Johannes Schindelin <johannes.schindelin@gmx.de>,
	Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH 0/4] Multiple worktrees vs. submodules fixes
Date: Tue, 14 Oct 2014 21:51:22 +0200	[thread overview]
Message-ID: <543D7EBA.4040206@web.de> (raw)
In-Reply-To: <20141014183431.GA8157@wheezy.local>

Am 14.10.2014 um 20:34 schrieb Max Kirillov:
> On Tue, Oct 14, 2014 at 10:26:42AM -0700, Junio C Hamano wrote:
>> And multiple-worktree _is_ about keeping the same repository and
>> history data (i.e. object database, refs, rerere database, reflogs for
>> refs/*) only once, while allowing multiple working trees attached to
>> that single copy.
>>
>> So it appears to me that to create a checkout-to copy of a
>> superproject with a submodule, a checkout-to copy of the superproject
>> would have a submodule, which is a checkout-to copy of the submodule
>> in the superproject.
>
> That's right, this linking should be more implicit.

Yep. And for the submodule of a submodule too ... ;-)

> But here are a lot of nuances. For example, it makes sense to have a
> superproject checkout without submodules being initialized (so that they
> don't waste space and machine time for working tree, which often is more
> than repository data).

Hmm, I'm not sure if this is a problem. If the GIT_COMMON_DIR does have
the submodule repo but it isn't initialized locally, we shouldn't have a
problem (except for wasting some disk space if not a single checkout-to
superproject initializes this submodule). And if GIT_COMMON_DIR does not
have the submodule repo yet, wouldn't it be cloned the moment we init
the submodule in the checkout-to? Or would that need extra functionality?

 > And it may happen so that this checkout is the
> master repository for superproject checkouts. But this should not
> prevent users from using initialized submodules in other checkouts.

I could live with the restriction that submodule's GIT_COMMON_DIRs always
live in their checkout-to superproject's GIT_COMMON_DIR. This would still
be an improvement for CI servers that have multiple clones of a super-
project, as they would all share their submodule common dirs at least
per superproject.

> Then, a checkout copy of a submodule can be standalone (for example, git
> and git-html-docs are submodules of msysgit). Or, it can even belong to
> some other superproject. And in that cases they still should be able to
> be linked.

Maybe such configurations would have to be handled manually to achieve
maximum savings. At least I could live with that.

> Considering all above, and also the thing that I am quite new to
> submodules (but have to use them currently), I did not intend to create
> any new UI, only to make backend handle the already existing linked
> checkouts, which can be made manually.

Maybe the way to go is to restrict GIT_COMMON_DIR to superprojects and
have a distinct GIT_COMMON_MODULES_DIR? We could even set that to the
same location for all submodules of different superprojects to achieve
minimum disk footprint (assuming they all have different names across
all superprojects and recursion levels).

Hmm, so I tend towards adding GIT_COMMON_DIR to local_repo_env until
we figured out how to handle this. Without that I fear bad things will
happen, at least for a superproject with multiple checkout-to work trees
where the same submodule is initialized more than once ...

  reply	other threads:[~2014-10-14 19:51 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-12  5:13 [PATCH 0/4] Multiple worktrees vs. submodules fixes Max Kirillov
2014-10-12  5:13 ` [PATCH 1/4] checkout: do not fail if target is an empty directory Max Kirillov
2014-10-12  5:13 ` [PATCH 2/4] submodule refactor: use git_path_submodule() in add_submodule_odb() Max Kirillov
2014-10-12  5:13 ` [PATCH 3/4] git-common-dir: make "modules/" per-working-directory directory Max Kirillov
2014-10-12  5:13 ` [PATCH 4/4] path: implement common_dir handling in git_path_submodule() Max Kirillov
2014-10-14 12:17 ` [PATCH 0/4] Multiple worktrees vs. submodules fixes Duy Nguyen
2014-10-14 17:09   ` Jens Lehmann
2014-10-14 17:26     ` Junio C Hamano
2014-10-14 18:34       ` Max Kirillov
2014-10-14 19:51         ` Jens Lehmann [this message]
2014-10-14 22:15           ` Max Kirillov
2014-10-15 14:14             ` Duy Nguyen
2014-10-15 18:57             ` Jens Lehmann
2014-10-16 20:54               ` Max Kirillov
2014-10-19 19:30                 ` Jens Lehmann
2014-10-20  4:11                   ` Max Kirillov
2014-11-03 12:54                     ` Duy Nguyen
2014-11-03 20:57                       ` Jens Lehmann
2014-11-03 22:07                       ` Max Kirillov
2014-10-14 20:31     ` Max Kirillov
2014-10-15 13:08       ` Duy Nguyen
2014-10-15 17:09         ` Junio C Hamano
2014-10-17  9:14           ` Duy Nguyen
2014-10-19 19:34             ` Jens Lehmann

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=543D7EBA.4040206@web.de \
    --to=jens.lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=hvoigt@hvoigt.net \
    --cc=johannes.schindelin@gmx.de \
    --cc=max@max630.net \
    --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.
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 NNTP newsgroup(s).