Re: [RFC] Submodules in GIT
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Dec 16, 2006, 09:57 UTC
- Message-ID
- <em0fpq$45b$1@sea.gmane.org>
- In-Reply-To
- <e7bda7770612160040v1a769153p909a8cd40e5ea991@mail.gmail.com>
<opublikowany i wysłany>
Torgil Svensson wrote:
> On 12/16/06, Jakub Narebski <jnareb@gmail.com> wrote:
Show 8 quoted lines
>>> Now it doesn't looks like trees/blobs anymore so maybe a link object >>> is handy: >>> README >>> 100644 blob <sha1 of blob> REPORTING-BUGS >>> 100644 link <sha1 of link> AUTHORS >>> 040000 tree <sha1 of tree> arch >>> 040000 tree <sha1 of tree> block >>> 040000 link <sha1 of link> misc
This would be (using the submodule original proposal)
140000 link <sha1 of link> misc
Show 23 quoted lines
>>> link-object: >>> <sha1 of commit> >>> <sha1 of tree/blob> >> >> What do you need <sha1 of tree/blob> for in link-object? Wouldn't you >> use usually the sha1 of top tree of a commit, which is uniquely defined >> by commit object, so you need only <sha1 of commit>? >> > > 1. "Sparse" repository's - In my example, I want to cherry-pick > header-files or binary-files from different projects without fetching > all, potentially huge, submodules in their entirety. Imaging having X, > kernel, gcc, gtk and libc6 as sub-projects and you really only care > about some header files. > > 2. Super-module directory-hierarchy independent from submodules. > Super-project want to have the header-files and binaries it's own way. > This also gives version controlled file-collections, the "release > case" in my example - collecting different binaries and header-files > from different submodules together in a new directory-structure, add > some documentation and configuration files and get the whole thing > under strong version-control down to the beginning of time for each > little component.
All fine, but this does not and I think cannot protect us from the fact that we can have <sha1 of tree/blob> which doesn't match <sha1 of commit>.
I think it would be better to have sparse/partial checkout first. But that is just my idea. Because with <sha1 of tree/blob> which is not sha1 of commit tree you might loose (I think) the ability to merge, for example your changes to submodule with upstream.
Show 7 quoted lines
> 3. Super-module development independent of submodules - If we have the > tree/blob-object with all it contents in the database many > git-operations can act as the link (commit) wasn't there since we have > access to all relevant data to work with. This makes it easy to clone > the super-project and work on it seamlessly without having to care > about submodules or mapping up submodule repository's (unless you want > to modify the links or the data underneath it of course).
This is I think irrelevant to the fact if we have only <sha1 of commit>, or link object and also <sha1 of tree/blob>
-- Jakub Narebski Warsaw, Poland ShadeHawk on #git