Hacker News 中文摘要

RSS订阅

Google copybara:在代码仓库间移动代码 -- Google copybara: moving code between repositories

文章摘要

Copybara是谷歌内部开发的工具,用于在代码仓库间进行转换和移动。它要求指定一个权威仓库作为唯一真实来源,但允许向任何仓库贡献代码。常见用途包括在机密仓库和公开仓库之间同步代码,以及将代码一次性迁移到新仓库。

文章总结

好的,这是根据您的要求,对原文进行中文重述和精简后的版本:

标题: GitHub - google/copybara:Copybara:一个用于在代码仓库之间转换和移动代码的工具。

核心内容:

Copybara 是谷歌内部使用的一款工具,用于在代码仓库之间进行代码的转换和移动。

在实际开发中,一份源代码常常需要存在于多个仓库中(例如,一个内部保密仓库和一个公开仓库)。Copybara 能够帮助您在这些仓库之间转换和移动代码,并保持它们同步。该工具要求您指定一个“权威仓库”作为唯一真实来源,但同时也允许向任何仓库提交贡献,并可从任何仓库发布版本。

Copybara 最常见的用途是重复性地将代码从一个仓库迁移到另一个仓库,但也可用于一次性迁移。

主要应用场景包括:

  • 将部分代码从保密仓库导入到公开仓库。
  • 将代码从公开仓库导入到保密仓库。
  • 将非权威仓库中的变更(例如,公开仓库中贡献者的修改)导入到权威仓库。Copybara 会处理这些变更的转换和移动,并像处理权威仓库内部过时的变更一样解决合并冲突。

核心特性:

Copybara 的一个主要特点是它是无状态的,或者说,它将状态存储在目标仓库中(作为提交信息中的一个标签)。这使得多个用户或服务可以使用相同的配置和仓库来运行 Copybara,并获得一致的结果。

当前支持情况:

目前,Copybara 唯一正式支持的仓库类型是 Git。它也能从 Mercurial 仓库读取数据,但该功能仍处于实验阶段。其可扩展的架构允许为几乎任何用例添加自定义的源和目标仓库。未来将增加对其他仓库类型的官方支持。

(以下为原文中关于示例、安装、构建、文档、联系方式等具体操作指南和细节,已按您的要求删除)

评论总结

根据评论内容,总结主要观点如下:

1. 工具价值与适用场景(高认可度) - 评论5(评分None)强调Copybara应尽早部署,能显著提升团队在monorepo中协作公共代码的效率:"It works great and I've seen many teams gain significant productivity when collaborating in a monorepo with public bits." - 评论4(评分None)提出典型使用场景:多个仓库共享少量代码,但提取库、发布版本、更新依赖成本过高时,可用Copybara同步代码文件夹:"is it handy for situations where you have multiple repos that want to share a little code, but it's not worth the trouble of extracting a library?"

2. 替代方案与对比(中立观点) - 评论3(评分None)列举同类工具:Rust项目使用Josh同步提交,Meta曾用fbshipit但已弃用:"Rust is using a tool called Josh to sync commits...Meta used to have an open source tool called fbshipit." - 评论8(评分None)询问与git submodules/subtrees的对比:"Anyone knows how this compares to using git submodules and subtrees?" - 评论9(评分None)提出Jujutsu可实现类似功能且无需Copybara:"If you are using Jujutsu you can achieve a basic way to maintain a public repo from a private monorepo with very little code."

3. 使用经验与注意事项(正面为主) - 评论10(评分None)分享实际使用:主要用于单向导出(fire and forget export),保留历史记录,新项目布局可完全不同:"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." - 评论6(评分None)询问潜在缺点:"I'm curious what downsides folks have experienced with this tool?" - 评论7(评分None)提出担忧:可能被用于GitHub上的恶意模式(如诱饵仓库):"That seems like a tool easily adoptable by folks engaging in dark patterns on GitHub."

4. 其他反馈 - 评论1(评分None)提及5年前用嵌套git仓库和脚本实现类似功能,但规模有限:"My shell script definitely wasn't google scale tho!" - 评论2(评分None)称赞命名:"Cute name. (Naming is hard and important.)"