All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Kirillov <max@max630.net>
To: Jens Lehmann <Jens.Lehmann@web.de>
Cc: Junio C Hamano <gitster@pobox.com>,
	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: Wed, 15 Oct 2014 01:15:09 +0300	[thread overview]
Message-ID: <20141014221509.GA10580@wheezy.local> (raw)
In-Reply-To: <543D7EBA.4040206@web.de>

On Tue, Oct 14, 2014 at 09:51:22PM +0200, Jens Lehmann wrote:
> Am 14.10.2014 um 20:34 schrieb Max Kirillov:
>> 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).

If initially a repository is clone without submodules, it
will not have anything in the GIT_COMMON_DIR.

> 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?

I cannot say I like this. Network operations should be
caused only by clone and submodules.

I think the logic can be simple: it a submodule is not
checked-out in the repository "checkout --to" is called
from, then it is not checked-out to the new one also. If it
is, then checkout calls itself recursively in the submodule
and works like being run in standalone repository.

>> 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.

To make manual handling of the cases, and to skip
checking-out a module.

I would think about the following interface:

$ git checkout --to ... - does not checkout submodules,
creates empty directory.

$ git checkout --recursive --to ... - if a submodule is
checked-out in source repository, recursed there and run
"checkout --recursive" again. If a submodule is not
checked-out, does not checkout it, creates an empty
directory.

By the way, I have found your branch
recursive_submodule_checkout. Would you like to revive it?
Then it can be done with the same option.

> 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 ...

I learned about local_repo_env and agree it should include
GIT_COMMON_DIR. Unless it is removed at all...

  reply	other threads:[~2014-10-14 22:16 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
2014-10-14 22:15           ` Max Kirillov [this message]
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=20141014221509.GA10580@wheezy.local \
    --to=max@max630.net \
    --cc=Jens.Lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=hvoigt@hvoigt.net \
    --cc=johannes.schindelin@gmx.de \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.