将远程Git仓库迁移到新的Gerrit项目

3

有一个运行Gerrit的服务器,而我没有SSH登录权限。不过,我有一个具有管理员权限的Gerrit帐户。

我如何创建一个新的Gerrit项目,然后将远程Git仓库导入其中?我希望所有信息都被迁移,例如分支和标签。

以下是更多信息:

Gerrit服务器主机名:gerrit.example.com

旧的Git repo URL:ssh://git@git.example.com/foobar

新的Gerrit项目名称:foobar

具有管理员权限的Gerrit用户帐户:erik

1个回答

5

您可以在本地桌面上运行此Shell脚本。脚本中设置了Shell变量以匹配您的情况。

#!/bin/sh

# Replace these variable values according to your situation
gerritproject=foobar
gerritserver=gerrit.example.com
gerritadmin=erik
giturl=ssh://git@git.example.com/foobar

set -e
gitdir=`mktemp -d`
ssh -p 29418 $gerritadmin@$gerritserver gerrit create-project --name $gerritproject
cd $gitdir
git clone --mirror $giturl tmpname
cd tmpname
git remote add gerritremote ssh://$gerritadmin@$gerritserver:29418/$gerritproject
git push gerritremote refs/*:refs/*

我回答了自己的问题,因为我发现这个信息很难得到。我希望我的答案是正确的。也许有人可以评论一下吗? - Erik Sjölund
基本上是这样,但不要忘记推送refs/tags/。为了获取所有的引用,我会使用--mirror克隆并推送refs/:refs/*。 - Magnus Bäck
@MagnusBäck 我按照你的建议编辑了答案。现在看起来还好吗? - Erik Sjölund
是的,看起来不错。可能有一个小问题:如果原始存储库是Gerrit存储库(或曾经是),则您将拥有一个refs/meta/config引用,您可能希望推送它,但尝试推送它很可能会导致非快进更新。 - Magnus Bäck
历史记录也会被迁移吗? - Doron Shai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接