Has anyone here considered using repo for the Git migration?


It plays well with large projects (heck, it was designed for Android),
and it works really well.

I'm guessing you guys have already considered it and rejecting it for
some really smart reason, but I wanted to make sure! :wink:

There’s also jiri https://github.com/fuchsia-mirror/jiri

Yes, it was considered, no-one really championed it at the time.
Conceptually I personally don't see any difference with submodules, and in
practice I don't see a killer difference. The main discussion has been
focused on a "submodule" split-repo model vs a monorepo.

I’d say the main difference is ease-of-use.

Submodules easily go out-of-sync, so you have to keep running ‘git submodule update’. Sometimes you can accidentally push code in one without dependent code in the other.

With repo, all that is automatic. ‘repo up’ will push all “submodules”, ‘repo sync’ pulls from them all, etc. Code is based on branches, not isolated commits, so there’s less confusion, and it’s easy to change one part to one branch in order to test stuff while leaving the others intact.

“repo” doesn’t automatically give you atomic commits across different modules. You can fake it when you need to by tagging all the modules, but that’s a separate step. I hate it, and for our internal work on ART we throw the whole of AOSP into a single git repository anyway.