openSUSE:OBS 到 Git

跳转到:导航搜索

OBS 到 Git 迁移工作

此页面介绍迁移工作及其运作方式。要了解新的 Git 软件包工作流程,请访问专用页面。要了解有关 Leap 具体信息,请参阅Leap 软件包


我们将把新的开发从基于 OBS 的项目迁移到基于 Git 的项目。这是一项正在进行中的工作。目标是将 openSUSE:Factory 迁移到 Git 进行源代码管理。第一步将涉及将 265 个开发项目从在 OBS 中拥有源代码迁移到 Git。开发项目将逐个迁移。

当开发项目迁移时,对开发项目的源代码贡献将发生变化。您将不得不通过 Gitea PR 或 git push 提交更改,如果您有仓库访问权限。

openSUSE:Factory 贡献方法不会改变。它将继续依赖 osc sr devel_project/package openSUSE:Factory

将迁移什么

我们将把源代码管理迁移到 Git。我们不会将构建从 OBS 迁移出去——项目将继续在 OBS 中构建。

  1. 维护者信息将保留在基于 Git 的开发项目中。最初,我们将向维护者授予软件包和项目权限。
  2. 下面列出的每个开发项目都将被分配一个与我们在 OBS 中相对接近的组织名称。
  3. 将使用 git-importer 导入软件包数据和历史记录。

我们将继续使用 OBS 开发项目来构建这些源代码。

项目将去向何处以及如何更新软件包?

该项目将是开发组织中的 _ObsPrj 仓库。它将在您推送/合并更改到主分支时创建并自动更新。每个仓库都将自动添加到 _ObsPrj_ObsPrj 将与组织中软件包的当前状态保持同步。

OBS 将然后通过 <scmsync> 机制指向 _ObsPrj,并在 OBS 开发项目中构建最新的状态。二进制文件将保留在 OBS 中。源代码将在 Git 中。

如何创建一个新的软件包?

  • 在您的主目录中创建一个新的仓库。
  • 添加一个 .gitattributes 文件(以使 git-LFS 正常工作)。
  • 添加一个 spec 文件并构建源代码,就像往常一样。确保跟踪 Git LFS 中的大型源代码。
  • 将仓库的所有权转移到您选择的开发项目组织。_ObsPrj 将自动更新。

为了使此过程更轻松,我们建议您使用 new_package 仓库作为模板。它已经包含一个 .gitattributes.gitignore 文件。

一种初始化新软件包的方法是 obs-git-init。它是 Factory 和 openSUSE:Tools 项目的一部分,适用于所有发行版。它还可以用于使用当前推荐的配置更新现有的 git 仓库。

当您想要初始化一个新软件包时,您转到“新仓库”并选择 pool/new_package 作为模板。这将添加必要的 .gitattributes。您也可以通过 https://src.opensuse.org/pool/new_package/src/branch/main/.gitattributes 直接访问它

我的项目何时会被迁移?

待定。项目越不复杂,预计迁移速度越快。

这里的理想目标是在 2025 年 3 月完成开发项目迁移,但有可能推迟到 4 月。

这对我的开发项目会产生什么影响?

在迁移前一两天,您将收到一封电子邮件,告知您的项目将被迁移。收到此电子邮件后,请不要向开发项目打开任何新的提交请求,并尽快合并任何待处理的请求。同样适用于新的 osc commit 操作。有可能您会合并已经导入的内容,然后切换到 Git 会“撤销”您的合并。

迁移后,无法再在 OBS 中接受更改,并且必须在/使用 Git 中执行接受操作。

当这对我的开发项目发生时,我该怎么办?

1. 使用您的 OBS 帐户登录 src.opensuse.org。登录后,我们可以自动将您添加为新开发项目的所有者。

2. 将 SSH 密钥添加到 Gitea 中的您的个人资料。这是确保您可以继续为开发项目做出贡献的关键。

3. 请合并任何可以打开到您的软件包和项目的待处理的 SR。

4. 简要检查您的软件包是否与 OBS 中的状态相同,并且导入的软件包没有严重的问题

已知问题和解决方法

请参阅专用页面

常见问题解答

我正在使用 OBS 链接....

Git 基于的软件包将不再支持 OBS 链接。如果您有一个软件包,它有多个 spec 文件来构建软件包的不同变体,这些变体将不得不迁移到使用 _multibuild 代替。

如果您正在使用 OBS 链接从常规 OBS 软件包链接到基于 Git 的软件包/项目(例如,链接到您主页中的开发项目),这些机制将继续像今天一样工作。这仅影响基于 git 的软件包和基于 git 的项目。

如何从开发项目调用 osc branch 到我自己的项目并在此构建许多软件包?

您可以手动通过 git fork 并通过 scmsync 在 OBS 中引用软件包来执行此操作。自动过程正在进行中。请参阅此工单

我现在应该做什么准备?

  • 转到 http://src.opensuse.org
  • 使用您的 OBS/Bugzilla 凭据登录
  • 转到设置 -> SSH/GPG 密钥
  • 添加您的 SSH 密钥

以便您能够拥有对仓库的推送访问权限。

Gitea SSH 密钥已发布到 factory ML,并且也将添加到 src.opensuse.org 的主页。它们是

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKNThLRPznU5Io1KrAYHmYpaoLQEMGM9nwpKyYQCkPx
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDJ8V51MVIFUkQqQOdHwC3SP9NPqp1ZWYoEbcjvZ7HhSFi2XF8ALo/h1Mk+q8kT2O75/goeTsKFbcU8zrYFeOh0=
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCkVeXePin0haffC085V2L0jvILfwbB2Mt1fpVe21QAOcWNM+/jOC5RwtWweV/LigHImB39/KvkuPa9yLoDf+eLhdZQckSSauRfDjxtlKeFLPrfJKSA0XeVJT3kJcOvDT/3ANFhYeBbAUBTAeQt5bi2hHC1twMPbaaEdJ2jiMaIBztFf6aE9K58uoS+7Y2tTv87Mv/7lqoBW6BFMoDmjQFWgjik6ZMCvIM/7bj7AgqHk/rjmr5zKS4ag5wtHtYLm1L3LBmHdj7d0VFsOpPQexIOEnnjzKqlwmAxT6eYJ/t3qgBlT8KRfshBFgEuUZ5GJOC7TOne4PfB0bboPMZzIRo3WE9dPGRR8kAIme8XqhFbmjdJ+WsTjg0Lj+415tIbyRQoNkLtawrJxozvevs6wFEFcA/YG6o03Z577tiLT3WxOguCcD5vrALH48SyZb8jDUtcVgTWMW0to/n63S8JGUNyF7Bkw9HQWUx+GO1cv2GNzKpk22KS5dlNUVGE9E/7Ydc=

osc maintainership 和相关命令会停止工作吗?

正确。

如何从开发项目提交到 Factory?

与以前相同

osc sr devel_project/package openSUSE:Factory

此过程不会改变,直到另行通知。

什么流程将使 _PrjGit 和仓库保持同步?

最初这将通过一个机器人 workflow-direct 来完成。源代码可以在 autogits 仓库中找到。

我可以自己运行这些机器人吗?

是的。

是否有更多文档?

Git 软件包工作流程 和 Jan 撰写的摘要,介绍如何使用 openSUSE git 后端。

我还能拥有带有服务器端服务的 _service 吗?

是的,但这些服务运行将不会反映在 Git 源代码中。今天使用此功能的软件包将无法在历史记录中构建,因为无论如何都无法构建此类源代码,因为签入此类文件会导致文件被覆盖。

我不想一直输入 git clone gitea@src.opensuse.org:foo/bar

将以下内容添加到您的 ~/.gitconfig,然后您可以输入 git clone soo:foo/bar

   [url "gitea@src.opensuse.org:"]
       insteadOf = soo:

我收到“访问被拒绝”错误

如果您收到如下内容

git clone gitea@src.opensuse.or:username/package
Cloning into 'package
gitea@src.opensuse.org: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

您可能没有在 Gitea 中设置 SSH 密钥。

转到 https://src.opensuse.org/user/settings/keys 点击 添加密钥 并粘贴以下输出

cat ~/.ssh/id_rsa.pub

要检查它正在使用哪个密钥,以下内容会有所帮助

ssh gitea@src.opensuse.org
PTY allocation request failed on channel 0
Hi there, username! You've successfully authenticated with the key named username@machine, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.
Connection to src.opensuse.org closed.

Codestream 项目状态表

其源代码现在在 Git 中的产品如下。

产品迁移到 Git 状态的项目
产品 OBS 项目 GIT 项目 pool 分支 Git 管理
工厂 openSUSE:Factory openSUSE/Factory factory
Leap-16.0 openSUSE:Leap:16.0 openSUSE/Leap leap-16.0
Backports openSUSE:Backports:SLE-16.0 products/PackageHub leap-16.0
SLES-16.0 SUSE:SLFO:1.2 products/SLFO slfo-1.2


开发项目状态表

这现在在 Google Sheets 中跟踪。无需登录。

https://docs.google.com/spreadsheets/d/1HFpQvD95RiJhDa27jXfucVsYWQoTkKmJqWL7P7BPMN0/