From: Martin Waitz <tali@admingilde.org>
To: Andy Parkins <andyparkins@gmail.com>
Cc: git@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Junio C Hamano <junkio@cox.net>
Subject: Re: [PATCH 6/6] Teach core object handling functions about gitlinks
Date: Wed, 11 Apr 2007 13:31:50 +0200 [thread overview]
Message-ID: <20070411113150.GL21701@admingilde.org> (raw)
In-Reply-To: <200704111047.01271.andyparkins@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4417 bytes --]
hoi :)
On Wed, Apr 11, 2007 at 10:47:00AM +0100, Andy Parkins wrote:
> On Wednesday 2007 April 11 09:06, Martin Waitz wrote:
>
> > The only thing I disagree with you is in using HEAD of the submodule:
>
> I know we've had this discussion before, but I'm going to bring it up again -
> mainly because Linus's implementation exactly matches what I envisaged when
> we originally spoke of this. I think in your "Updating the branch which HEAD
> points to is dangerous" section, the main thing you're not taking into
> account is that git can make detached checkouts. Updating HEAD is not
> dangerous - updating refs is; and I don't think anyone is proposing that a
> submodule ref should ever be updated by a supermodule.
Then we already agree on the most important part.
My argument is mostly against updating the ref which is behind HEAD, not
HEAD per se. And I haven't thought about using detached HEADs until I
wrote the mail.
> I think you're also too strongly focussed on the idea that the supermodule
> tracks submodule branches - it cannot branches are not part of "the"
> repository they point at "a" repository. References are outside the
> repository pointing in, and hence the supermodule cannot refer to them at its
> core.
No, that may be an misunderstanding because my very first prototype
really did track branches. In the meantime I changed my mind, my
current prototypes all track submodule commits directly.
But in doing so we create a branch of its own: remember, a branch in
git is just a moving reference into the history. Such a reference
can be stored in .git/refs/heads or it can be stored in the index/tree of
the supermodule. The difference is not really big.
So we do not track a branch, but we create a branch by tracking.
> Now, if you check out a revision in the supermodule, that's going to look up
> the submodule revision stored in the DIRLINK tree entry which will recurse
> into the submodule and checkout that revision - almost certainly as a
> detached HEAD. There are three possibilities then:
> - The submodule revision is in the past and no submodule branch points at it
> - The submodule revision is current and a submodule branch points at it
> - The submodule revision is current and multiple submodule branches point at
> it
> The supermodule checkout will have to make a decision whether to update the
> submodule HEAD (in one case it's obvious: a revision in the past has to be
> detached HEAD as there is no suitable branch). It's also possible that the
> single submodule branch case is easy - undetach HEAD; however I don't think
> that is universally correct.
I don't like to guess which branches to update.
I'd prefer to just unconditionally update one specific one.
> I know you're very much in favour of making branches in the submodule
> correspond to branches in the supermodule, but I just don't see a way of
> making it work - the supermodule cannot know about submodule branches,
> branches are not part of the repository, they just point at the repository.
> My branches could be different from your branches.
That would not work, you are right.
Please see my above comment about tracking & branches.
> The way submodules should be treated is that the whole submodule is analogous
> to a single repository-tracked file - that's essentially what a submodule is
> in the end but the content of the "file" is the submodule revision.
Wholeheartedly agreed.
> Now, if you change branch in the submodule, the supermodule will see
> that as a change in the submodule (as it should). If you changed
> back, it will be restored and the supermodule will again see it as
> unchanged. If you commit on the submodule, the supermodule will see
> that as a change and you'll have to git-add the submodule and commit
> in the supermodule. The submodule is on whatever branch it is on - at
> all times.
> The only time I can see this causing difficulties is when you want to
> checkout the tip of a submodule branch - how is the supermodule to
> know when it is correct to change HEAD from being detached to being
> attached? I suppose it's got to be config-based; and out-of-tree
> config at that.
Again, doing things conditionally here just adds to confusion.
Just have one dedicated branch and be done with it.
--
Martin Waitz
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2007-04-11 11:32 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-10 4:12 [PATCH 0/6] Initial subproject support (RFC?) Linus Torvalds
[not found] ` <Pi ne.LNX.4.64.0704092115020.6730@woody.linux-foundation.org>
2007-04-10 4:13 ` [PATCH 1/6] diff-lib: use ce_mode_from_stat() rather than messing with modes manually Linus Torvalds
2007-04-10 4:13 ` [PATCH 2/6] Avoid overflowing name buffer in deep directory structures Linus Torvalds
2007-04-10 4:14 ` [PATCH 3/6] Add 'resolve_gitlink_ref()' helper function Linus Torvalds
2007-04-10 9:38 ` Alex Riesen
2007-04-10 14:58 ` Linus Torvalds
2007-04-10 15:35 ` Alex Riesen
2007-04-10 15:52 ` Linus Torvalds
2007-04-10 15:57 ` Alex Riesen
2007-04-10 16:16 ` Linus Torvalds
2007-04-10 15:54 ` Josef Weidendorfer
2007-04-10 4:14 ` [PATCH 4/6] Add "S_IFDIRLNK" file mode infrastructure for git links Linus Torvalds
2007-04-10 4:15 ` [PATCH 5/6] Teach "fsck" not to follow subproject links Linus Torvalds
2007-04-11 22:41 ` Sam Vilain
2007-04-11 22:48 ` Linus Torvalds
2007-04-11 22:59 ` Sam Vilain
2007-04-11 23:16 ` Linus Torvalds
2007-04-11 23:05 ` David Lang
2007-04-11 23:53 ` Linus Torvalds
2007-04-11 23:30 ` David Lang
2007-04-12 2:14 ` Linus Torvalds
2007-04-12 2:30 ` Junio C Hamano
2007-04-12 17:18 ` David Lang
2007-04-12 18:32 ` Dana How
2007-04-12 19:17 ` Linus Torvalds
2007-04-13 9:00 ` Rogan Dawes
2007-04-13 15:23 ` Linus Torvalds
2007-04-15 6:50 ` Dana How
2007-04-12 0:00 ` Dana How
2007-04-12 0:03 ` Sam Vilain
2007-04-12 0:34 ` Junio C Hamano
2007-04-12 1:52 ` Linus Torvalds
2007-04-12 2:00 ` Junio C Hamano
2007-04-12 2:06 ` Junio C Hamano
2007-04-12 2:28 ` Linus Torvalds
2007-04-11 23:30 ` Dana How
2007-04-10 4:20 ` [PATCH 6/6] Teach core object handling functions about gitlinks Linus Torvalds
2007-04-10 8:40 ` Frank Lichtenheld
2007-04-10 11:31 ` Alex Riesen
2007-04-10 14:55 ` Linus Torvalds
2007-04-10 16:28 ` Josef Weidendorfer
2007-04-10 16:50 ` Alex Riesen
2007-04-10 17:23 ` Josef Weidendorfer
2007-04-10 18:45 ` Linus Torvalds
2007-04-10 19:04 ` Andy Parkins
2007-04-10 19:20 ` Linus Torvalds
2007-04-10 20:19 ` Junio C Hamano
2007-04-10 20:33 ` Linus Torvalds
2007-04-12 0:12 ` Sam Vilain
2007-04-12 0:35 ` Martin Waitz
2007-04-12 2:01 ` Linus Torvalds
2007-04-12 3:56 ` Sam Vilain
2007-04-10 19:41 ` David Lang
2007-04-10 20:06 ` Junio C Hamano
2007-04-10 19:29 ` Josef Weidendorfer
2007-04-10 19:45 ` Linus Torvalds
2007-04-11 23:47 ` Sam Vilain
2007-04-12 0:13 ` Linus Torvalds
2007-04-12 0:42 ` Torgil Svensson
2007-04-12 0:56 ` Martin Waitz
2007-04-12 21:23 ` Torgil Svensson
2007-04-11 23:36 ` Sam Vilain
2007-04-11 8:06 ` Martin Waitz
2007-04-11 8:29 ` Alex Riesen
2007-04-11 8:36 ` Martin Waitz
2007-04-11 8:49 ` Alex Riesen
2007-04-11 9:20 ` Martin Waitz
2007-04-11 9:15 ` Junio C Hamano
2007-04-11 10:03 ` Martin Waitz
2007-04-11 20:01 ` Junio C Hamano
2007-04-11 22:19 ` Martin Waitz
2007-04-11 22:36 ` Linus Torvalds
2007-04-11 9:47 ` Andy Parkins
2007-04-11 11:31 ` Martin Waitz [this message]
2007-04-11 15:16 ` Linus Torvalds
2007-04-11 22:49 ` Sam Vilain
2007-04-11 23:54 ` Martin Waitz
2007-04-12 1:57 ` Brian Gernhardt
2007-04-12 15:12 ` Josef Weidendorfer
2007-04-10 4:46 ` [PATCH 0/6] Initial subproject support (RFC?) Linus Torvalds
2007-04-10 13:04 ` Alex Riesen
2007-04-10 15:13 ` Linus Torvalds
2007-04-10 15:48 ` Alex Riesen
2007-04-10 16:07 ` Linus Torvalds
2007-04-10 16:43 ` Alex Riesen
2007-04-10 19:32 ` Junio C Hamano
2007-04-10 20:11 ` Linus Torvalds
2007-04-10 20:52 ` Junio C Hamano
2007-04-10 21:02 ` Sam Ravnborg
2007-04-10 21:27 ` Junio C Hamano
2007-04-10 21:03 ` Nicolas Pitre
2007-04-15 23:21 ` J. Bruce Fields
2007-04-11 8:08 ` David Kågedal
2007-04-11 9:32 ` Junio C Hamano
2007-04-15 23:25 ` J. Bruce Fields
2007-04-11 8:32 ` Martin Waitz
2007-04-11 8:42 ` Alex Riesen
2007-04-11 8:57 ` Martin Waitz
2007-04-10 13:39 ` [PATCH] allow git-update-index work on subprojects Alex Riesen
2007-04-10 23:19 ` [PATCH] Allow " Alex Riesen
2007-04-11 2:55 ` Junio C Hamano
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=20070411113150.GL21701@admingilde.org \
--to=tali@admingilde.org \
--cc=andyparkins@gmail.com \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=torvalds@linux-foundation.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).