我有两个关于 Gerrit 的问题:
如何将现有的 Git 存储库转换或导入 Gerrit 的格式?有很多没有 Gerrit 控制的提交,我想简单地将这些提交推送到 Gerrit 项目中。
我看到了两种方法:
将现有的裸 Git 目录复制到 Gerrit,然后将其添加到数据库。这是一种安全的方法吗?
将所有提交从我的本地存储库推送到 gerrit 存储库。
如何将存储库从 Gerrit 恢复为原始 Git 格式?是否需要删除 Gerrit 的特殊
*/for/*
分支才能做到这一点?
首先:没有特殊的“Gerrit 格式”。Gerrit 使用常规的 git 存储库。
在 Gerrit 中创建一个新项目(无需初始提交)。将创建的存储库作为远程添加到现有存储库并简单地推送。您可以将 Gerrit 配置为允许直接推送到存储库(绕过审查),从而允许您导入整个存储库。
或者,如果您可以直接访问 Gerrit 的存储库位置(例如,通过 SSH 或在本地文件系统上),您可以直接推送到存储库(无论 Gerrit 创建它的位置),完全绕过 Gerrit。但是,之后您需要刷新 Gerrit 缓存,以便 Gerrit 注意到存储库 HEAD 已更新。
如前所述,没有“Gerrit 格式”。只需从 gerrit 克隆您的存储库,一切都很好。您无需担心任何特殊分支。
我将很多git项目导入gerrit,我发现最简单的方法是将git存储库的xy.git目录复制到gerrit存放git repos的目录。gerrit 进程重新启动后,新项目在新项目列表中,您可以编辑描述和访问权限。
只需在 Gerrit 中创建新项目,然后将 git 存储库推送到那里。如果你想绕过审查,直接推送到 master 而不是 refs/for/master。您需要为自己添加执行此操作的权限。
我认为错误消息可能是由于您尚未将 ssh 密钥导入 Gerrit 造成的。
只需从 Gerrit 克隆存储库。它不会包含任何额外的分支。
附加信息...
因此,您可以将 git 存储库直接复制到 gerrit 数据位置,它会在重新启动(或刷新缓存 (reindex))后显示。
但是您将丢失存储库中的重要配置,这可能会阻止推送、创建分支、审查等功能。
如果你查看 repo,你会发现它缺少 'refs/meta/config' 分支。因此,在没有更改的正常系统中,这将继承自所有项目,但这可能是您配置中的任何项目。
修复配置的步骤:
例如
[access]
inheritFrom = All-Projects
您现在可以像其他项目一样使用具有合理继承配置的存储库。