Google copybara:在代码库之间移动代码
一个用于转换和移动代码的工具。Copybara 是 Google 内部使用的工具。它在代码库之间转换和移动代码。通常,源代码需要存在于多个代码库中,而 Copybara 允许您在这些代码库之间转换和移动源代码。一种常见情况是一个项目需要在机密代码库和公共代码库之间保持同步。Copybara 要求您选择一个代码库作为权威代码库,以确保始终有一个真实来源。然而,该工具允许对任何代码库进行贡献,任何代码库都可以用于发布版本。最常见的用例涉及将代码重复移动从一个代码库到另一个代码库。Copybara 还可以用于将代码一次性移动到新代码库。Copybara 的一些示例用法包括:将来自机密代码库的代码段导入到公共代码库中;将来自公共代码库的代码导入到机密代码库中;将来自非权威代码库的更改导入到权威代码库中。当在非权威代码库中进行更改时(例如,公共代码库中的贡献者),Copybara 会将该更改转换并移动到权威代码库中的适当位置。任何合并冲突都以与权威代码库中过时更改相同的方式处理。Copybara 的主要特性之一是无状态,或者更具体地说,它在目标代码库中存储状态(作为提交消息中的标签)。这允许多个用户(或服务)使用 Copybara 进行相同的配置/代码库并获得相同的结果。目前,唯一支持的代码库类型是 Git。虽然 Copybara 也能够读取 Mercurial 代码库,但该功能仍处于实验阶段。可扩展架构允许为几乎任何用例添加定制的源和目标。将来将增加对其他代码库类型的正式支持。示例核心工作流(name = "default",origin = git.github_origin(url = "https://github.com/google/copybara.git",ref = "master"),destination = git.destination(url = "file:///tmp/foo"),# 复制所有内容,但如果存在,则不删除 README_INTERNAL.txt 文件。destination_files = glob(["third_party/copybara/**"], exclude = ["README_INTERNAL.txt"]),authoring = authoring.pass_thru("Default email <default@default.com>"),transformations = [core.replace(before = "//third_party/bazel/bashunit",after = "//another/path:bashunit",paths = glob(["**/BUILD"])),core.move("","third_party/copybara")],)运行:$(mkdir /tmp/foo; cd /tmp/foo; git init --bare)$ copybara copy.bara.sky使用 Copybara 开始的最佳方式是使用每周的“快照”版本,其中包括预构建的二进制文件。请注意,这些版本是自动发布的,没有任何手动测试、版本兼容性或正确性保证。从 https://github.com/google/copybara/releases 选择一个版本。从源代码构建要使用未发布版本的 Copybara,您需要从 HEAD 进行编译。为此,您需要执行以下操作:安装 JDK 11。安装 Bazel。将 Copybara 源代码克隆到本地:git clone https://github.com/google/copybara.git构建:bazel build //java/com/google/copybara bazel build //java/com/google/copybara:copybara_deploy.jar 以创建可执行的 uberjar。测试:bazel test //... 如果您想确保您没有使用坏版本。请注意,某些测试需要安装底层工具(例如 Mercurial、Quilt 等)。如果您的拉取请求与这些模块无关,可以跳过这些测试(我们的 CI 仍会运行所有测试)。系统软件包这些软件包可以使用适合您系统的包管理器进行安装。Arch Linux aur/copybara-git与 Bazel 插件一起使用 Intellij如果您使用 Intellij 和 Bazel 插件,请使用以下项目配置:目录:copybara/integration java/com/google/copybara javatests/com/google/copybara third_party 目标://copybara/integration/... //java/com/google/copybara/... //javatests/com/google/copybara/... //third_party/... 注意:配置文件可以存储在任何地方,甚至是在本地文件夹中。我们建议使用版本控制系统(如 git)来存储它们;将其视为源代码。在 Bazel 中使用预构建的 Copybara如果使用每周的快照版本,请按以下方式安装 Copybara:Copybara 附带版本 65.0 的类文件,因此必须在 Java Runtime 21 或更高版本中运行。添加到 .bazelrc 文件:run --java_runtime_version=remotejdk_21使用 http_jar 下载发布工件。在 WORKSPACE 中:load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar")在 MODULE.bazel 中:http_jar = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar")在 WORKSPACE 或 MODULE.bazel 中,填入 [version] 占位符:http_jar(name = "c
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡