将项目从github迁移到gitlab的命令行工具

github2gitlab的Python项目详细描述


github2gitlab

github2gitlab是一个命令行工具,用于从GitHub镜像项目 去GitLab它按顺序执行以下操作:

  • 如果找不到~/.ssh/id_rsa.pub ssh密钥,请将其上载到gitlab
  • 如果不存在
  • ,则创建GITLAB项目
  • 将github git存储库镜像到gitlab git存储库
  • 创建或更新GitLab合并请求以匹配 GitHub请求

示例

镜像http://github.com/dachary/testhttp://workbench.dachary.org/dachary/test

github2gitlab \
   --gitlab-url http://workbench.dachary.org \
   --gitlab-token sxQJ67SQKihMrGWVf \
   --github-repo dachary/test

镜像http://github.com/ceph/cephhttp://workbench.dachary.org/ceph/ceph-backports并使用github 允许令牌执行比匿名时更多的请求。 使用-忽略已关闭以删除已关闭和 从未合并

github2gitlab \
   --gitlab-url http://workbench.dachary.org \
   --gitlab-token sxQJ67SQKihMrGWVf \
   --gitlab-repo ceph/ceph-backports \
   --github-token 64933d355fda9844aadd4e224d \
   --github-repo ceph/ceph \
   --ignore-closed

镜像详细信息

github git存储库包含每个请求的引用。 例如,pull请求483具有refs/pull/483/head引用 那是被推的树枝的尖端。如果请求是 打开并可以在目标上合并,引用 REF/PLA/ 483/合并也存在,是合并的结果。

它们不是将refs/pull/*引用镜像到gitlab,而是 移到refs/heads/pull/*使它们成为分支。如果gitlab ci是 监视项目时,每次pull/*/head 引用已更新。

拉取请求的标题和描述完全镜像。这个 拉取请求的状态无法精确映射并被转换 如下所示:

if the pull request is opened, the merge request is opened
if the pull request is closed,
  if the pull request merged_at field is null,
    the merge request is closed
  else
    the merge request is merged

如果打开合并请求以镜像 已经合并,GitLab将拒绝将其设置为合并状态 因为它注意到没有东西可以合并。在这种情况下 合并请求被设置为关闭状态,并且:MERGED:string 附加到描述中

黑客攻击

  • 获取代码:git clonehttp://workbench.dachary.org/dachary/github2gitlab.git

  • 运行单元测试:tox

  • 运行集成测试。他们需要一个gitlab令牌和一个github令牌 具有删除和创建项目权限的实际用户github项目 使用–github repo指定,使用–gitlab repo指定github项目 将被删除,并且在测试期间丢失所有数据和git存储库。

    Python=测试/集成.py

    –gitlab urlhttp://workbench.dachary.org–gitlab令牌xxxxxxxxx–gitlab repo dachary/testrepo2–github令牌xxxxxxxxx–github repo dachary/testrepo–ssh公钥~/.ssh/id_rsa.pub–详细

  • 标记版本

  • version=1.3.0 ; perl -pi -e “s/^version.*/version = $version/” setup.cfg ; for i in 1 2 ; do python setup.py sdist ; amend=$(git log -1 –oneline | grep –quiet “version $version” && echo –amend) ; git commit $amend -m “version $version” ChangeLog setup.cfg ; git tag -a -f -m “version $version” $version ; done
  • 查看文档:rst2html<;readme.rst>;/tmp/a.html
  • 发布新版本
  • python setup.py sdist upload –sign
  • git push ; git push –tags
  • PYPI维护

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Thumbnailator库将图像转换为cmyk   Java反射从目录中的类运行测试   JavaEclipseJDT编译器说方法未定义,但EclipseIDE没有   重构如何重构一行重复的java代码   java Eclipse:使用删除线文本呈现自定义注释   java问题与ArrayList复制数据   java如何在swagger中传递访问令牌?   使用另一个java文件运行java文件时出错   java为什么谷歌云存储生成的上传链接在成功上传后不会失效?   java将我的客户端PC重定向到默认登录页面   java hibernate c3p0配置mysql问题   java和java之间的区别。尼奥。文件文件和java。伊奥。文件   列出java循环并向映射中添加值   java为什么OJ报告这段代码的运行时错误?