Jakub Narebski <jnareb@xxxxxxxxx> writes: > Pierre Habouzit <madcoder@xxxxxxxxxx> writes: >> On Mon, Jul 28, 2008 at 09:40:22PM +0000, Avery Pennarun wrote: > >> > Further, if you don't have a separate .git directory for each >> > submodule, you can't *switch* branches on the submodule independently >> > of the supermodule in any obvious way. >> >> Yes you can, in what I propose you have a dummy .git in each submodule, >> with probably an index, a HEAD and a config file (maybe some other >> things along) to allow that especially. > > What you are (re)inventing here is something called gitlink (.git which > is a file, or .gitlink file); not to be confused with 'sumbodule'/'commit' > entry in a tree which is sometimes called gitlink.... > ... > There was even some preliminary implementation IIRC, but AFAIR it > was abandoned because of no "real usage". I am afraid you are confused. I think you are talking about "gitfile", not "gitlink". It is not abandoned; see e.g. read_gitfile_gently() in setup.c. I suspect the use of it may help the use case Pierre proposes, but its main attractiveness as I understood it back when we discussed the facility was that you could switch branches between 'maint' that did not have a submodule at "path" back then, and 'master' that does have one now, without losing the submodule repository. When checking out 'master' (and that would probably mean you would update 'git-submodule init' and 'git-submodule update' implementation), you would instanciate subdirectory "path", create "path/.git" that is such a regular file that that points at somewhere inside the $GIT_DIR of superproject (say ".git/submodules/foo"). By storing refs and object store are all safely away in the superproject $GIT_DIR, you can now safely switch back to 'maint', which would involve making sure there is no local change that will be lost and then removing the "path" and everything underneath it. -- 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