On 10-06-09 03:15 AM, Jens Lehmann wrote: > Am 09.06.2010 01:09, schrieb Junio C Hamano: >> Jens Lehmann <Jens.Lehmann@xxxxxx> writes: >> >>> Don't record a commit in the first place, following a branch is not bound >>> to a special commit, so pretending to do that might do more harm than good. >>> Just putting the 0-hash there might be the solution. >> >> Ugh. Even though I understand that in some scenarios you would want to >> say "I don't care what commit is used for this submodule---just use the >> tip of the branch 'fred'", I don't think you want to use 0{40} in the >> superproject. I think it would be Ok to add such a note to .gitmodules in >> the superproject, but I also think we should still record which _exact_ >> commit was used to test and validate such a commit in the superproject >> when it was made. > > I think we are in violent agreement here. I too am in this camp. If a submodule is tracking the tip of a branch, I think it's vital that checking out the superproject's HEAD@{3 months ago} gives you the submodule as it was in the superproject 3 months ago. Back then, it may have been tracking a different branch. It may not have been tracking a branch at all. It may have been using a completely different repository altogether. It's hard for me to see the utility of having the submodule reflect the tip-of-some-branch-as-of-today when I'm looking at 3-month-old code in the superproject. AFAICT, Ævar's original proposal does the right thing here, because a submodule tracking a branch would look dirty in the superproject if the branch's HEAD doesn't match the commit ID recorded in the superproject. So "submodule update" would restore the submodule's state to what the superproject says it should be. I don't think I mind dirty branch-tracking submodules, but folks seem to find it distasteful. However, I believe all the proposals made so far to address it break what I call the superproject's "historical consistency." I wish I could come up with some way to reconcile clean branch-tracking submodules with historical consistency, but alas my imagination is so far too limited. :( M. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html