git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pierre Habouzit <madcoder@debian.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: Jakub Narebski <jnareb@gmail.com>,
	Avery Pennarun <apenwarr@gmail.com>,
	Nigel Magnay <nigel.magnay@gmail.com>,
	Git ML <git@vger.kernel.org>
Subject: Re: git submodules
Date: Mon, 18 Aug 2008 02:46:19 +0200	[thread overview]
Message-ID: <20080818004619.GD17148@artemis> (raw)
In-Reply-To: <7v1w0np7d4.fsf@gitster.siamese.dyndns.org>

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

On Sun, Aug 17, 2008 at 11:08:39PM +0000, Junio C Hamano wrote:
> I know there are cases where sharing object store is useful.  Being able
> to share is one thing.  Always having to share, without any other option,
> is another.
> 
> Using gitlink to keep the true repository data out of submodule checkout
> area so that branch switching can safely be done is orthogonal to the
> issue of how repositories of submodules and the superproject share their
> object store.  IOW, you would always use gitlink to solve the "branch
> switching may make the submodule checkout disappear" issue, while you
> could use alternates mechanism (or direct symlinking of $GIT_DIR/objects)
> across these repositories *if* you want to share their object store.

  Fair enough. Though I'm not only interested into the branch switching
issue. I'm seeing a bit farther, like in having many commands working as
if there is no submodule involved. And having the same object store for
all {sup,super}modules helps a lot. For example, there is probably quite
some plumbing to write if we have separate object stores if we expect
(and frankly I do) to have git-commit work across submodule boundaries
(doing what it should, IOW commit in the submodules, and then commit in
the supermodule).

  But maybe it's not as hard as it looks.

> > Though we would not like to have submodules suffer from reachability
> > issues after a prune in the supermodule. That means that all references
> > and reflogs of the submodules shall be accessible from the supermodule
> > so that everything that could mess with the object store by removing
> > objects cannot remove interesting objects (that should limit the code
> > paths to really seldom places actually).
> 
> I do not think this issue is limited to use of submodules.  I'd imagine
> that if you build this reachability protection into the alternates
> mechanism, you would automatically solve both "multiple checkout of the
> same project, via git-new-workdir" issue as well as "submodules that share
> its objects with the superproject" issue.
> 
> Which leads me to conclude, at least for now, that it would not be a good
> idea to make this related to gitfile in any way.  Object sharing between
> equal repositories (aka new-workdir) does not use gitfile, but it still
> needs to have the same kind of reachability protection.

  Well somehow the repository that is the alternate (or the symlink, but
the latter isn't very windows friendly, not to mention vfat) has to know
about the other repository:
  * index ;
  * references ;
  * reflogs.

  Which means that alternates users have to register into the provider,
which seems to be _usually_ brittle. I mean, for the current way of
how git-new-workdir works, if you register workdirs into the real
repository, if you just rename this workdir at some point, or move it to
some other place, you're screwed, silentely.

  If instead you force this workdir to use a gitfile, you _don't need_
to register your workdir in the "real" repository, because all the data
belongs to the "real" repository. The workdir is just a "detached"
workdir, with only the checkout stuff, no index, no references no
nothing. And if you move this workdir to a new place, it still works.
Only the central repository should not budge, which is already a
limitation of current workdirs and alternates anyways.

  Of course with submodules it's less of an issue since those arent as
loosely coupled to the supermodule as workdir are to the main
repository, and it's unlikely that a submodule will move very often ;)


-- 
·O·  Pierre Habouzit
··O                                                madcoder@debian.org
OOO                                                http://www.madism.org

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

  reply	other threads:[~2008-08-18  0:47 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-28 16:20 git submodules Pierre Habouzit
2008-07-28 16:23 ` Pierre Habouzit
2008-07-28 20:23 ` Nigel Magnay
2008-07-28 20:55   ` Pierre Habouzit
2008-07-28 20:59     ` Pierre Habouzit
2008-07-28 21:40       ` Avery Pennarun
2008-07-28 22:03         ` Pierre Habouzit
2008-07-28 22:26           ` Jakub Narebski
2008-07-28 22:41             ` Junio C Hamano
2008-08-17 20:13               ` Pierre Habouzit
2008-08-17 22:54                 ` Avery Pennarun
2008-08-17 23:08                 ` Junio C Hamano
2008-08-18  0:46                   ` Pierre Habouzit [this message]
2008-07-28 22:32           ` Avery Pennarun
2008-07-28 23:12             ` Pierre Habouzit
2008-07-29  5:51         ` Benjamin Collins
2008-07-29  6:04           ` Shawn O. Pearce
2008-07-29  8:18             ` Nigel Magnay
2008-07-29  8:45               ` Pierre Habouzit
2008-07-29  8:21           ` Pierre Habouzit
2008-07-29  8:37             ` Pierre Habouzit
2008-07-29  8:51               ` Petr Baudis
2008-07-29 12:15                 ` Johannes Schindelin
2008-07-29 13:07                   ` Pierre Habouzit
2008-07-29 13:15                     ` Johannes Schindelin
2008-07-29 13:19                       ` Pierre Habouzit
2008-07-29 13:31                       ` Nigel Magnay
2008-07-29 14:49                         ` Pierre Habouzit
2008-07-29 14:53                         ` Junio C Hamano
  -- strict thread matches above, loose matches on Subject: below --
2009-10-17 17:15 Steven Noonan
2009-10-17 17:27 ` Jakub Narebski
2009-10-17 22:30   ` Nanako Shiraishi
2009-10-21 19:38 ` Avery Pennarun
2008-04-28 19:50 Victor Bogado da Silva Lins
2008-04-28 21:01 ` Miklos Vajna
     [not found] <s5hwspjzbt0.wl%tiwai@suse.de>
     [not found] ` <Pine.LNX.4.61.0802061437190.8113@tm8103.perex-int.cz>
     [not found]   ` <Pine.LNX.4.61.0802061505470.8113@tm8103.perex-int.cz>
     [not found]     ` <47AA1361.7070201@keyaccess.nl>
     [not found]       ` <s5h7ihhknez.wl%tiwai@suse.de>
2008-02-07 21:24         ` GIT submodules Rene Herman

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=20080818004619.GD17148@artemis \
    --to=madcoder@debian.org \
    --cc=apenwarr@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jnareb@gmail.com \
    --cc=nigel.magnay@gmail.com \
    /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).