Monorepo Support with Phabricator


#1

I’m curious if there are any users of Phabricator that have a monorepo using Git LFS? I’ve used Phabricator for many years, but never in a monorepo environment and I’m wondering if there are any gotchas.

Immediately what comes to mind is launching builds where folders are the target instead of repositories. I’m going to try to do this on my own, but would appreciate any words of wisdom.


#2

I’m guessing that by “monorepo” you mean “lots and lots of microservices in one big git repo”.

Since bulids are started by Herald for new commits, you can add more filters in the Herald for “changed files match regex”, etc, and run the right build.
Alternatively, you can put the relevant filtering in the build code, and have it only run the tests that are relevant to the latest commit/n commits/commits that have not run yet.


#3

You’re correct. We have many services in a single repo. They are separated by folders, so ideally all logic would simply be at a folder level.

The complicated bit is that we are pulling in a lot of material currently with Git LFS. A lot of this could be refactored.


#4

There’s support for Git LFS - see T7789. You need LFS installed on the clients as well (including CI server).