git submodules

Dirk Hohndel dirk at hohndel.org
Fri Nov 10 13:39:03 PST 2017


Linus,

Thanks for the detailed explanation.

On Nov 10, 2017, at 1:05 PM, Linus Torvalds <torvalds at linux-foundation.org> wrote:

> On Fri, Nov 10, 2017 at 12:35 PM, Dirk Hohndel <dirk at hohndel.org> wrote:
>> 
>>> 
>>> So I think it could be a good idea, but I do want to warn you:
>>> submodules can be confusing. I would expect the occasional colorful
>>> language until people get used to them.
>> 
>> Oh this sounds so promising.
>> Do tell us about the hiccups you expect - assuming there are “typical”
>> pitfalls beyond “our build scripts and tooling need to change”.
> 
> The most common issue is that people expect submodules to be more
> tightly integrated than they are.

[…]

> In other words, the default git behavior is actually very close to our
> current workflow ("separate project"), just with "added tracking", and
> with the _option_ to recurse into the submodules.

Which seems to be EXACTLY what I want. I don’t want to simply
include libdivecomputer as part of our repo. I just want to have an
easy, consistent, and tool supported way to say “this current SHA
of Subsurface is supposed to go with this specific SHA of libdc”.

[…]

> But people often expect a much more tightly integrated model, where
> the subprojects always get updated together with the top-level
> project, and that's not how it works. It's mainly a "allow tracking"
> model together with support for explicitly recursing if you want to.

Again, you seem to be describing what I want. I’m sure that in a week
or two I will then say “CRAP, THAT is what Linus meant when he said
that”, but that’s ok - I love the learning opportunity :-)

[…]

> See? It's just more complex than I think people expect. It's
> _powerful_, and if you have the right expectations you'll love it, but
> it does need those right expectations.

I think I want to go for it.
For libdivecomputer, libgit2, and googlemaps.

Now comes the 64 Dollar question. Can I trick you into you setting this
up the right way, or do I have to do it wrong first, have you yell at me,
and then have you fix it?

(and can this be done through a PR? because as you know, you DO have
push rights to our repo)

/D



More information about the subsurface mailing list