git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jan Hudec <bulb@ucw.cz>
To: Martin Waitz <tali@admingilde.org>
Cc: Junio C Hamano <junkio@cox.net>,
	skimo@liacs.nl, Alex Riesen <raa.lkml@gmail.com>,
	git@vger.kernel.org
Subject: Re: [PATCH 07/16] git-read-tree: take --submodules option
Date: Tue, 22 May 2007 21:37:06 +0200	[thread overview]
Message-ID: <20070522193706.GA4432@efreet.light.src> (raw)
In-Reply-To: <20070521211133.GD5412@admingilde.org>

[-- Attachment #1: Type: text/plain, Size: 3604 bytes --]

On Mon, May 21, 2007 at 23:11:34 +0200, Martin Waitz wrote:
> On Mon, May 21, 2007 at 06:59:38PM +0200, Jan Hudec wrote:
> > There would be:
> >  /
> >  /.git
> >  /subdir
> >  /.git/submodules/submodule-name.git
> > 
> > This would require changes to the logic how git finds GIT_DIR (which would be
> > really deep change), but it would provide place to store the submodule data
> > while the submodule is not being checked out. 
> 
> I agree that we need something like that.
> 
> We don't have to move the entire subproject.git into the superproject,
> but we need to have all _referenced_ objects in the .git dir of the
> superproject.
> 
> There are several possibilities to do so:
> 
>  * move the entire .git dir
>  * move .git/objects
>  * explicitly copy all referenced objects

I believe we really need entire .git dir. When the superporject checks out
revision which does not reference that subproject, we still need to preserve
not only the objects of subproject, but also the refs and config.

> I have some experimental code to configure a per-subproject directory
> in the superproject/.git as alternate object store for the submodule
> to make the last two solutions possible.  Perhaps I should dig it out again
> and adapt it to current git.
> 
> If there is a 1:1 relationship between subproject and object store then
> even efficient fsck and repack/prune are possible for the submodule without
> loosing objects.
> But such a 1:1 relationship is bad when you move subprojects to another
> location (or include the same subproject several times in different
> locations of the tree).
> Perhaps the user should be able to choose which one he wants.

That's why there should be the extra level of indirection using .gitmodules.
It should map the directory name to the object store name, so you can
relocate the subproject.

Including the same project several times is indeed interesting. Maybe the
subprojects should be "light checkouts" (I believe something like this was
already discussed on the list sometime). Those would be .git dirs, that would
only have HEAD and pointer to another .git dir with everything else.

> > > Not at all.  There is no reason to believe that the case that
> > > superproject and subproject come from related URLs is more
> > > common.  One of the reasons to do a separated project
> > 
> > I definitely don't think it's more common. But it's the harder case and it
> > might happen. Generally it will happen if some people work on both the
> > superproject and the subproject. Of course the argument is that than it
> > should not be separate projects, but maybe the teams just partly overlap.
> 
> I think it will be _very_ common to store super and subprojects in
> related locations.  First to be independent from third-party servers
> while working on the superproject.
> Second (and I think more important) because many times there will
> be superproject related adaptations in the subproject.  Yes they
> are independent, and exactly for that reason the subproject upstream
> maintainers may not take every change which is needed to satisfy the
> superproject.  We _now_ see that in all Linux distributions already.
> So when you use superprojects to integrate several independent projects,
> then the superproject maintainer/administrator should really keep a
> clone of all subprojects handy on his site.

Yes, repositories with distribution-specific patches will add a large class
of cases requiring multiple sources support.

-- 
						 Jan 'Bulb' Hudec <bulb@ucw.cz>

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2007-05-22 19:39 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-18 19:24 Second round of support for cloning submodules skimo
2007-05-18 19:24 ` [PATCH 01/16] Add dump-config skimo
2007-05-18 19:24 ` [PATCH 02/16] git-config: add --remote option for reading config from remote repo skimo
2007-05-18 19:24 ` [PATCH 03/16] http.h: make fill_active_slots a function pointer skimo
2007-05-18 19:24 ` [PATCH 04/16] git-config: read remote config files over HTTP skimo
2007-05-18 19:24 ` [PATCH 05/16] unpack-trees.c: verify_uptodate: remove dead code skimo
2007-05-18 22:33   ` Junio C Hamano
2007-05-18 19:24 ` [PATCH 06/16] unpack-trees.c: pass cache_entry * to verify_absent rather than just the name skimo
2007-05-18 19:24 ` [PATCH 07/16] git-read-tree: take --submodules option skimo
2007-05-18 21:53   ` Alex Riesen
2007-05-18 22:08     ` Sven Verdoolaege
2007-05-18 22:42       ` Alex Riesen
2007-05-19  3:59         ` Junio C Hamano
2007-05-19  4:27           ` Shawn O. Pearce
2007-05-19  9:19           ` Alex Riesen
2007-05-19 13:05           ` Sven Verdoolaege
2007-05-19 18:20             ` Junio C Hamano
2007-05-20 15:54               ` Jan Hudec
2007-05-20 18:33                 ` Junio C Hamano
2007-05-20 20:22                   ` Sven Verdoolaege
2007-05-21 16:59                   ` Jan Hudec
2007-05-21 18:05                     ` Sven Verdoolaege
2007-05-21 19:01                       ` Junio C Hamano
2007-05-21 20:02                       ` Jan Hudec
2007-05-21 21:11                     ` Martin Waitz
2007-05-22 19:37                       ` Jan Hudec [this message]
2007-05-24 15:48                         ` Martin Waitz
2007-05-25 10:06                           ` Jakub Narebski
2007-05-25 20:15                           ` Jan Hudec
2007-05-24 18:26                       ` Junio C Hamano
2007-05-24 18:45                         ` Sven Verdoolaege
2007-05-24 18:58                           ` Junio C Hamano
2007-05-24 19:14                             ` Sven Verdoolaege
2007-05-24 20:32                               ` Junio C Hamano
2007-05-24 20:55                                 ` Petr Baudis
2007-05-24 20:59                                   ` Junio C Hamano
2007-05-24 19:43                         ` Junio C Hamano
2007-05-24 20:57                         ` Petr Baudis
2007-05-25 20:35                         ` Jan Hudec
2007-05-25 21:05                           ` Junio C Hamano
2007-05-25 21:16                             ` Steven Grimm
2007-05-25 22:11                               ` Junio C Hamano
2007-05-19  0:34   ` Petr Baudis
2007-05-18 19:24 ` [PATCH 08/16] unpack-trees.c: assume submodules are clean skimo
2007-05-18 19:24 ` [PATCH 09/16] entry.c: optionally checkout submodules skimo
2007-05-18 21:56   ` Alex Riesen
2007-05-18 22:03     ` Sven Verdoolaege
2007-05-18 22:33       ` Alex Riesen
2007-05-18 22:00   ` Alex Riesen
2007-05-18 22:20     ` [PATCH] Add run_command_v_opt_cd: chdir into a directory before exec Alex Riesen
2007-05-18 22:48       ` [PATCH] Use run_command_v_opt_cd when checking out a submodule Alex Riesen
2007-05-18 19:24 ` [PATCH 10/16] git-checkout: pass --submodules option to git-read-tree skimo
2007-05-19  0:36   ` Petr Baudis
2007-05-18 19:25 ` [PATCH 11/16] git-fetch: skip empty arguments skimo
2007-05-18 22:33   ` Junio C Hamano
2007-05-18 19:25 ` [PATCH 12/16] builtin-fetch--tool: extend "native-store" for use in cloning skimo
2007-05-18 22:52   ` Alex Riesen
2007-05-19 12:17     ` Sven Verdoolaege
2007-05-18 19:25 ` [PATCH 13/16] git-clone: rely on git-fetch for fetching for most protocols skimo
2007-05-18 19:25 ` [PATCH 14/16] git-clone: rely on git-fetch for non-bare fetching over http skimo
2007-05-18 19:25 ` [PATCH 15/16] git-read-tree: treat null commit as empty tree skimo
2007-05-18 19:25 ` [PATCH 16/16] git-clone: add --submodules for cloning submodules skimo
2007-05-18 19:34 ` Second round of support " Sven Verdoolaege

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

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

  git send-email \
    --in-reply-to=20070522193706.GA4432@efreet.light.src \
    --to=bulb@ucw.cz \
    --cc=git@vger.kernel.org \
    --cc=junkio@cox.net \
    --cc=raa.lkml@gmail.com \
    --cc=skimo@liacs.nl \
    --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.
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 NNTP newsgroup(s).