Mercurial's subrepo is a pretty good stab at fixing this, IMO. It's unpolished, right now, in that it doesn't deal with some of the more complex scenarios well, but the idea is really getting there (and it works with SVN subrepos, too -- we have git in the works).