login
Header Space

 
 

Re: [RFC] Submodules in GIT

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Josef Weidendorfer <Josef.Weidendorfer@...>
Cc: sf <sf@...>, <git@...>, Martin Waitz <tali@...>
Date: Friday, December 1, 2006 - 7:30 pm

On Fri, 1 Dec 2006, Josef Weidendorfer wrote:

Umm? I don't get the issue. A submodule is a git repo in its own right, 
and you clone it exactly like you'd clone any other repo. It _does_ have a 
HEAD. It has it's own branches. It has everything.

So when you clone a submodule, you always get all those branches. The 
supermodule will not _point_ to them all (the branches are local to the 
submodule, and _will_ depend on things like "which upstreams module am I 
tracking"), but they'll have to be there, exactly _because_ the submodule 
has an existence and is tracked on its own.

In the trivial case where the submodule doesn't even _have_ any external 
existence at all (ie it's always maintained as _just_ a submodule, it 
would probably tend to have just one branch, and a clone would get 
whatever that branch is), but that's just a degenerate special case of the 
much richer "this submodule actually has a life of its own" case.


The current commit within the supermodule would be _totally_ invisible to 
the submodule.

Of course, if HEAD _differs_ from that commit within the supermodule, then 
a "git diff" (when done from within the supermodule) should show that, but 
again, that's actually only as seen from the _supermodule_. 


That's entirely a question for the submodule. You cannot ask that question 
within the confines of the supermodule, because it's not even a relevant 
question in that context. Two different supermodule repositories may well 
decide to get their submodules from difference places, just because they 
got cloned from different places (or even just for practical reasons like 
"that other site is closer to me").

So the official upstream of a submodule must NOT be encoded inside the 
supermodule (or at least not within its _objects_). Exactly because the 
upstream location is not a "global" thing - it's per-repository, and thus 
must not be encoded in the global data (ie the objects).

It should be be encoded in some _ephemeral_ place, eg in the ".git/config" 
file or in a ".git/remotes/origin"-like file (either in the supermodule or 
the submodule, and I would seriously suggest you do it within in the 
submodule itself, because you'll want it exactly when you decide to work 
on the submodule and upgrade _that_).


The only thing that a submodule must NOT be allowed to do on its own is 
pruning (and it's distant cousin "git repack -d"). You must always prune 
from the supermodule, because the submodule cannot really know on its own 
what references point into it.

(There are alternatives. One alternative is to never allow rewinding - or 
deletion - of branches in a submodule, and thus solve the problem that 
way. That is the easier solution, because it also means that a "clone" of 
a supermodule can just recursively clone the submodules independently 
_without_ having to worry about reachability, but it's really _really_ 
draconian).


This, I think, requires too much configuration to say separately for every 
possible submodule, so I would suggest that the way to make that decision 
is:

 - "git clone" by default will fetch and check out all submodules (and 
   obviously they have to be described some way outside of the object 
   database, just so that you don't have to parse the _whole_ history of 
   the _whole_ supermodule just to find all possible submodules. So the 
   supermodule _will_ need some "list of submodules and where to get them" 
   in a config file or other).

 - add a flag (possibly just re-use the current "-n" flag) that disables 
   that recursive fetching of submodules entirely.

 - have a way to fetch individual submodules one-by-one (that capacity 
   obviously has to be there anyway, since the "recursive" git clone has 
   to be able to do it, so this is likely just "git clone" again, with 
   just logic added to say "when you clone something and are _already_ 
   within a superproject, the clonee becomes a subproject automatically"

I dunno. And I'd also like to point out that things don't have to all work 
fully before we can do at least some cases of this. For example, if the 
initial version just always clones everything, big deal. I'm not saying 
that we have to have support for things like this on "Day 1", I'm just 
saying that I think people will want to be able to not fetch and check out 
everything, so the design should _allow_ for it.

(But I also think that as long as submodules are independent enough, the 
"design" part should fall out on its own, and it just becomes a "small 
matter of programming" to actually get it to work).

		Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [RFC] Submodules in GIT, Jakub Narebski, (Tue Nov 28, 6:50 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Tue Nov 28, 9:35 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Wed Nov 29, 12:03 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Wed Nov 29, 4:00 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Thu Nov 30, 1:06 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 5:02 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 7:00 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 8:09 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 8:12 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 9:05 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 9:35 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 9:51 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 10:58 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 11:47 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 12:54 pm)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 1:33 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 3:17 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 3:38 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 5:04 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 5:37 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 5:54 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 6:08 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sat Dec 2, 6:04 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:40 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 9:50 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:43 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 9:02 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 2:48 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 7:34 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 3:46 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 9:43 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 9:46 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 10:52 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 11:00 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 12:38 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 12:57 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 2:08 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 2:51 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 12:49 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 1:14 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 1:08 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 4:13 pm)
Re: [RFC] Submodules in GIT, Jon Loeliger, (Fri Dec 8, 2:29 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 12, 4:32 am)
Re: [RFC] Submodules in GIT, Sven Verdoolaege, (Fri Dec 8, 2:45 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 6:35 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 6:06 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 6:26 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 6:55 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 7:30 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 8:14 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 8:33 pm)
Re: [RFC] Submodules in GIT, Michael K. Edwards, (Mon Dec 4, 2:56 pm)
Re: [RFC] Submodules in GIT, Sam Vilain, (Mon Dec 4, 9:31 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sat Dec 2, 5:27 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 7:07 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 6:41 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 7:09 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:12 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 7:49 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sat Dec 2, 2:57 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 3:41 pm)
Re: [RFC] Submodules in GIT, R. Steve McKown, (Sat Dec 9, 5:34 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sun Dec 10, 7:47 am)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Thu Dec 14, 5:27 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Thu Dec 14, 7:07 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 1:43 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 15, 5:42 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 7:43 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 9:13 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 15, 9:49 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 15, 10:12 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sat Dec 16, 4:50 am)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 9:20 pm)
Re: [RFC] Submodules in GIT, Daniel Barkalow, (Mon Dec 4, 10:33 pm)
Re: [RFC] Submodules in GIT, sf, (Tue Dec 5, 6:07 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sun Dec 3, 3:33 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sun Dec 3, 5:19 am)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sun Dec 3, 1:54 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Mon Dec 4, 4:26 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Mon Dec 4, 4:41 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 6:38 am)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Mon Dec 4, 5:36 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 6:42 am)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 7:36 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 8:12 pm)
Re: [RFC] Submodules in GIT, Sven Verdoolaege, (Sun Dec 3, 6:16 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sun Dec 3, 6:32 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Mon Dec 4, 7:12 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:18 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 4:44 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sun Dec 3, 4:46 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 5:22 pm)
Thoughts about memory requirements in traversals [Was: Re: [..., Josef Weidendorfer, (Sat Dec 2, 10:07 pm)
Re: Thoughts about memory requirements in traversals [Was: R..., Josef Weidendorfer, (Sat Dec 2, 11:21 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 5:06 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 5:29 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 7:32 am)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 3:52 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:21 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 4:46 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:58 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 9:11 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sat Dec 2, 5:22 am)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 7:03 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 6:12 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 7:17 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:24 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 8:55 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sun Dec 3, 2:29 am)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 6:26 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 6:40 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 4:30 pm)
Re: [RFC] Submodules in GIT, Alan Chandler, (Fri Dec 1, 7:23 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 2:06 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Thu Nov 30, 2:57 pm)
Re: [RFC] Submodules in GIT, Uwe Kleine-Koenig, (Tue Dec 5, 5:01 am)
Re: [RFC] Submodules in GIT, Sven Verdoolaege, (Tue Dec 5, 12:00 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 6:33 am)
Re: [RFC] Submodules in GIT, Uwe Kleine-Koenig, (Tue Dec 5, 11:02 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 11:30 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 8:03 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 8:11 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 9:21 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 9:43 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 10:23 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 11:07 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 12:04 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 12:15 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 4:49 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 5:33 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 6:38 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Thu Nov 30, 8:16 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Thu Nov 30, 8:40 am)
Re: [RFC] Submodules in GIT, Steven Grimm, (Tue Nov 28, 3:58 pm)
Re: [RFC] Submodules in GIT, Shawn Pearce, (Tue Nov 28, 5:02 pm)
Re: [RFC] Submodules in GIT, Shawn Pearce, (Tue Nov 28, 11:44 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Tue Nov 28, 12:29 pm)
Re: [RFC] Submodules in GIT, sf, (Thu Nov 30, 7:57 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Wed Nov 29, 12:15 pm)
Re: [RFC] Submodules in GIT, Jon Loeliger, (Tue Nov 28, 1:38 pm)
Re: [RFC] Submodules in GIT, Shawn Pearce, (Tue Nov 28, 12:36 pm)
speck-geostationary