What does HackerNews think of copybara?
Copybara: A tool for transforming and moving code between repositories.
We go much further than CopyBara by syncing CI / CD pipelines, syncing review comments and so on.
We are considering launching GitSlice as product on its own. If you are interested, email me and I can keep you updated when its ready to test (hamza [at] gitstart [dot] com)
Are those actually the upstream repositories, though? And is it known how they interact with them?
Google has Copybara [1], which allows portions of a monorepo to live outside as an entirely separate repository without the need for things like Git submodules. It supports synchronization of histories, pull requests, path and file transformations, etc.
In that sense, something like Copybara would allow them to, relatively, easily open source those bits, receive outside commits, and then sync the changes back to the monorepo.
Facebook's fbshipit: https://github.com/facebook/fbshipit
Google's copybara: https://github.com/google/copybara
With these tools, you can make fairly sophisticated choices about how you do vendoring. You can make the internal version look just like the public version, in terms of commit history. And you can export internal commits to public commits, stripping out confidential information along the way (or integrations with internal systems and tooling).
As a big fan of patch-based code review, I still can't stand GitHub PRs. It's very annoying to stack GitHub PRs, so the default is to create large PRs instead. This is sad, because smaller units of review result in better code! Gerrit solves this (and much more).
Example change on Gerrit (click on "Comments"):
https://gerrit-review.googlesource.com/c/gerrit/+/303182
Reasons to use Gerrit in spite of the learning curve:
- Ability to review commit messages (they're part of the codebase!).
- Show diffs between different versions of a change, even across rebases, with inline comments.
- Inline comments aren't lost on rebases and will be ported.
- Changes can be easily stacked.
- Select code snippets for inline comments, not just lines.
- It's really fast and there's keyboard shortcuts for everything.
- Rebase and cherry pick to release branches from the UI.
Some projects like Go, Cue or SQLAlchemy use custom tooling or Copybara[1] to mirror PRs to Gerrit, which seems like the best of both worlds - simple PR workflow for drive-by contributions, patch workflow for core contributors who work with it all day.
2. Exactly the same process except there is a single pr instead of multiple across multiple repositories.
One of our challenges was integrating one of our public repos into our repo and that is more of a difference in release patterns(semantic versioning vs nightlies). We use copybara to help with this problem.