在Gitlab实例之间迁移回购

Bjø*_*ten 7 linux migration git repository gitlab

由于我的旧安装Gitlab太难升级(Thread on TKL支持论坛:http://www.turnkeylinux.org/forum/support/20120913/upgrading-gitlab),我已经下载了当前的TKL Gitlab发行版,并且遵循Gitlabs标准升级路径,这样我现在可以使用TKLBAM运行完全升级的Gitlab 6.1安装以及所有好东西.到现在为止还挺好.

但是,事实证明我们旧版本的gitlab没有提供HTTP url到repos,所以这意味着我不能在Gitlab 6.1中使用"导入现有存储库"功能

我知道我可以简单地将旧的Git存储库从旧VM复制到新VM,但是如何在新VM上的Gitlab中显示这些存储库?

小智 13

我最近从gitolite迁移到gitlab,官方rake任务gitlab:import:repos为我工作.我正在使用gitlab 6.1.0(82f3446).这是我做的:

  • rsync裸露的回购从gitolite到repositories/{group}/.确保替换{repository}为gitolite repo的名称,并更改gitlab服务器的主机名.

    rsync -rth --progress repositories/{repository}.git \
    git@gitlab-server:/home/git/repositories/{group}/
    
    Run Code Online (Sandbox Code Playgroud)

    此处{group}是要将存储库添加到的用户组的名称.如果您没有任何特定组,请选择root组名称.

  • 修复权限 - 仅在rsync用户不需要时才需要git:

    sudo chown -R git:git repositories/{group}/
    
    Run Code Online (Sandbox Code Playgroud)
  • cd ~/gitlab

  • 运行rake任务以导入所有新存储库:

    bundle exec rake gitlab:import:repos RAILS_ENV=production
    
    Run Code Online (Sandbox Code Playgroud)

现在,如果您以管理员身份登录,您会发现新项目已添加.

有关更多信息,请参阅下面的"将裸存储库导入GitLab项目实例" http://{your-gitlab-server}/help/raketasks.

在您的情况下,您可以登录到旧的TKL系统并rsync所有裸回购到新实例,然后导入.

  • 对于我在CentOS 6.5上全新安装v6.5.1失败了...我将一个裸仓库复制到/home/git/repositories/username/repo.git,但是rake告诉我"尝试创建组用户名失败" .然后它在/ home/git/repositories/root(管理员命名空间)中创建一个空的repo.请参阅https://github.com/gitlabhq/gitlabhq/issues/3693和https://github.com/gitlabhq/gitlabhq/issues/4137 (2认同)

小智 7

一种选择是:

  1. 将旧的repo从gitlab克隆到dev机器上.
  2. 在新的gitlab上创建一个空白仓库.
  3. 在dev计算机上添加新的repo作为远程.
  4. 将所有内容推回新的仓库.
  5. 从远程存储库列表中删除旧存储库.

要创建一个名为newRepo的远程,请执行:( git remote add newRepo gitlab.localhost.com:User/newRepo.git将末尾的url替换为repo的url)

  • 好的,如果你有一个回购,那就太好了.但是,如果您有50多个回购,分组,有30多个用户,具有基于群组/回购的不同访问权限,该怎么办?那你是不是没有划桨的那条小溪? (2认同)

tvw*_*tvw 5

在阅读了ChrisA的答案之后,我几乎按照以下方式做了这件事,这让我有点头疼如何实际做到这一点.该示例将一个repo从github复制到gitlab,使源和目标更加清晰.

  1. 将旧的repo从github克隆到dev机器上(创建一个裸的repo):

    $ git clone --mirror git@github.com:me/myrepo.git
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在新的gitlab上创建一个空白仓库.

  3. 在dev计算机上添加新的repo作为远程.

    $ cd myrepo.git
    $ git remote add newRepo git@gitlab.com:me/myrepo.git
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将所有内容推回新的仓库.

    $ git push --mirror newRepo
    
    Run Code Online (Sandbox Code Playgroud)

而已.

这样,它将所有分支和标记复制到新目标.

您现在可以从开发机器中删除克隆的裸仓库.