git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Linus Torvalds <torvalds@osdl.org>
To: Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
Cc: sf <sf@b-i-t.de>,
	git@vger.kernel.org, Martin Waitz <tali@admingilde.org>
Subject: Re: [RFC] Submodules in GIT
Date: Fri, 1 Dec 2006 15:30:32 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.64.0612011510290.3695@woody.osdl.org> (raw)
In-Reply-To: <200612012355.03493.Josef.Weidendorfer@gmx.de>



On Fri, 1 Dec 2006, Josef Weidendorfer wrote:
> 
> What about my other argument for a submodule namespace:
> You want to be able to move the relative root path of a submodule
> inside of your supermodule, but yet want to have a unique name
> for the submodule:
> - to be able to just clone a submodule without having to know
> the current position in HEAD

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.

> - more practically, e.g. to be able to name a submodule
> independent from any current commit you are on in the supermodule,
> e.g. to be able to store some meta information about a submodule:

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

> - "Where is the official upstream of this submodule?"

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

> - "Should git allow to commit rewind actions of this submodule
>    in the supermodule?" (which, AFAICS, exactly has the same
>    problems as publishing a rewound branch: you will get into
>    merge hell when you want to pull upstream changes into the
>    supermodule)

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

> - "Should this submodule be checked out?"

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


  parent reply	other threads:[~2006-12-01 23:32 UTC|newest]

Thread overview: 252+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-20 21:51 [RFC] Submodules in GIT Martin Waitz
2006-11-20 22:16 ` Jakub Narebski
2006-11-20 22:28   ` Martin Waitz
2006-11-20 22:43   ` Junio C Hamano
2006-11-20 23:02     ` Jakub Narebski
2006-11-20 23:52       ` Martin Waitz
2006-11-21  1:31       ` Sam Vilain
2006-11-20 23:05     ` Linus Torvalds
2006-11-20 23:25       ` J. Bruce Fields
2006-11-20 23:33         ` Martin Waitz
2006-11-21 18:01           ` J. Bruce Fields
2006-11-21 19:32             ` Martin Waitz
2006-11-20 23:29       ` Martin Waitz
2006-11-21  0:10       ` Junio C Hamano
2006-11-21  0:42         ` Jakub Narebski
2006-11-21  6:21           ` Martin Waitz
2006-11-21 10:04             ` Jakub Narebski
2006-11-21 11:49               ` Martin Waitz
2006-11-21  6:27         ` Martin Waitz
2006-11-21  7:36           ` Junio C Hamano
2006-11-21  7:55             ` Martin Waitz
2006-11-21 22:31       ` Yann Dirson
2006-11-21 22:51         ` Linus Torvalds
2006-11-21 22:59           ` Linus Torvalds
2006-11-21 23:54           ` Yann Dirson
2006-11-22  3:40             ` Shawn Pearce
2006-11-23 23:23               ` Yann Dirson
2006-11-25  6:53                 ` Shawn Pearce
2006-11-25 11:12                   ` Yann Dirson
2006-11-25 18:57                     ` Linus Torvalds
2006-11-25 19:19                       ` Steven Grimm
2006-11-25 19:30                         ` Linus Torvalds
2006-11-25 23:49                           ` Yann Dirson
2006-11-26  1:14                             ` Sven Verdoolaege
2006-11-26  1:32                               ` Yann Dirson
2006-11-26  3:39                             ` Linus Torvalds
2006-11-26  8:05                               ` Daniel Barkalow
2006-11-28  9:36                                 ` Andreas Ericsson
2006-11-28 10:29                                   ` Andy Parkins
2006-11-28 10:50                                     ` Jakub Narebski
2006-11-28 13:35                                       ` Andy Parkins
2006-11-28 15:44                                         ` Shawn Pearce
2006-11-28 16:29                                           ` Andy Parkins
2006-11-28 16:36                                             ` Shawn Pearce
2006-11-28 17:38                                             ` Jon Loeliger
2006-11-29 16:15                                             ` Martin Waitz
2006-11-30 11:57                                             ` sf
     [not found]                                               ` <200611301255.41733.andyparkins@gmail.com>
2006-11-30 14:00                                                 ` Stephan Feder
2006-11-30 14:49                                                   ` Andy Parkins
2006-11-30 15:20                                                     ` Sven Verdoolaege
2006-11-30 15:30                                                       ` Andy Parkins
2006-11-30 15:50                                                         ` Andreas Ericsson
2006-11-30 16:08                                                           ` Andy Parkins
2006-11-30 16:33                                                         ` Sven Verdoolaege
2006-12-01  0:01                                                           ` Andy Parkins
2006-12-01  0:11                                                             ` Jakub Narebski
2006-12-01  9:32                                                             ` Sven Verdoolaege
2006-12-01 10:19                                                               ` Andy Parkins
2006-11-30 17:19                                                         ` Martin Waitz
2006-11-30 16:05                                                     ` sf
2006-11-30 16:12                                                       ` sf
2006-12-01  9:19                                                       ` Andy Parkins
2006-12-01  9:57                                                         ` Martin Waitz
2006-12-01 10:29                                                           ` Andy Parkins
2006-12-01 10:42                                                             ` Sven Verdoolaege
2006-12-01 11:02                                                               ` Andy Parkins
2006-12-01 11:10                                                                 ` Sven Verdoolaege
2006-12-01 11:45                                                                   ` sf
2006-12-01 12:12                                                                   ` Andy Parkins
2006-12-01 12:28                                                                     ` Martin Waitz
2006-12-01 14:11                                                                       ` Andy Parkins
2006-12-01 15:12                                                                         ` Martin Waitz
2006-12-01 11:46                                                                 ` Martin Waitz
2006-12-01 12:16                                                                   ` Andy Parkins
2006-12-01 12:34                                                                     ` Martin Waitz
2006-12-01 13:59                                                                       ` Andy Parkins
2006-12-01 14:07                                                                         ` Martin Waitz
2006-12-01 11:31                                                             ` Martin Waitz
2006-12-01 12:20                                                               ` Andy Parkins
2006-12-01 12:37                                                                 ` Martin Waitz
2006-12-02 15:16                                                                   ` Jakub Narebski
2006-11-28 19:58                                         ` Steven Grimm
2006-11-28 21:02                                           ` Shawn Pearce
2006-11-29 16:03                                         ` Martin Waitz
2006-11-29 20:00                                           ` Andy Parkins
2006-11-30 12:16                                             ` Andreas Ericsson
2006-11-30 12:40                                               ` Andy Parkins
2006-11-30 17:06                                             ` Martin Waitz
2006-11-30 18:57                                               ` Andreas Ericsson
2006-12-01  8:49                                                 ` Andy Parkins
2006-12-01  9:33                                                   ` Andreas Ericsson
2006-12-01 10:38                                                     ` Andy Parkins
2006-12-01 12:03                                                 ` sf
2006-12-01 12:11                                                   ` Martin Waitz
2006-12-01 13:21                                                     ` sf
2006-12-01 13:43                                                       ` Martin Waitz
2006-12-01 14:23                                                         ` Stephan Feder
2006-12-01 15:07                                                           ` Martin Waitz
2006-12-01 16:04                                                             ` Stephan Feder
2006-12-01 16:15                                                               ` Martin Waitz
2006-12-05  9:01                                                 ` Uwe Kleine-Koenig
2006-12-05 10:33                                                   ` Andreas Ericsson
2006-12-05 11:11                                                     ` Jakub Narebski
2006-12-05 15:02                                                     ` Uwe Kleine-Koenig
2006-12-05 15:30                                                       ` Andreas Ericsson
2006-12-05 16:00                                                   ` Sven Verdoolaege
2006-12-01  9:02                                               ` Andy Parkins
2006-12-01 11:00                                                 ` Martin Waitz
2006-12-01 12:09                                                   ` sf
2006-12-01 12:12                                                     ` Martin Waitz
2006-12-01 13:05                                                       ` sf
2006-12-01 13:35                                                         ` Martin Waitz
2006-12-01 13:43                                                           ` Andreas Ericsson
2006-12-01 13:46                                                             ` Martin Waitz
2006-12-01 14:52                                                               ` Andreas Ericsson
2006-12-01 15:00                                                                 ` Martin Waitz
2006-12-01 16:38                                                                   ` Andreas Ericsson
2006-12-01 16:49                                                                     ` Linus Torvalds
2006-12-01 17:08                                                                       ` sf
2006-12-01 18:06                                                                         ` Andreas Ericsson
2006-12-01 20:13                                                                         ` Linus Torvalds
2006-12-01 20:30                                                                           ` Martin Waitz
2006-12-01 23:23                                                                             ` Alan Chandler
2006-12-01 22:06                                                                           ` Josef Weidendorfer
2006-12-01 22:12                                                                             ` Martin Waitz
2006-12-01 22:26                                                                               ` Josef Weidendorfer
2006-12-01 22:40                                                                                 ` Martin Waitz
2006-12-01 23:17                                                                               ` Josef Weidendorfer
2006-12-02 20:24                                                                                 ` Martin Waitz
2006-12-03  0:55                                                                                   ` Josef Weidendorfer
2006-12-03  6:29                                                                                     ` Martin Waitz
2006-12-01 22:26                                                                             ` Linus Torvalds
2006-12-01 22:41                                                                               ` sf
2006-12-01 23:03                                                                                 ` Josef Weidendorfer
2006-12-01 23:09                                                                                 ` Linus Torvalds
2006-12-01 23:36                                                                                   ` Josef Weidendorfer
2006-12-02  0:12                                                                                     ` Linus Torvalds
2006-12-02  9:22                                                                                       ` Andy Parkins
     [not found]                                                                                         ` <200612021255.59972.Josef.Weidendorfer@gmx.de>
2006-12-03  9:42                                                                                           ` Andy Parkins
2006-12-02 11:32                                                                                       ` Josef Weidendorfer
2006-12-02 19:52                                                                                         ` Linus Torvalds
2006-12-02 20:21                                                                                           ` Martin Waitz
2006-12-02 20:46                                                                                             ` Linus Torvalds
2006-12-02 20:58                                                                                               ` Martin Waitz
2006-12-03  1:11                                                                                                 ` Josef Weidendorfer
2006-12-02 20:18                                                                                       ` Martin Waitz
2006-12-02 20:44                                                                                         ` Linus Torvalds
2006-12-02 21:06                                                                                           ` Martin Waitz
2006-12-02 21:29                                                                                             ` Linus Torvalds
2006-12-02 21:22                                                                                           ` Linus Torvalds
2006-12-03  2:07                                                                                             ` Thoughts about memory requirements in traversals [Was: Re: [RFC] Submodules in GIT] Josef Weidendorfer
2006-12-03  2:25                                                                                               ` Linus Torvalds
2006-12-03  2:46                                                                                               ` Shawn Pearce
2006-12-03  3:21                                                                                                 ` Josef Weidendorfer
2006-12-03 11:10                                                                                                   ` Jakub Narebski
2006-12-03 11:47                                                                                                     ` Josef Weidendorfer
2006-12-03 20:46                                                                                           ` [RFC] Submodules in GIT Martin Waitz
2006-12-03 22:16                                                                                       ` Sven Verdoolaege
2006-12-03 22:32                                                                                         ` Linus Torvalds
2006-12-03 22:49                                                                                           ` Jakub Narebski
2006-12-04 11:12                                                                                           ` Josef Weidendorfer
2006-12-01 23:49                                                                                   ` sf
2006-12-02 18:57                                                                                     ` Torgil Svensson
2006-12-02 19:41                                                                                       ` Linus Torvalds
2006-12-03  9:19                                                                                         ` Torgil Svensson
2006-12-03 17:54                                                                                           ` Linus Torvalds
2006-12-04 20:26                                                                                             ` Torgil Svensson
2006-12-04 20:41                                                                                               ` Linus Torvalds
2006-12-04 21:36                                                                                                 ` Torgil Svensson
2006-12-05 10:42                                                                                                   ` Andreas Ericsson
2006-12-05 11:09                                                                                                     ` Jakub Narebski
2006-12-05 10:38                                                                                                 ` Andreas Ericsson
2006-12-05 11:01                                                                                                   ` Jakub Narebski
2006-12-03 19:33                                                                                         ` Andy Parkins
2006-12-05  2:33                                                                                         ` Daniel Barkalow
2006-12-05 22:07                                                                                           ` sf
2006-12-09 21:34                                                                                         ` R. Steve McKown
2006-12-10 11:47                                                                                           ` Torgil Svensson
2006-12-14 21:27                                                                                             ` Torgil Svensson
2006-12-14 23:07                                                                                               ` Josef Weidendorfer
2006-12-15 17:43                                                                                                 ` Torgil Svensson
2006-12-15 21:42                                                                                                   ` Josef Weidendorfer
2006-12-15 23:43                                                                                                     ` Torgil Svensson
2006-12-16  1:13                                                                                                       ` Torgil Svensson
2006-12-16  1:20                                                                                                         ` Torgil Svensson
2006-12-16  1:34                                                                                                           ` Jakub Narebski
2006-12-16  8:40                                                                                                             ` Torgil Svensson
2006-12-16  9:57                                                                                                               ` Jakub Narebski
2006-12-16 10:25                                                                                                                 ` Junio C Hamano
2006-12-16 15:05                                                                                                                 ` Torgil Svensson
2006-12-16 15:38                                                                                                                   ` Torgil Svensson
2006-12-16 16:32                                                                                                                   ` Jakub Narebski
2006-12-17  0:21                                                                                                                     ` Torgil Svensson
2006-12-16  1:49                                                                                                         ` Linus Torvalds
2006-12-16  2:12                                                                                                           ` Linus Torvalds
2006-12-16  8:50                                                                                                             ` Torgil Svensson
2006-12-02 20:12                                                                                   ` Martin Waitz
2006-12-01 22:55                                                                               ` Josef Weidendorfer
2006-12-01 23:07                                                                                 ` Martin Waitz
2006-12-01 23:30                                                                                 ` Linus Torvalds [this message]
2006-12-02  0:14                                                                                   ` Josef Weidendorfer
2006-12-02  0:33                                                                                     ` Linus Torvalds
2006-12-02  9:27                                                                                       ` Andy Parkins
2006-12-04 18:56                                                                                       ` Michael K. Edwards
2006-12-05  1:31                                                                                         ` Sam Vilain
2006-12-01 22:35                                                                           ` sf
2006-12-08 18:29                                                                           ` Jon Loeliger
2006-12-08 18:45                                                                             ` Sven Verdoolaege
2006-12-12  8:32                                                                             ` Andreas Ericsson
2006-12-01 17:14                                                                       ` Martin Waitz
2006-12-01 16:57                                                                     ` Martin Waitz
2006-12-01 18:08                                                                       ` Andreas Ericsson
2006-12-01 18:51                                                                         ` Martin Waitz
2006-12-01 13:51                                                           ` Stephan Feder
2006-12-01 14:58                                                             ` Martin Waitz
2006-12-01 15:47                                                               ` Stephan Feder
2006-12-01 16:54                                                                 ` Martin Waitz
2006-12-01 17:33                                                                   ` Stephan Feder
2006-12-01 18:48                                                                     ` Martin Waitz
2006-12-01 23:34                                                                       ` sf
2006-12-02 19:46                                                                         ` Martin Waitz
2006-12-01 19:17                                                                     ` Andy Parkins
2006-12-01 19:38                                                                       ` Martin Waitz
2006-12-01 21:04                                                                         ` Andy Parkins
2006-12-01 21:37                                                                           ` Martin Waitz
2006-12-01 21:54                                                                             ` Andy Parkins
2006-12-01 22:08                                                                               ` Martin Waitz
2006-12-02 10:04                                                                                 ` Andy Parkins
2006-12-02 13:50                                                                                   ` Josef Weidendorfer
2006-12-02 20:43                                                                                     ` Martin Waitz
2006-12-03  1:02                                                                                       ` Josef Weidendorfer
2006-12-02 20:40                                                                                   ` Martin Waitz
2006-12-02 13:14                                                                           ` Jakub Narebski
2006-12-02 13:08                                                                     ` Jakub Narebski
2006-12-02 12:48                                                   ` Jakub Narebski
2006-11-28 17:28                                   ` Daniel Barkalow
2006-11-28 18:08                                     ` Sven Verdoolaege
2006-11-28 18:37                                       ` Daniel Barkalow
2006-11-28 19:06                                         ` Sven Verdoolaege
2006-11-28 20:41                                           ` Daniel Barkalow
2006-11-28 21:10                                             ` Shawn Pearce
2006-11-28 21:32                                               ` Daniel Barkalow
2006-11-28 21:53                                                 ` Linus Torvalds
2006-11-20 22:49 ` Jakub Narebski
2006-11-21  7:21 ` Shawn Pearce
2006-11-22  5:29 ` Petr Baudis
2006-12-02 20:16 ` Jakub Narebski
2006-12-03  1:24   ` Robin Rosenberg
2006-12-03  1:31     ` Jakub Narebski
2006-12-03 12:22       ` Robin Rosenberg
2006-12-03 12:31         ` Jakub Narebski
2006-12-03 11:00     ` Jakub Narebski

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=Pine.LNX.4.64.0612011510290.3695@woody.osdl.org \
    --to=torvalds@osdl.org \
    --cc=Josef.Weidendorfer@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=sf@b-i-t.de \
    --cc=tali@admingilde.org \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).