微软大手笔收购Github,Git各大仓库迁移方法备用

M$要收购Github尘埃落定,昨天微软确认以75亿美刀(合人名币400多亿)收购github。虽然github目前仍然是我们不可分割的一部分,但是被微软收购后,下一步走向如何?我们还未知。虽然Github新任CEO Nat 承诺:

1、Github将保持独立运作,独立地社区、平台和业务

2、Github将保持原有的产品哲学不变

但是关于git仓库迁移的方法,你了解了么?学点知识,做点储备,还是应该的,比如你重要的私有仓就该增加个选择。

本文虫虫给大家介绍把github仓库迁移到Bitbucket仓库和Gitlab(自建)的方法,整个迁移过程基本上也不难,遵循特定步骤即可。

Bitbucket相对于Github来说其私有仓的定价按照用户数计算的方法也比较有优势,比如5个以内的用户就可以免费使用私有仓。

注意从github到Bitbucket迁移的方法是普适一种方法,也适用于Coding以及开源中国的码云等。

微软大手笔收购Github,Git各大仓库迁移方法备用

而Gitlab现在随着部署的傻瓜化(一键安装)和容器化(docker)也越来越易于自建一个git仓库平台,而且Gitlab的强大CI/CD(持续的集成和发布)功能,是实现企业自动化、敏捷化的最简洁方式,值得大力推广。

微软大手笔收购Github,Git各大仓库迁移方法备用

从Github仓库迁移到Bitbucket

1.Bitbucket网站顶部菜单中,单击repository,然后单击Import exsting code

微软大手笔收购Github,Git各大仓库迁移方法备用

2.Source源中选择Git

3.选择"Requites authorization"。然后添加你的github帐户信息,用户名和密码。

注意:你可能会收到身份验证被拒绝错误的信息,直接忽略它好了。

4.从你的Github仓库中,复制仓库的Url。格式(Github/USERNAME/yourrepo.git)注意用HTPPS格式的,见下面实例:

微软大手笔收购Github,Git各大仓库迁移方法备用

5.将你在步骤4中复制的URL添加到Bitbucket中的URL字段

6. Bitbucke新仓库下的字段将自动获取github的内容并自动填入,包括名称和介绍。如果你想更改名称并添加说明,可在这步进行。

微软大手笔收购Github,Git各大仓库迁移方法备用

7.单击Import repository,稍等一段时间(取决于你仓库的大小)即可。

更改本地仓的远程仓库地址

1.在本地计算上用cd 到仓库目录并且打开git shell 终端

2.键入命令git remote -v。查看远程仓的地址,是不是还是github的地址。

3.编辑仓库的git配置文件:vim .git/config(注意你也可以用git remote add 添加Bitbucket的仓库地址,而保持github地址不变)

4.更改网址(远程"origin"下)并将github更改为bitbucket。如果两个网站你用的用户也不一样,Url的这部分也需要修改

(git@bitbucket:USERNAME/REPONAME.git,注意为避免被当做推广链,此处网站url部分缩写)

如果你两个网站的用户一样,你可以直接用一下单行命令替换:

perl -i.temp -lpe 's/github.com/bitbucke.org/' .git/config

删除Github仓库

当你测试你的仓库已经完全迁入Bitbucket,并且可以使用无误后,你就可以从 Github删除仓库了。

1.打开你项目仓库的"Settings"

微软大手笔收购Github,Git各大仓库迁移方法备用

2.下拉倒下方Danger Zone选项卡下,单击"Delete this repository"

微软大手笔收购Github,Git各大仓库迁移方法备用

为了安全起见,防止误删除,github有一个确认框,需要你输入下仓库名称,然后点击"I understand the comsequences,delet this repository",就可以删除你的github仓库了。

微软大手笔收购Github,Git各大仓库迁移方法备用

3、修改github的账号费用计划,把你的账号改为免费版。

打开你帐户-Settings。打开Billing菜单。点击更改计划选项卡,将你的用户降级为免费帐户。

微软大手笔收购Github,Git各大仓库迁移方法备用

从GitHub仓库迁移到GitLab

作为自建的git平台,gitlab提供了更多的导入选择,使得你有更方便的导入方法(比如批量导入)。下面我们实例说明下从github导入到gitlab过程,导入支持两种方法:GitHub集成和个人访问token。

目前从github导入仓库时候,可以导入的github仓库元素包括:

仓库说明(GitLab 7.7+)、 Git仓库数据(GitLab 7.7+)、问题(GitLab 7.7+)、Pull requests(GitLab 8.4+)、Wiki(GitLab 8.4+)、里程碑(GitLab 8.7+)、标签(GitLab 8.7+)、发行说明(GitLab 8.12+)、Pull requests审查意见(GitLab 10.2+)、问题和Pull requests评论等基本上所有的项目。

Pull requests和问题的的中的链接可以保留下来(GitLab 8.7+)。

仓库公共访问权限也会被保留。如果你的仓库是GitHub私有仓库,迁移过来后GitLab也是私有仓库。

github迁入说明

问题和pull requests导入时,GitHub importer会尝试使用GitHub ID在GitLab数据库中查找GitHub所有者/代理者。为此,GitHub所有者/代理者应事先在GitLab中登录并关联他们的GitHub帐户。如果在GitLab的数据库中找不到用户,则项目创建者(很多时候,创建者也是当前用来迁入项目的用户)都设置为创建者,但保留问题中的原始GitHub所有者。

如果它们不存在或者其命名空间已经被占用,importer则会创建一个新的命名空间(组),否则仓库将在用户的名称空间下导入。

importer还将会导入的已经被forks过的以及有过pull requests操作的分支。这些分支将通过结构为

"GH-SHA-Username/Pull-Request-number/fork-name/branch"的命名方法导入。这种结构和原始的GitHub仓库对比,有可能会出现分支上的差异。

有关更多技术说明和体系结构概述,请参阅使用GitHub importer 技术文档。

导入过程

项目导入在gitlab创建页面的Import Project,入下图所示。

微软大手笔收购Github,Git各大仓库迁移方法备用

图上我们可以看见,gitlab的导入选项非常丰富,支持从所有常见的仓库网站进行导入,包括GitHub、Bitbucket、Gitlab,Google Code、Fogbugz、Gitea以及其他git仓库的URL。

我们点击GitHub链接,导入授权过程将开始。有两种方法可以授权访问你的GitHub仓库:使用GitHub集成(需要GitLab管理员启用该种方式),这是首选方式,因为可以保留GitHub所有者/代理者;使用GitHub提供的个人访问令牌。

微软大手笔收购Github,Git各大仓库迁移方法备用

使用GitHub集成授权访问你的仓库

如果你的GitLab管理员启用了GitHub集成,则可以使用它来进行仓库导入。通过GitHub帐户和GitLab关联,从而实现用户的正确迁移。连接GitHub后,可以列出你账号下GitHub仓库列表,你需要通过点击列表的GitHub链接获取你的项目的访问权限。

确认权限授予后,你将自动重定向到gitlab importer工具。

你现在可以继续并选择要导入的仓库。

使用个人访问token授权访问你的仓库

要求创建者/代理者在问题和pull requests中的正确映射时,你必须使用GitHub集成导入,而不是个人访问token的方式。如果GitLab管理员启用了GitHub集成,你应该首选该种方法。

如果你的gitlab管理员未启动GitHub集成,导致你无法使用该方法,你可以使用GitHub执行一次性授权,以授予GitLab访问你仓库的权限:

1、打开(github settings/tokens/new)。

微软大手笔收购Github,Git各大仓库迁移方法备用

为了安全,github对该页面访问需要你输入密码确认。

2.输入该token的说明,比如对你用途等做简单描述。

微软大手笔收购Github,Git各大仓库迁移方法备用

3.检查并选择仓库范围选项,包括repo、各种管理权限、gist、用户、通知、删除等等。

4.单击Create Token按钮,就会生成该token。

微软大手笔收购Github,Git各大仓库迁移方法备用

5.复制token的哈希值,点击该值的复制按钮,复制该值。

6.在GitLab导入页面输入该token的哈希值,提供给GitHub import程序。

7.点击列出你的GitHub仓库按钮,等待GitLab读取你的仓库信息。完成后,会跳转到导入仓库选择页面:

微软大手笔收购Github,Git各大仓库迁移方法备用

选择要导入的仓库,你可以点击最右边的Import按钮,导入单个仓库,也可以点击上面的Import all repositories(绿色)按钮导入所有仓库。

通过单个仓库导入时候,你可以选择设置一个和github不同的项目名称,见上面的图。

项目导入优化

对于比较大的仓库(比如很多安卓开发项目),或者你有大量的仓库需要迁移(几百个),导入可能比较慢,比较耗时。为了减少不必要地等待时间,你可以通过下面方式来加速导入。

首先、建议你选择一个可以访问外网的服务器(VPS)来部署你的gitlab,或者用其他的网络加速方式。

其次通过设置gitlab的任务参数ithub_importer和

github_importer_advance_stage。一般建议至少有4个Sidekiq进程(每个运行的线程数等于CPU内核数)来处理这些队列。而且不同进程最好跑在不同的服务器上运行。

最后,选用比较好的服务器,比如通过增加存储Git仓库的磁盘的IO吞吐量(使用固态硬盘),增加CPU容量,加大内存,也可以缩短仓库迁移所花费的时间。


分享到:


相關文章: