{"slug": "copybara", "name": "Copybara", "category": "other", "category_name": "Other software", "description": "", "recommenders": 3, "commenters": 9, "warners": 1, "score": 2.938, "rising": -0.98, "first": "2025-12-10", "latest": "2026-07-01", "why": "Copybara is one of those things that you should have set up yesterday.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 2, "compare": 3, "warn": 1}, "spark": [0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "Copybara is one of those things that you should have set up yesterday.", "icon": true, "domain": null, "github_repo": "github.com/google/copybara", "official_url": "https://github.com/google/copybara", "pricing": "", "aliases": ["Copybara"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 779883952, "item_id": 48742747, "url": "https://news.ycombinator.com/item?id=48742747", "by": "willchen", "date": "2026-06-30", "stance": "recommend", "quote": "extremely helpful in open-sourcing things from google3 to github.", "excerpt": "i used this tool when i was at google, extremely helpful in open-sourcing things from google3 to github. still, i'm glad to just directly develop on github now :)", "context": "former Google employee", "use_case": "open-sourcing internal code", "switched_from": "", "story": "Google copybara: moving code between repositories"}, {"id": 779875040, "item_id": 48742190, "url": "https://news.ycombinator.com/item?id=48742190", "by": "klodolph", "date": "2026-06-30", "stance": "recommend", "quote": "I use it mostly for a simple fire and forget export, where I take a folder out of its original repo and preserve the history.", "excerpt": "Been using this for a while, mostly when I make a tool as part of a larger project and the tool is big enough to deserve its own release. It\u2019s powerful enough to do a whole bidirectional shipping operation where you export and import code\u2014no thanks, that\u2019s a hassle. I use it mostly for a simple fire and forget export, where I take a folder out of its original repo and preserve the history. Then I just move developmen", "context": "", "use_case": "exporting folder with history", "switched_from": "", "story": "Google copybara: moving code between repositories"}, {"id": 779865232, "item_id": 48741577, "url": "https://news.ycombinator.com/item?id=48741577", "by": "xyzzy_plugh", "date": "2026-06-30", "stance": "recommend", "quote": "Copybara is one of those things that you should have set up yesterday.", "excerpt": "Copybara is one of those things that you should have set up yesterday. It works great and I've seen many teams gain significant productivity when collaborating in a monorepo with public bits. If you're even toying with an internal monorepo you owe it to yourself to give it a try.", "context": "", "use_case": "monorepo with public bits", "switched_from": "", "story": "Google copybara: moving code between repositories"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 779908992, "item_id": 48744312, "url": "https://news.ycombinator.com/item?id=48744312", "by": "nbobko", "date": "2026-07-01", "stance": "warn", "quote": "The tool turned out being unacceptably slow.", "excerpt": "At my previous company we tried to use this tool to sync parts of the code between two different git repos. The tool turned out being unacceptably slow. Handwritten bash scripts using git-replace and git-filter-repo [1] did a much better job [1]: https://github.com/newren/git-filter-repo", "context": "", "use_case": "syncing code between git repos", "switched_from": "", "story": "Google copybara: moving code between repositories"}]}], "who": [{"by": "cole_", "context": "works at Dagster", "url": "https://news.ycombinator.com/item?id=48747971", "date": "2026-07-01"}, {"by": "dijit", "context": "gamedev studio", "url": "https://news.ycombinator.com/item?id=48744775", "date": "2026-07-01"}, {"by": "willchen", "context": "former Google employee", "url": "https://news.ycombinator.com/item?id=48742747", "date": "2026-06-30"}], "tags": [], "use_cases": ["moving code between repositories", "public repos inside internal monorepo", "syncing code between git repos", "open-sourcing internal code", "exporting folder with history", "monorepo with public bits"], "compared": [], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=48740698", "title": "Google copybara: moving code between repositories", "mentions": 7}, {"url": "https://news.ycombinator.com/item?id=48720489", "title": "Projection: A JJ Workflow for splitting public and private files", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46223617", "title": "Show HN: Cargo-rail: graph-aware monorepo tooling for Rust; 11 deps", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"compare": 1}, "2026-01": {}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {"compare": 1, "recommend": 3}, "2026-07": {"warn": 1, "neutral": 2, "compare": 1}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 779974865, "item_id": 48748429, "url": "https://news.ycombinator.com/item?id=48748429", "by": "bellowsgulch", "date": "2026-07-01", "stance": "compare", "quote": "There seems to be an absolute ton of reference", "excerpt": "I already shared git-fetch-file in another comment here, but the .git-remote-files manifests seem a lot nicer than whatever this thing does: [file \"lib/util.py\" from \"https://github.com/example/tools.git\"] commit = a1b2c3d4e5f6789abcdef0123456789abcdef01 branch = master comment = Common utility function [file \"config.json\" from \"https://github.com/example/tools.git\"] commit = b2c3d4e5f6789abcdef0123456789abcdef012 br", "context": "", "use_case": "moving code between repositories", "switched_from": "", "story": "Google copybara: moving code between repositories"}, {"id": 779967536, "item_id": 48747971, "url": "https://news.ycombinator.com/item?id=48747971", "by": "cole_", "date": "2026-07-01", "stance": "neutral", "quote": "", "excerpt": "We used Copybara to setup a hub-and-spoke model at Dagster where public-facing repos can live within our larger internal monorepo, and while it worked we had to do a lot of hacky things. https://dagster.io/blog/monorepos-the-hub-and-spoke-model-and-copybara", "context": "works at Dagster", "use_case": "public repos inside internal monorepo", "switched_from": "", "story": "Google copybara: moving code between repositories"}, {"id": 779916400, "item_id": 48744775, "url": "https://news.ycombinator.com/item?id=48744775", "by": "dijit", "date": "2026-07-01", "stance": "neutral", "quote": "I finally got around to open sourcing the patches I made to provide Perforce support", "excerpt": "Ha! This post comes right at the time where I finally got around to open sourcing the patches I made to provide Perforce support which I use at my gamedev studio[0]. I find it kind of funny that perforce support was not included, only git support seems to exist in any meaningful way: despite the primary use of copybara being for releasing internal google code (which lives in Piper, a fork of Perforce). I actually got", "context": "gamedev studio", "use_case": "moving code between repositories", "switched_from": "", "story": "Google copybara: moving code between repositories"}, {"id": 779908992, "item_id": 48744312, "url": "https://news.ycombinator.com/item?id=48744312", "by": "nbobko", "date": "2026-07-01", "stance": "warn", "quote": "The tool turned out being unacceptably slow.", "excerpt": "At my previous company we tried to use this tool to sync parts of the code between two different git repos. The tool turned out being unacceptably slow. Handwritten bash scripts using git-replace and git-filter-repo [1] did a much better job [1]: https://github.com/newren/git-filter-repo", "context": "", "use_case": "syncing code between git repos", "switched_from": "", "story": "Google copybara: moving code between repositories"}, {"id": 779883952, "item_id": 48742747, "url": "https://news.ycombinator.com/item?id=48742747", "by": "willchen", "date": "2026-06-30", "stance": "recommend", "quote": "extremely helpful in open-sourcing things from google3 to github.", "excerpt": "i used this tool when i was at google, extremely helpful in open-sourcing things from google3 to github. still, i'm glad to just directly develop on github now :)", "context": "former Google employee", "use_case": "open-sourcing internal code", "switched_from": "", "story": "Google copybara: moving code between repositories"}, {"id": 779875040, "item_id": 48742190, "url": "https://news.ycombinator.com/item?id=48742190", "by": "klodolph", "date": "2026-06-30", "stance": "recommend", "quote": "I use it mostly for a simple fire and forget export, where I take a folder out of its original repo and preserve the history.", "excerpt": "Been using this for a while, mostly when I make a tool as part of a larger project and the tool is big enough to deserve its own release. It\u2019s powerful enough to do a whole bidirectional shipping operation where you export and import code\u2014no thanks, that\u2019s a hassle. I use it mostly for a simple fire and forget export, where I take a folder out of its original repo and preserve the history. Then I just move developmen", "context": "", "use_case": "exporting folder with history", "switched_from": "", "story": "Google copybara: moving code between repositories"}, {"id": 779865232, "item_id": 48741577, "url": "https://news.ycombinator.com/item?id=48741577", "by": "xyzzy_plugh", "date": "2026-06-30", "stance": "recommend", "quote": "Copybara is one of those things that you should have set up yesterday.", "excerpt": "Copybara is one of those things that you should have set up yesterday. It works great and I've seen many teams gain significant productivity when collaborating in a monorepo with public bits. If you're even toying with an internal monorepo you owe it to yourself to give it a try.", "context": "", "use_case": "monorepo with public bits", "switched_from": "", "story": "Google copybara: moving code between repositories"}, {"id": 779527841, "item_id": 48720490, "url": "https://news.ycombinator.com/item?id=48720490", "by": "neprotivo", "date": "2026-06-29", "stance": "compare", "quote": "without much heavier tools like Copybara", "excerpt": "Hi HN, I wrote up a Jujutsu workflow that I came up with recently. I wanted to work on a public open-source repository while also versioning the private context files that influenced each public commit: specs, product notes, experiments, and agent instructions. I use coding agents heavily, which means the specs are often as important as the final code. I wanted a proper way to manage them without making them reachabl", "context": "", "use_case": "", "switched_from": "", "story": "Projection: A JJ Workflow for splitting public and private files"}, {"id": 739580770, "item_id": 46223798, "url": "https://news.ycombinator.com/item?id=46223798", "by": "LoadingALIAS", "date": "2025-12-10", "stance": "compare", "quote": "I'd have had to use Google's Copybara (Java tooling or their GHA)", "excerpt": "Hey. Author here. I wrote a longer post about the motivation and design: https://dev.to/loadingalias/cargo-rail-making-rust-monorepos-boring-again-3i93 The Problem: I've been working on a low-level Rust workspace for a while now. Before I knew it, my 'justfile' was over 1k lines and I had 30 shell scripts for testing. My dep graph was WAY too large. I couldn't easily split a single crates, or a few crates to release ", "context": "", "use_case": "splitting crates into repos", "switched_from": "", "story": "Show HN: Cargo-rail: graph-aware monorepo tooling for Rust; 11 deps"}]}