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

hub2lab的Python项目详细描述


github2gitlab

注:这是基于https://pypi.python.org/pypi/github2gitlab的工作。 然而,最初的回购http://workbench.dachary.org/dachary/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从JSP或HTML向servlet发送多个参数   java方法来查看字符是否在字符数组中   使用带有java的MAC地址连接到设备   java如何将csv文件中的数据打印到secondactivity?   java如何从netbean 7.0.1连接到数据库   java考虑所有可能的类值,用于输出测试分割的预测值。   java我的actionListener调用有什么问题   swing在Java中实现粒子过滤器最有效的方法是什么?   java运行。getFontFamily()为返回null。使用apachepoi的docx文件   一个事务中的java领域循环与每个步骤循环中的一个事务   java日期格式与Spring Boot不兼容   java类冲突。处理   java GridBagLayout不工作   java将图像发送到另一个应用程序