Re: [RFC] Submodules in GIT
- From
- Josef Weidendorfer <josef.weidendorfer@gmx.de>
- Date
- Dec 1, 2006, 22:55 UTC
- Message-ID
- <200612012355.03493.Josef.Weidendorfer@gmx.de>
- In-Reply-To
- <Pine.LNX.4.64.0612011423100.3695@woody.osdl.org>
On Friday 01 December 2006 23:26, Linus Torvalds wrote:
Show 26 quoted lines
> > On Fri, 1 Dec 2006, Josef Weidendorfer wrote: > > > > > > Well, I would actually argue that you may often want to have a supermodule > > > and then at least have the _option_ to decide to not fetch all the > > > submodules. > > > > If you want to allow this, you have to be able to cut off fetching the > > objects of the supermodule at borders to given submodules, the ones you > > do not want to track. With "border" I mean the submodule commit in some > > tree of the supermodule. > > > > This looks a little bit like a shallow clone > > No. > > I would say that it looks more like a "partial checkout" than a shallow > clone. > > A shallow clone limits the data in "time" - we have _some_ data, but we > don't have all of the history of that data. > > In contrast, a submodule that we don't fetch is an all-or-nothing > situation: we simply don't have the data at all, and it's really a matter > of simply not recursing into that submodule at all - much more like not > checking out a particular part of the tree.
OK.
I still think it should be about "limit in space" regarding the objects in the local repository.
For a project containing "gcc" as submodule, and I am not interested in this submodule, there should be a way to not need to fetch all the objects from the gcc submodule at clone time.
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 - 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: - "Where is the official upstream of this submodule?" - "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) - "Should this submodule be checked out?" and so on.