如何将git存储库从github移动到运行gitolite的本地服务器

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

我想知道将目前托管在github上的所有git存储库移动到基于gitolite的新git服务器的更好方法。

仅仅是为了了解,我正在进行此转换的原因是采用Redmine来支持我们的项目管理流程。

git gitolite
5个回答
6
投票

在gitolite-admin / conf / gitolite.conf中添加新的repo

repo my-new-repo
    RW+            = your-user

添加,提交并将更改推送到gitolite-admin

git add conf/gitolite.conf
git commit -m "Added my-new-repo"
git push origin

克隆你的github repo并检查所有分支

git clone github.com:/USERNAME/YOUR_REPO.git
cd YOUR_REPO
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do     git branch --track ${branch##*/} $branch; done

删除github遥控器,并添加你的gitolite遥控器:

git remote rm origin
git remote add origin YOURSERVER:my-new-repo.git

将所有refs推送到由gitolite管理的repo:

git push --all origin

我验证了我的测试存储库中的步骤,并且所有refs似乎都已传播到新的repo中。

更新:像Seth指出的那样,除了分支之外的任何其他引用都不会传播到新的repo。我也觉得镜子会是一个更好的选择。


5
投票

参考这个:http://gitolite.com/gitolite/basic-admin/#appendix-1-bringing-existing-repos-into-gitolite。怎么样:

  1. 在gitolite服务器上,使用命令git clone --mirror <github git repo path>创建github存储库的镜像
  2. 将镜像回购移动到上面链接中的正确位置,然后按照将现有回购移动到指南的gitolite的部分进行操作?

2
投票

我能想到的最好的事情是拉一个本地副本,将原点更改为新服务器,然后推送:

git pull --all
git remote rm origin
git remote add origin <new repo address>
git push --all --repo=origin

1
投票

也许您还想将标签带到新服务器。这可以通过

    git push --tags

0
投票

要将GitHub仓库镜像到Gitolite,首先在Gitolite上创建一个新的仓库(使用gitolite-admin仓库 - 我假设Gitolite管理员知道如何做),但这是一个示例配置条目:

repo github/<gh-user>/<gh-repo>
desc = "Repository description [https://github.com/<gh-user>/<gh-repo>]"
owner = "My Name"
category = "GitHub"
RW+ = my_key

其中<gh-user>是GitHub用户,<gh-repo>是镜像的GitHub存储库。此示例将镜像放在GitHub和user子目录中,但您可以使用任何适合的repo路径。

然后,从任何可以访问GitHub和Gitolite的地方:

$ git clone --mirror https://github.com/<gh-user>/<gh-repo>
$ cd <gh-repo>.git
$ git push --mirror gitolite git@git:github/<gh-user>/<gh-repo>
$ cd ..
$ rm -rf <gh-repo>.git

其中git@git是用于连接Gitolite的SSH用户和主机名。本地克隆是临时的,之后会被删除。

OP只询问移动存储库,在这种情况下,他可能会停在这里。但是,如果需要在GitHub上托管repo的本地镜像并定期同步本地镜像,那么这是一种方法。

要将Gitolite镜像与GitHub同步,请以Gitolite管理员(git)用户身份登录Gitolite服务器并执行以下配置:

$ cd ~git/repositories/github/<gh-user>/<gh-repo>
$ git remote add origin https://github.com/<gh-user>/<gh-repo>
$ git config remote.origin.fetch "+*:*"

here清楚地解释了命令中的参数。

然后,同步回购:

$ git fetch --prune

可以通过cron工作自动获取。

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