Has anyone used pants to have a single mega repo o...
# general
a
Has anyone used pants to have a single mega repo of “I do all my dev in this”, regardless of if it’s one project or not?
h
Sounds like you're describing a monorepo?
If so, yes this is a common use case.
l
I’m in the early stages of using it for a multi-project repo with a few related but separate Go/Python projects. The lack of JS support would prevent me from using it as a Google-style org-wide monorepo though.
a
I guess. But I’d think “monorepo” being one repo working towards a common goal. I’m more thinking “do all my personal shit in one repo and export the not-private bits”
w
I have a kitchen sink repo - pretty nice
e
G3 is a monorepo. That has (had) Google docs, Gmail, much of search, Borg, Bigtable, ... lots of unrelated things.
And its semi-canonical for this use case. Not that Google was the 1st or only monorepo user, it's just the most famous I think and - at least indirectly - influential on this term even being a thing folks outside Google use.
b
By no means is this opinion any more authoritative than anyone else's, but it brings up some ideas about what might distinguish a monorepo from repo full of misc code. https://blog.nrwl.io/misconceptions-about-monorepos-monorepo-monolith-df1250d4b03c Feel free to argue. 🙂
e
One thing you might imagine @ambitious-actor-36781 - alot of problematic details aside - is what if all OSS software of compatible license lived in 1 megamonorepo? If the tooling worked fantastically, you'd link directly against whatever code you use, you'd leverage everyone elses work with no effort (build caches, remote execution, etc) and you could fix problems immediately and know you did not break downstream (at least OSS downstream).
b
OMG
e
Thats' what G3 was but inside Google.
a
You’re making me hot under the collar 🥵
😃 1
e
Alot of very hard technical challenges, but the blockers would probably human engineering.
a
Have this idea of having a private megarepo for all of my random crap (dotfiles, CAD, python projects, art, etc) Then CICD runs on changes. And then something slices it up, exports it to public repos where applicable
e
There you go, exactly. The slicing thing is hard to do right. I tried my hand at this at Twitter and its tricky. Especially when there are bits that should not be public and you don't want the public to link against the private.
For one fallout, that's why BUILD can have any extension! I added that so BUILD vs BUILD.twitter and that enabled some control over slicing. Many more pieces needed though.