&#62; Git has submodules, but it is not the same and more cumbersome (for example each time the remote repository is updated, you need to perform a local commit to bring your reference up to date with the remote).<p>It's simply not revision controlled if two different checkouts of the same version produce different source trees.<p>externals might be convenient for moving targets, but that's entirely wrong behavior for a revision control system.