一个简单的导出工具,帮助将Pagure项目上的文件、数据资产和问题票据迁移到GitLab
项目描述
Pagure Exporter
一个简单的导出工具,帮助将Pagure项目上的文件、数据资产和问题票据迁移到GitLab
安装
从PyPI
-
确保您已安装
python3
和python3-pip
。$ sudo dnf install python3 python3-pip --setopt=install_weak_deps=False
-
在该目录中创建并激活Python虚拟环境。
$ python3 -m venv venv
(venv) $ source venv/bin/activate
-
使用激活的虚拟环境中的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)
从源
-
确保您已安装
git
、python3
和poetry
。$ sudo dnf install git python3 poetry --setopt=install_weak_deps=False
-
将仓库克隆到本地存储并使其成为当前工作目录。
$ 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.
-
在该目录中创建并激活Python虚拟环境。
$ python3 -m venv venv
(venv) $ source venv/bin/activate
-
检查项目配置的有效性,然后安装项目依赖项。
(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)
用法
设置
-
使用您选择的互联网浏览器,打开 Pagure 并登录您的账户。
-
单击您的个人资料显示图片,然后转到 账户设置 页面。
-
-
由于这是源命名空间,请在点击 创建 按钮之前,检查所有用于读取与仓库关联的资产信息的ACL,为API令牌设置一个安全的有效期,并为它的使用写一个合适的描述。
-
记下生成的API令牌,并确保不要与他人共享或用于其他目的。
-
前往当前登录用户至少具有读取访问权限的仓库。
-
记下源命名空间,格式为
HOLDER/REPONAME
,其中HOLDER
可以是组或单个用户。例如,对于位于https://pagure.io/fedora-infra/ansible
的仓库,源命名空间是fedora-infra/ansible
。 -
在另一个浏览器标签或窗口中打开GitLab并登录您的账户。
-
从个人资料页面的侧边栏点击 新建项目/仓库 选项,然后点击 创建空白项目 选项。
-
创建一个新的空仓库,它将作为资产转移的目的地。建议与源命名空间具有相同的名称以避免混淆,但这不是强制性的。
-
前往创建的仓库,并记下 项目ID。例如,在这个例子中,对于名为
gridhead/pagure-exporter-test
的目标仓库,项目ID是42823949
。 -
-
在 受保护的分支 部分中,暂时关闭所有现有的 分支保护规则 并允许所有分支的 强制推送,以允许将仓库资产移动到此。
-
-
在 项目访问令牌 页面上,点击 添加新令牌 按钮以开始创建新的访问令牌。
-
由于这是目标命名空间,请在点击 创建项目访问令牌 按钮之前,检查所有用于写入与仓库关联的资产信息的权限范围,选择一个合适的角色,设置一个安全的有效期,并为它的使用写一个合适的描述。
-
记下生成的API令牌,并确保不要与他人共享或用于其他目的。
-
在继续下一步之前,请确保您有以下信息在手。
- 在Pagure上具有源命名空间至少读取权限的账户的用户名(例如
srceuser
) - 上述账户的访问令牌,已检查所需权限至少包括源命名空间的读取权限(例如
srcecode
) - 源命名空间名称,格式为
HOLDER/REPONAME
,其中HOLDER
可以是组或单个用户(例如srcerepo
) - 在GitLab的目标命名空间上至少具有写入权限的账户的用户名(例如
destuser
) - 上述账户的访问令牌,包括所需的角色和权限范围,至少包括目标命名空间的写入权限(例如
destcode
) - 目标命名空间的名称,格式为唯一可识别的
PROJECTID
字符串(例如destrepo
)
- 在Pagure上具有源命名空间至少读取权限的账户的用户名(例如
操作
查看帮助菜单
-
检查已安装项目的当前版本以及使用信息。
(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
-
检查可用子命令的使用信息。
(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.
迁移仓库文件
-
确保项目仓库克隆的位置是当前工作目录,并且之前填充的虚拟环境已启用。
$ cd pagure-exporter
$ source venv/bin/activate
-
使用您选择的网络浏览器,访问Pagure上的源命名空间存储库页面,选择您要转移的分支。
-
执行以下命令,开始将Pagure上源命名空间的存储库资产迁移到GitLab上的目标命名空间。
-
如果只需迁移一组分支
(venv) $ pagure-exporter \ --fusr srceuser --pkey srcecode --srce srcerepo \ --tusr destuser --gkey destcode --dest destrepo \ repo \ --brcs brca,brcb,brcc,brcd
对于名为
brca
、brcb
、brcc
和brcd
的源命名空间中的一组分支,要将它们迁移到目标命名空间。 -
如果需要迁移所有可用分支
(venv) $ pagure-exporter \ --fusr srceuser --pkey srcecode --srce srcerepo \ --tusr destuser --gkey destcode --dest destrepo \ repo
这是子命令的默认行为,如果没有提供分支名称,则迁移源命名空间中的所有分支
-
-
如果目标命名空间的分支中有任何内容,它们将被从源命名空间迁移的分支中的内容覆盖。
迁移问题票据
-
确保项目仓库克隆的位置是当前工作目录,并且之前填充的虚拟环境已启用。
$ cd pagure-exporter
$ source venv/bin/activate
-
执行以下命令,开始从Pagure上的源命名空间提取到目标命名空间的问题票据。
-
如果需要转移特定状态的问题票据。
(venv) $ pagure-exporter \ --fusr srceuser --pkey srcecode --srce srcerepo \ --tusr destuser --gkey destcode --dest destrepo \ tkts \ --status open
-
如果需要转移与问题票据相关联的评论。
(venv) $ pagure-exporter \ --fusr srceuser --pkey srcecode --srce srcerepo \ --tusr destuser --gkey destcode --dest destrepo \ tkts \ --comments
-
如果需要转移与问题票据相关联的标签。
(venv) $ pagure-exporter \ --fusr srceuser --pkey srcecode --srce srcerepo \ --tusr destuser --gkey destcode --dest destrepo \ tkts \ --labels
-
如果需要转移与问题票据相关联的状态。
(venv) $ pagure-exporter \ --fusr srceuser --pkey srcecode --srce srcerepo \ --tusr destuser --gkey destcode --dest destrepo \ tkts \ --commit
-
如果需要转移与问题票据相关的隐私。
(venv) $ pagure-exporter \ --fusr srceuser --pkey srcecode --srce srcerepo \ --tusr destuser --gkey destcode --dest destrepo \ tkts \ --secret
-
如果需要转移一系列问题标识符的问题票据。
(venv) $ pagure-exporter \ --fusr srceuser --pkey srcecode --srce srcerepo \ --tusr destuser --gkey destcode --dest destrepo \ tkts \ --ranges STRT STOP
具有标识符
STRT
、STRT+1
...STOP-1
、STOP
的问题票据将被考虑在内。 -
如果需要挑选需要考虑的问题票据。
(venv) $ pagure-exporter \ --fusr srceuser --pkey srcecode --srce srcerepo \ --tusr destuser --gkey destcode --dest destrepo \ tkts \ --select NUM1,NUM2,NUM3 ...
具有标识符
NUM1
、NUM2
、NUM3
... 的问题票据将被考虑在内。
虽然这些选项可以混合使用,但选项
--ranges
和--select
不能同时使用,因为它们执行相同的功能。例如,
-
以下命令将迁移所有问题票据,其中标识符位于
STRT
和STOP
之间,包括两端,状态为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
-
以下命令将迁移所有具有标识符
NUM1
、NUM2
、NUM3
... 且状态为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 的散列值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4787e999508d2eca715d0a558eee63708d3dc9af66b699d873b8818b6d2c1def |
|
MD5 | 147d88575339ee4864bcb8a342dddf4b |
|
BLAKE2b-256 | 5cc75d68bb3ac7e33d982bf8f547e367c60632c4cb372cb9ed97c3508d700b43 |
pagure_exporter-0.1.3-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4b6dca78bd4210944830b4ff5c17e6dea88b311db558fdea6196a368cb3cdf27 |
|
MD5 | af2afbfadb57f4ac04c8174df8e558fe |
|
BLAKE2b-256 | 0757e1b11492e6f29b420b2d6a654a71c7ebbc16139148f16f70e6095fbcfe7e |