From: Jens Lehmann <Jens.Lehmann@web.de>
To: Max Kirillov <max@max630.net>
Cc: Duy Nguyen <pclouds@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH/RFC v2] Squashed changes for multiple worktrees vs. submodules
Date: Mon, 08 Dec 2014 21:40:59 +0100 [thread overview]
Message-ID: <54860CDB.9090904@web.de> (raw)
In-Reply-To: <20141207064230.GA9782@wheezy.local>
Am 07.12.2014 um 07:42 schrieb Max Kirillov:
> On Sat, Dec 06, 2014 at 02:06:08PM +0100, Jens Lehmann wrote:
>> Am 05.12.2014 um 07:32 schrieb Max Kirillov:
>>> Currently I'm estimating approach when submodules which have .git
>>> file or directory inside are updated, and those which do not have it are not.
>>> I have added a config variable submodule.updateIgnoringConfigUrl (because
>>> usually the submodule.<name>.url is what turns on the update). It looks working,
>>> maybe I even add setting the variable when chackout --to is used.
>
>> But it's not only submodule.<name>.url, the list goes on with
>> update, fetch & ignore and then there are the global options
>> like diff.submodule, diff.ignoreSubmodules and some more.
>
> I believe that parameters are important for some use, but I
> know several tesns of git users who have no idea bout them,
> and I myself only learned about them while working on this.
But we still want to support them all properly, no?
> To have some a submodule not initialized in some sorktree is
> what I really need. I was sure before it is managed by
> having the submodule checked out. Probably I just did not
> run `submodule update` in the worktree where did not use
> submodules, but I cannot rely on it. I see now from
> 211b7f19c7 that adding parameter for all updates will break
> the initalization. Maybe it would be better to have a
> runtime argument: `git submodule update --ignore-config-url`
Huh? I think we already have that: If you ignore the url
config it's as if the submodule was never initialized, so
you can just *not* run the "git submodule update" command
at all to get that effect. No new option needed ;-)
>> Thanks to you and Duy for discussing this with me! I'd sum it
>> up like this:
>>
>> *) Multiple worktrees are meant to couple separate worktrees
>> with a single repository to avoid having to push and fetch
>> each time to sync refs and also to not having to sync
>> settings manually (with the benefit of some disk space
>> savings). That's a cool feature and explains why a branch
>> should be protected against being modified in different
>> worktrees.
>
> I should notify that I am not the author of the feature,
> maybe Duy have some other vision.
>
>> The first level submodule settings are shared between the
>> multiple worktrees; submodule objects, settings and refs
>> aren't (because the .git/modules directory isn't shared).
>>
>> Looks like that would work with just what we have now, no?
>
> Yes, very much like what I proposed in $gmane/258173, but I
> need to have something about preventing checkout. And I
> should review what I've done since that, maybe there are
> more things to fix.
Hmm, I do not get the "preventing checkout" part. If you ran
"git submodule init <path>" in just one of the multiple work
trees a later "git submodule update" in any of the multiple
work trees will checkout the submodule there. The only way I
can imagine to change that is to implement separate worktree
configurations for each of the multiple worktrees.
>> *) I'd love to see a solution for sharing the object database
>> between otherwise unrelated clones of the same project (so
>> that fetching in one clone updates the objects in the common
>> dir and gc cannot throw anything away used by one of the
>> clones). But I'd expect a bare repository as the common one
>> where we put the worktrees refs into their own namespaces.
>
> There is a GIT_NAMESPACE already, maybe it should be just
> extended to work with all commands?
As you already noticed, it isn't a solution for my problem.
> btw, have you tried alternates? It does reduce the number of
> objects you need to keep very strongly. You can put in the
> alternate store only released branches which are guaranteed
> to be not force-updated, to avoid issues with missing
> objects, and it still helps.
Which is exactly what we do *not* want to do on a CI server,
its purpose is to endlessly build development branches that
are force-updated on a regular basis.
next prev parent reply other threads:[~2014-12-08 20:41 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-30 23:27 [PATCH/RFC v2] Squashed changes for multiple worktrees vs. submodules Max Kirillov
2014-12-01 10:43 ` Duy Nguyen
2014-12-01 14:47 ` Max Kirillov
2014-12-02 20:45 ` Jens Lehmann
2014-12-02 22:16 ` Max Kirillov
2014-12-04 20:06 ` Jens Lehmann
2014-12-05 1:33 ` Duy Nguyen
2014-12-06 12:44 ` Jens Lehmann
2014-12-05 6:32 ` Max Kirillov
2014-12-06 13:06 ` Jens Lehmann
2014-12-07 6:42 ` Max Kirillov
2014-12-07 9:15 ` Max Kirillov
2014-12-08 20:40 ` Jens Lehmann [this message]
2014-12-08 21:49 ` Max Kirillov
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=54860CDB.9090904@web.de \
--to=jens.lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--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).