M$要收购Github尘埃落定,昨天微软确认以75亿美刀(合人名币400多亿)收购github。虽然github目前仍然是我们不可分割的一部分,但是被微软收购后,下一步走向如何?我们还未知。虽然Github新任CEO Nat 承诺:
1、Github将保持独立运作,独立地社区、平台和业务
2、Github将保持原有的产品哲学不变
但是关于git仓库迁移的方法,你了解了么?学点知识,做点储备,还是应该的,比如你重要的私有仓就该增加个选择。
本文虫虫给大家介绍把github仓库迁移到Bitbucket仓库和Gitlab(自建)的方法,整个迁移过程基本上也不难,遵循特定步骤即可。
Bitbucket相对于Github来说其私有仓的定价按照用户数计算的方法也比较有优势,比如5个以内的用户就可以免费使用私有仓。
注意从github到Bitbucket迁移的方法是普适一种方法,也适用于Coding以及开源中国的码云等。
而Gitlab现在随着部署的傻瓜化(一键安装)和容器化(docker)也越来越易于自建一个git仓库平台,而且Gitlab的强大CI/CD(持续的集成和发布)功能,是实现企业自动化、敏捷化的最简洁方式,值得大力推广。
从Github仓库迁移到Bitbucket
1.Bitbucket网站顶部菜单中,单击repository,然后单击Import exsting code
2.Source源中选择Git
3.选择"Requites authorization"。然后添加你的github帐户信息,用户名和密码。
注意:你可能会收到身份验证被拒绝错误的信息,直接忽略它好了。
4.从你的Github仓库中,复制仓库的Url。格式(Github/USERNAME/yourrepo.git)注意用HTPPS格式的,见下面实例:
5.将你在步骤4中复制的URL添加到Bitbucket中的URL字段
6. Bitbucke新仓库下的字段将自动获取github的内容并自动填入,包括名称和介绍。如果你想更改名称并添加说明,可在这步进行。
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"
2.下拉倒下方Danger Zone选项卡下,单击"Delete this repository"
为了安全起见,防止误删除,github有一个确认框,需要你输入下仓库名称,然后点击"I understand the comsequences,delet this repository",就可以删除你的github仓库了。
3、修改github的账号费用计划,把你的账号改为免费版。
打开你帐户-Settings。打开Billing菜单。点击更改计划选项卡,将你的用户降级为免费帐户。
从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,入下图所示。
图上我们可以看见,gitlab的导入选项非常丰富,支持从所有常见的仓库网站进行导入,包括GitHub、Bitbucket、Gitlab,Google Code、Fogbugz、Gitea以及其他git仓库的URL。
我们点击GitHub链接,导入授权过程将开始。有两种方法可以授权访问你的GitHub仓库:使用GitHub集成(需要GitLab管理员启用该种方式),这是首选方式,因为可以保留GitHub所有者/代理者;使用GitHub提供的个人访问令牌。
使用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对该页面访问需要你输入密码确认。
2.输入该token的说明,比如对你用途等做简单描述。
3.检查并选择仓库范围选项,包括repo、各种管理权限、gist、用户、通知、删除等等。
4.单击Create Token按钮,就会生成该token。
5.复制token的哈希值,点击该值的复制按钮,复制该值。
6.在GitLab导入页面输入该token的哈希值,提供给GitHub import程序。
7.点击列出你的GitHub仓库按钮,等待GitLab读取你的仓库信息。完成后,会跳转到导入仓库选择页面:
选择要导入的仓库,你可以点击最右边的Import按钮,导入单个仓库,也可以点击上面的Import all repositories(绿色)按钮导入所有仓库。
通过单个仓库导入时候,你可以选择设置一个和github不同的项目名称,见上面的图。
项目导入优化
对于比较大的仓库(比如很多安卓开发项目),或者你有大量的仓库需要迁移(几百个),导入可能比较慢,比较耗时。为了减少不必要地等待时间,你可以通过下面方式来加速导入。
首先、建议你选择一个可以访问外网的服务器(VPS)来部署你的gitlab,或者用其他的网络加速方式。
其次通过设置gitlab的任务参数ithub_importer和
github_importer_advance_stage。一般建议至少有4个Sidekiq进程(每个运行的线程数等于CPU内核数)来处理这些队列。而且不同进程最好跑在不同的服务器上运行。
最后,选用比较好的服务器,比如通过增加存储Git仓库的磁盘的IO吞吐量(使用固态硬盘),增加CPU容量,加大内存,也可以缩短仓库迁移所花费的时间。
閱讀更多 蟲蟲安全 的文章