29

我有两个关于 Gerrit 的问题:

  1. 如何将现有的 Git 存储库转换或导入 Gerrit 的格式?有很多没有 Gerrit 控制的提交,我想简单地将这些提交推送到 Gerrit 项目中。

    我看到了两种方法:

    1. 将现有的裸 Git 目录复制到 Gerrit,然后将其添加到数据库。这是一种安全的方法吗?

    2. 将所有提交从我的本地存储库推送到 gerrit 存储库。

  2. 如何将存储库从 Gerrit 恢复为原始 Git 格式?是否需要删除 Gerrit 的特殊*/for/*分支才能做到这一点?

4

4 回答 4

31

首先:没有特殊的“Gerrit 格式”。Gerrit 使用常规的 git 存储库。

  1. 在 Gerrit 中创建一个新项目(无需初始提交)。将创建的存储库作为远程添加到现有存储库并简单地推送。您可以将 Gerrit 配置为允许直接推送到存储库(绕过审查),从而允许您导入整个存储库。

    或者,如果您可以直接访问 Gerrit 的存储库位置(例如,通过 SSH 或在本地文件系统上),您可以直接推送到存储库(无论 Gerrit 创建它的位置),完全绕过 Gerrit。但是,之后您需要刷新 Gerrit 缓存,以便 Gerrit 注意到存储库 HEAD 已更新。

  2. 如前所述,没有“Gerrit 格式”。只需从 gerrit 克隆您的存储库,一切都很好。您无需担心任何特殊分支。

于 2013-02-09T16:08:24.610 回答
8

我将很多git项目导入gerrit,我发现最简单的方法是将git存储库的xy.git目录复制到gerrit存放git repos的目录。gerrit 进程重新启动后,新项目在新项目列表中,您可以编辑描述和访问权限。

于 2013-10-25T11:07:02.237 回答
6
  1. 只需在 Gerrit 中创建新项目,然后将 git 存储库推送到那里。如果你想绕过审查,直接推送到 master 而不是 refs/for/master。您需要为自己添加执行此操作的权限。

    我认为错误消息可能是由于您尚未将 ssh 密钥导入 Gerrit 造成的。

  2. 只需从 Gerrit 克隆存储库。它不会包含任何额外的分支。

于 2013-02-09T16:00:11.287 回答
0

附加信息...

因此,您可以将 git 存储库直接复制到 gerrit 数据位置,它会在重新启动(或刷新缓存 (reindex))后显示。

但是您将丢失存储库中的重要配置,这可能会阻止推送、创建分支、审查等功能。

如果你查看 repo,你会发现它缺少 'refs/meta/config' 分支。因此,在没有更改的正常系统中,这将继承自所有项目,但这可能是您配置中的任何项目。

修复配置的步骤:

  1. 项目清单
  2. 复制 git 仓库
  3. 刷新缓存/重启gerrit/reindex
  4. 从项目列表视图中打开 repo
  5. 点击分支
  6. 在修订版“HEAD”处输入“refs/meta/config”的新分支名称
  7. 从项目常规视图中单击“编辑配置”。
  8. 这会在此分支中创建一个文件 (project.config) 用于配置。添加一些默认配置,或者取自工作存储库,或者如下所示:

例如

[access]
   inheritFrom = All-Projects
  1. 单击保存,然后单击关闭。
  2. 点击评论(给它+2)
  3. 单击 Publish Edit 将此更改保存到 gerrit。

您现在可以像其他项目一样使用具有合理继承配置的存储库。

于 2019-05-01T19:36:37.113 回答