从git导入存储库到gerrit

问题描述 投票:28回答:4

我有两个关于Gerrit的问题:

  1. 如何将已存在的Git存储库转换或导入Gerrit的格式?有很多没有Gerrit控件的提交,我想简单地将这些提交推送到Gerrit项目中。 我认为有两种方法可以做到: 将现有的裸Git目录复制到Gerrit,然后将其添加到数据库。这是一种安全的方法吗? 将所有提交从我的本地存储库推送到gerrit存储库。
  2. 如何将存储库从Gerrit还原为原始的Git格式?是否需要删除Gerrit的特殊*/for/*分支才能做到这一点?
git gerrit
4个回答
28
投票

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

  1. 在Gerrit中创建一个新项目(没有初始提交)。将创建的存储库作为远程添加到现有存储库并简单地推送。您可以配置Gerrit以允许直接推入存储库(绕过审查),允许您导入整个存储库。 或者,如果您可以直接访问Gerrit的存储库位置(例如,通过SSH或本地文件系统),您可以直接进入存储库(Gerrit创建它),完全绕过Gerrit。然而,您需要在之后刷新Gerrit缓存,以便Gerrit注意到存储库HEAD已更新。
  2. 如上所述,没有“Gerrit格式”。只需从gerrit克隆你的存储库,一切都很好。您无需担心任何特殊分支。

8
投票

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


6
投票
  1. 只需在Gerrit中创建新项目,然后在那里推送git存储库。如果您想绕过评论,请直接推送到master而不是refs / for / master。您需要添加权限才能自行完成此操作。 我认为错误消息可能是由于您尚未将您的ssh密钥导入Gerrit而引起的。
  2. 只需从Gerrit克隆存储库。它不包括任何额外的分支。

0
投票

附加信息...

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

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

如果您查看回购,您将看到它缺少'refs / meta / config'分支。因此,在没有更改的正常系统中,这将继承自All-Projects,但这可能是您配置中的任何项目。

修复配置的步骤:

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

EG

[access]
   inheritFrom = All-Projects
  1. 单击保存,然后单击关闭。
  2. 点击评论(给它+2)
  3. 单击“发布编辑”以将此更改保存到gerrit中。

您现在可以使用具有合理继承配置的存储库,与您的其他项目相同。

© www.soinside.com 2019 - 2024. All rights reserved.