Thread (1 message) 1 message, 1 author, 2016-08-11

Re: [RFC] Submodules in GIT

From: Andy Parkins <hidden>
Date: 2016-08-11 19:38:21

On Saturday 2006, December 02 11:55, Josef Weidendorfer wrote:
quoted
quoted
	100644 blob 08602f522183dc43787616f37cba9b8af4e3dade	xdiff-interface.c
	100644 blob 1346908bea31319aabeabdfd955e2ea9aab37456	xdiff-interface.h
	040000 tree 959dd5d97e665998eb26c764d3a889ae7903d9c2	xdiff
	050000 link 0215ffb08ce99e2bb59eca114a99499a4d06e704	xyzzy

where that 050000 is the new magic type (I picked one out of my *ss:
it's not a valid type for a file mode, so it's a godo choice, but it
could be anythign that cannot conflict with a real file), which just
specifies the "link" part. The SHA1 is the SHA1 of the commit, and the
"xyzzy" is obviously just the name within the directory of the
submodule.
Can I argue that the hash in that object should actually be to a real
object in the supermodule repository rather than a link?
That is the thing we already are discussing here :-)
IMHO, submodule IDs make a lot of sense, and this needs to specify the
submodule ID at every link. Which would force us to use seperate objects.
I wasn't really going as deep as a submodule ID.  Just moving the submodule 
commit hash from the supermodule tree, to a supermodule "link" object.  What 
goes in that object is a separate problem I believe.

The primary reason I think it's a good idea is that it is consistent with 
every other hash in the tree.  It seems to be inconsistent to say

blob objects have a hash that points to an object in this repo
tree objects have a hash that points to an object in this repo
link objects have a hash the points to an object in a different repo
However, I am not speaking about some separation issue, but more about a
design decision. For fetching/pulling/merging, you want be able to
distinguish submodules not only by the commit id into the submodule:
multiple
submodules could link into the same DAG (but different branches) of another
repository which would make unique fetching/pulling/merge decisions
difficult, especially when you think about the possibility that the
relative root path of a submodule in a supermodule should be able to change
at any supermodule commit.
I can't say I've understood what you mean here.  There is no difference in 
facilities if there is a link object in the local repository as well.  It's 
merely an extra layer of indirection.  Apart from the tiny cost of 
dereferencing that link object, there is no disadvantage.


Andy

-- 
Dr Andrew Parkins, M Eng (Hons), AMIEE
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help