True, but what about when you have multiple copies of the same source tree? (though I guess this could be less of an issue of everything was using a dvcs)
Git e.g. solves that by addressing via content hash. Which is more or less inevitable for non-hierarchical storage, since that's one of the few ways you can disambiguate.