从git导入存储库到gerrit

时间:2013-02-09 15:36:41

标签: git gerrit

我有两个关于Gerrit的问题:

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

    我认为有两种方法可以做到:

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

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

  2. 如何将存储库从Gerrit还原为原始Git格式?是否需要删除Gerrit的特殊*/for/*分支才能执行此操作?

4 个答案:

答案 0 :(得分:28)

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

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

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

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

答案 1 :(得分:8)

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

答案 2 :(得分:6)

  1. 只需在Gerrit中创建新项目,然后在那里推送git存储库。如果您想绕过评论,请直接推送到master而不是refs / for / master。您需要添加权限才能自行完成此操作。

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

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

答案 3 :(得分:0)

其他信息...

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

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

如果您查看存储库,将会看到它缺少'refs / meta / config'分支。 因此,在没有更改的普通系统中,它将继承自“所有项目”,但这可以是您配置中的任何项目。

修复配置的步骤:

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

例如

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

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