We've been really crappy at marketing this but we have a multiple repos
answer that is semantically close to identical to a monolithic repo.
Any work flow or command line works identically in both (there are a
few corner cases that don't work but almost 100% of the stuff works
like you'd expect).
It's sort of like a partial clone, you can clone any subset you want,
work on it, add in other parts, the tool takes care of making sure the
stuff you add in is lined up (if you cloned a week ago and you add in
another repo, it's rolled back so it matches time/commit wise).
If you want to search for something it's the same command in a collection
of repos as it is in a monolithic repo:
bk -U grep refactor_me
but truth in advertising, that searches only what you have populated.
The google answer is "ship grep to the data" so they'll search everything.
Google wins if you have their datacenter. We win on UI, it's the same
everywhere.
Our design is much more tightly coupled than Git's submodules. We manage
the subrepos so that they are in sync just like files are in sync.
What I mean by that is if you have two files modified in the same commit,
you can't pull that commit and only get one of the files updated,
they are both updated because that's what happened in that commit.
We've provided the same semantics for collections of repositories.
Git doesn't, getting those semantics is an exercise left to the user.
We get better performance because you can clone as little as one
repository, what we call the product. It would be easy and fun to put a
Unix distro in this system and have the top repo just have a makefile and
you type make X11 and it populates the compiler, libc, the X11 sources,
and builds them.
It's commercial so maybe that's uninteresting but if you want submodules
that work and scale in performance, we might be worth a look (sorry for
the marketing, if that's against the rules here then I'll learn how to
delete a post).
Read more here, comments welcome, it's beta copy:
http://www.bitkeeper.com/nested