跳转到主要内容

一个简单的导出工具,帮助将Pagure项目上的文件、数据资产和问题票据迁移到GitLab

项目描述

Pagure Exporter

一个简单的导出工具,帮助将Pagure项目上的文件、数据资产和问题票据迁移到GitLab

安装

从PyPI

  1. 确保您已安装 python3python3-pip

    $ sudo dnf install python3 python3-pip --setopt=install_weak_deps=False
    
  2. 在该目录中创建并激活Python虚拟环境。

    $ python3 -m venv venv
    
    (venv) $ source venv/bin/activate
    
  3. 使用激活的虚拟环境中的pip安装 pagure-exporter

    (venv) $ pip install pagure-exporter
    

    示例输出

    Requirement already satisfied: pagure-exporter in ./venv/lib/python3.12/site-packages (0.1.0)
    Requirement already satisfied: GitPython<4.0.0,>=3.1.37 in ./venv/lib/python3.12/site-packages (from pagure-exporter) (3.1.40)
    Requirement already satisfied: click<9.0.0,>=8.1.3 in ./venv/lib/python3.12/site-packages (from pagure-exporter) (8.1.7)
    Requirement already satisfied: requests<3.0.0,>=2.31.0 in ./venv/lib/python3.12/site-packages (from pagure-exporter) (2.31.0)
    Requirement already satisfied: tqdm<5.0.0,>=4.64.1 in ./venv/lib/python3.12/site-packages (from pagure-exporter) (4.66.1)
    Requirement already satisfied: gitdb<5,>=4.0.1 in ./venv/lib/python3.12/site-packages (from GitPython<4.0.0,>=3.1.37->pagure-exporter) (4.0.10)
    Requirement already satisfied: charset-normalizer<4,>=2 in ./venv/lib64/python3.12/site-packages (from requests<3.0.0,>=2.31.0->pagure-exporter) (3.3.0)
    Requirement already satisfied: idna<4,>=2.5 in ./venv/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->pagure-exporter) (3.4)
    Requirement already satisfied: urllib3<3,>=1.21.1 in ./venv/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->pagure-exporter) (2.0.7)
    Requirement already satisfied: certifi>=2017.4.17 in ./venv/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->pagure-exporter) (2023.7.22)
    Requirement already satisfied: smmap<6,>=3.0.1 in ./venv/lib/python3.12/site-packages (from gitdb<5,>=4.0.1->GitPython<4.0.0,>=3.1.37->pagure-exporter) (5.0.1)
    

从源

  1. 确保您已安装 gitpython3poetry

    $ sudo dnf install git python3 poetry --setopt=install_weak_deps=False
    
  2. 将仓库克隆到本地存储并使其成为当前工作目录。

    $ git clone https://github.com/gridhead/pagure-exporter.git
    
    $ cd pagure-exporter
    

    示例输出

    Cloning into 'pagure-exporter'...
    remote: Enumerating objects: 118, done.
    remote: Counting objects: 100% (118/118), done.
    remote: Compressing objects: 100% (78/78), done.
    remote: Total 118 (delta 48), reused 94 (delta 31), pack-reused 0
    Receiving objects: 100% (118/118), 56.38 KiB | 4.34 MiB/s, done.
    Resolving deltas: 100% (48/48), done.
    
  3. 在该目录中创建并激活Python虚拟环境。

    $ python3 -m venv venv
    
    (venv) $ source venv/bin/activate
    
  4. 检查项目配置的有效性,然后安装项目依赖项。

    (venv) $ poetry check
    
    (venv) $ poetry install
    

    示例输出

    All set!
    
    Installing dependencies from lock file
    
    Package operations: 19 installs, 0 updates, 0 removals
    
      • Installing smmap (5.0.0)
      • Installing certifi (2022.12.7)
      • Installing charset-normalizer (3.0.1)
      • Installing click (8.1.3)
      • Installing gitdb (4.0.10)
      • Installing idna (3.4)
      • Installing mccabe (0.6.1)
      • Installing mypy-extensions (0.4.3)
      • Installing pathspec (0.11.0)
      • Installing platformdirs (2.6.2)
      • Installing pycodestyle (2.8.0)
      • Installing pyflakes (2.4.0)
      • Installing urllib3 (1.26.14)
      • Installing black (22.12.0)
      • Installing flake8 (4.0.1)
      • Installing gitpython (3.1.30)
      • Installing isort (5.12.0)
      • Installing requests (2.28.2)
      • Installing tqdm (4.64.1)
    
    Installing the current project: pagure-exporter (0.1.0)
    

用法

设置

  1. 使用您选择的互联网浏览器,打开 Pagure 并登录您的账户。

  2. 单击您的个人资料显示图片,然后转到 账户设置 页面。

  3. API密钥 部分,单击右上角 创建新API密钥 按钮。

  4. 由于这是源命名空间,请在点击 创建 按钮之前,检查所有用于读取与仓库关联的资产信息的ACL,为API令牌设置一个安全的有效期,并为它的使用写一个合适的描述。

  5. 记下生成的API令牌,并确保不要与他人共享或用于其他目的。

  6. 前往当前登录用户至少具有读取访问权限的仓库。

  7. 记下源命名空间,格式为 HOLDER/REPONAME,其中HOLDER可以是组或单个用户。例如,对于位于https://pagure.io/fedora-infra/ansible的仓库,源命名空间是fedora-infra/ansible

  8. 在另一个浏览器标签或窗口中打开GitLab并登录您的账户。

  9. 从个人资料页面的侧边栏点击 新建项目/仓库 选项,然后点击 创建空白项目 选项。

  10. 创建一个新的空仓库,它将作为资产转移的目的地。建议与源命名空间具有相同的名称以避免混淆,但这不是强制性的。

  11. 前往创建的仓库,并记下 项目ID。例如,在这个例子中,对于名为 gridhead/pagure-exporter-test 的目标仓库,项目ID是 42823949

  12. 将侧边栏展开,前往从 设置 部分的 仓库 部分。

  13. 受保护的分支 部分中,暂时关闭所有现有的 分支保护规则 并允许所有分支的 强制推送,以允许将仓库资产移动到此。

  14. 将侧边栏展开,前往从 设置 部分的 访问令牌 部分。

  15. 项目访问令牌 页面上,点击 添加新令牌 按钮以开始创建新的访问令牌。

  16. 由于这是目标命名空间,请在点击 创建项目访问令牌 按钮之前,检查所有用于写入与仓库关联的资产信息的权限范围,选择一个合适的角色,设置一个安全的有效期,并为它的使用写一个合适的描述。

  17. 记下生成的API令牌,并确保不要与他人共享或用于其他目的。

  18. 在继续下一步之前,请确保您有以下信息在手。

    1. 在Pagure上具有源命名空间至少读取权限的账户的用户名(例如 srceuser
    2. 上述账户的访问令牌,已检查所需权限至少包括源命名空间的读取权限(例如 srcecode
    3. 源命名空间名称,格式为 HOLDER/REPONAME,其中 HOLDER 可以是组或单个用户(例如 srcerepo
    4. 在GitLab的目标命名空间上至少具有写入权限的账户的用户名(例如 destuser
    5. 上述账户的访问令牌,包括所需的角色和权限范围,至少包括目标命名空间的写入权限(例如 destcode
    6. 目标命名空间的名称,格式为唯一可识别的 PROJECTID 字符串(例如 destrepo

操作

查看帮助菜单

  1. 检查已安装项目的当前版本以及使用信息。

    (venv) $ pagure-exporter --version
    
    (venv) $ pagure-exporter --help
    

    示例输出

    Pagure Exporter by Akashdeep Dhar <t0xic0der@fedoraproject.org>, version 0.1.0
    
    Usage: pagure-exporter [OPTIONS] COMMAND [ARGS]...
    
    Options:
      -s, --srce TEXT  Source namespace for importing assets from  [required]
      -d, --dest TEXT  Destination namespace for exporting assets to  [required]
      -p, --pkey TEXT  Pagure API key for accessing the source namespace
                       [required]
      -g, --gkey TEXT  GitLab API key for accessing the destination namespace
                       [required]
      -f, --fusr TEXT  Username of the account that owns the Pagure API key
                       [required]
      -t, --tusr TEXT  Username of the account that owns the GitLab API key
                       [required]
      --version        Show the version and exit.
      --help           Show this message and exit.
    
    Commands:
      repo  Initialize transfer of repository assets
      tkts  Initiate transfer of issue tickets
    
  2. 检查可用子命令的使用信息。

    (venv) $ pagure-exporter -s a -d a -p a -g a -f a -t a repo --help
    
    (venv) $ pagure-exporter -s a -d a -p a -g a -f a -t a tkts --help
    

    示例输出

    Usage: pagure-exporter repo [OPTIONS]
    
      Initialize transfer of repository assets
    
    Options:
      -b, --brcs TEXT  List of branches to extract
      --help           Show this message and exit.
    
    Usage: pagure-exporter tkts [OPTIONS]
    
      Initiate transfer of issue tickets
    
    Options:
      -s, --status [OPEN|SHUT|FULL]  Extract issue tickets of the mentioned status
                                     [default: OPEN]
      -r, --ranges TEXT...           Extract issue tickets in the mentioned ranges
      -p, --select TEXT              Extract issue tickets of the selected numbers
      -c, --comments                 Transfer all the associated comments
      -l, --labels                   Migrate all the associated labels
      -a, --commit                   Assert issue ticket states as they were
      -t, --secret                   Confirm issue ticket privacy as they were
      --help                         Show this message and exit.
    

迁移仓库文件

  1. 确保项目仓库克隆的位置是当前工作目录,并且之前填充的虚拟环境已启用。

    $ cd pagure-exporter
    
    $ source venv/bin/activate
    
  2. 使用您选择的网络浏览器,访问Pagure上的源命名空间存储库页面,选择您要转移的分支。

  3. 执行以下命令,开始将Pagure上源命名空间的存储库资产迁移到GitLab上的目标命名空间。

    1. 如果只需迁移一组分支

      (venv) $ pagure-exporter \
               --fusr srceuser --pkey srcecode --srce srcerepo \
               --tusr destuser --gkey destcode --dest destrepo \
               repo \
               --brcs brca,brcb,brcc,brcd
      

      对于名为 brcabrcbbrccbrcd 的源命名空间中的一组分支,要将它们迁移到目标命名空间。

    2. 如果需要迁移所有可用分支

      (venv) $ pagure-exporter \
               --fusr srceuser --pkey srcecode --srce srcerepo \
               --tusr destuser --gkey destcode --dest destrepo \
               repo
      

      这是子命令的默认行为,如果没有提供分支名称,则迁移源命名空间中的所有分支

  4. 如果目标命名空间的分支中有任何内容,它们将被从源命名空间迁移的分支中的内容覆盖。

迁移问题票据

  1. 确保项目仓库克隆的位置是当前工作目录,并且之前填充的虚拟环境已启用。

    $ cd pagure-exporter
    
    $ source venv/bin/activate
    
  2. 执行以下命令,开始从Pagure上的源命名空间提取到目标命名空间的问题票据。

    1. 如果需要转移特定状态的问题票据。

      (venv) $ pagure-exporter \
                 --fusr srceuser --pkey srcecode --srce srcerepo \
                 --tusr destuser --gkey destcode --dest destrepo \
                 tkts \
                 --status open
      
    2. 如果需要转移与问题票据相关联的评论。

      (venv) $ pagure-exporter \
                 --fusr srceuser --pkey srcecode --srce srcerepo \
                 --tusr destuser --gkey destcode --dest destrepo \
                 tkts \
                 --comments
      
    3. 如果需要转移与问题票据相关联的标签。

      (venv) $ pagure-exporter \
                 --fusr srceuser --pkey srcecode --srce srcerepo \
                 --tusr destuser --gkey destcode --dest destrepo \
                 tkts \
                 --labels
      
    4. 如果需要转移与问题票据相关联的状态。

      (venv) $ pagure-exporter \
                 --fusr srceuser --pkey srcecode --srce srcerepo \
                 --tusr destuser --gkey destcode --dest destrepo \
                 tkts \
                 --commit
      
    5. 如果需要转移与问题票据相关的隐私。

      (venv) $ pagure-exporter \
                 --fusr srceuser --pkey srcecode --srce srcerepo \
                 --tusr destuser --gkey destcode --dest destrepo \
                 tkts \
                 --secret
      
    6. 如果需要转移一系列问题标识符的问题票据。

      (venv) $ pagure-exporter \
                 --fusr srceuser --pkey srcecode --srce srcerepo \
                 --tusr destuser --gkey destcode --dest destrepo \
                 tkts \
                 --ranges STRT STOP
      

      具有标识符 STRTSTRT+1 ... STOP-1STOP 的问题票据将被考虑在内。

    7. 如果需要挑选需要考虑的问题票据。

      (venv) $ pagure-exporter \
                 --fusr srceuser --pkey srcecode --srce srcerepo \
                 --tusr destuser --gkey destcode --dest destrepo \
                 tkts \
                 --select NUM1,NUM2,NUM3 ...
      

      具有标识符 NUM1NUM2NUM3 ... 的问题票据将被考虑在内。

    虽然这些选项可以混合使用,但选项 --ranges--select 不能同时使用,因为它们执行相同的功能。

    例如,

    1. 以下命令将迁移所有问题票据,其中标识符位于 STRTSTOP 之间,包括两端,状态为 OPEN,以及相关的评论、标签和隐私。

      (venv) $ pagure-exporter \
                 --fusr srceuser --pkey srcecode --srce srcerepo \
                 --tusr destuser --gkey destcode --dest destrepo \
                 tkts \
                 --status open \
                 --comments \
                 --labels \
                 --secret \
                 --ranges STRT STOP
      
    2. 以下命令将迁移所有具有标识符 NUM1NUM2NUM3 ... 且状态为 SHUT 的问题票据,以及相关的标签、状态和隐私。

      (venv) $ pagure-exporter \
                 --fusr srceuser --pkey srcecode --srce srcerepo \
                 --tusr destuser --gkey destcode --dest destrepo \
                 tkts \
                 --status shut \
                 --labels \
                 --commit \
                 --secret \
                 --select NUM1,NUM2,NUM3 ...
      

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

pagure_exporter-0.1.3.tar.gz (32.1 kB 查看散列值)

上传时间

构建分发

pagure_exporter-0.1.3-py3-none-any.whl (39.4 kB 查看散列值)

上传时间 Python 3

由以下支持