如何在 GitLab 中更改项目所有者

Posted

技术标签:

【中文标题】如何在 GitLab 中更改项目所有者【英文标题】:How to change the project owner in GitLab 【发布时间】:2014-03-02 00:40:42 【问题描述】:

项目设置中有选项,但是在“传输”字段中,它不识别任何用户名或任何东西。是否可以更改所有者权限和root权限?

【问题讨论】:

你用的是什么版本的gitlab? 我在 gitlab.com 使用云服务 您是否检查过目标是否在您的命名空间中?因为您只能将项目转移到您可以管理的命名空间... 是的,它是创建项目的帐户及其在该帐户名称下的命名空间。 有些可能需要更改原点,git remote set-url origin new_url 【参考方案1】:

如果您需要为许多项目执行此操作,通过 API 执行此操作非常方便:

import gitlab
gl = gitlab.Gitlab('https://gitlab.com', private_token='...')

gitlab_project = gl.projects.get("the-project-of-yours")
target_group = gl.groups.get("target-group-where-to-land")
gitlab_project.transfer_project(target_group.id)

https://docs.gitlab.com/ee/api/projects.html#transfer-a-project-to-a-new-namespace

https://docs.gitlab.com/ee/api/groups.html#transfer-project-to-group

https://github.com/python-gitlab/python-gitlab/blob/master/gitlab/v4/objects/projects.py#L461

【讨论】:

【参考方案2】:

也可以导出项目并在不同的用户下导入。这会保留提交和分支。

设置 -> 高级 -> 导出项目

然后导入:

新建项目 -> 导入项目 -> Gitlab 导出

【讨论】:

这与转让所有权有什么不同吗?这似乎是一个更好的方法,但我不确定它是否有缺点。 @SinanYaman 正如他们所说的“保留提交和分支”,尤其是问题、合并请求等。 在这种情况下克隆更容易 我已经完成了,现在看起来很完美:提交、分支、问题都在这里。以前的成员没有添加(我自然认为)。我也将与其他两个项目一起进行。 这不是项目所有权转让【参考方案3】:

TL;DR

将您的项目移动到您和其他用户都是所有者的新组,然后其他用户必须将其转移到他自己的命名空间。

背景

其他答案显然不适用于将项目转移给其他用户,尽管其中的 cmets 部分足以让某人弄清楚。还有this issue on GitLab itself 提供了一些见解。

我的情况

我为一些小型开发团队以及我的个人项目安装并管理了几个 GitLab 实例。结果,我遇到了很多关于这个的问题。我一直在回过头来回答这个问题,只是意识到它从未真正得到正确回答。

命名空间问题

您在执行此操作时面临的问题是,项目只能有一个所有者,但要转移项目,您必须拥有要转移到的命名空间。据我所知,没有其他方法可以移动项目。为了完整起见,我将在这里添加命名空间,例如 "gitlab.com/my-user-name/...""gitlab .com/my-group-name/...".


解决方案

因为一个用户不能“拥有”另一个命名空间(甚至是管理员),所以设置两个用户拥有同一个命名空间的场景的唯一选择是使用一个组。执行以下步骤来完成此操作。

    创建一个新组。 将您想要将项目转移到的用户添加为该组的所有者成员。 将您的项目转移到该组(您管理的命名空间,因为您是所有者)。 以其他用户身份登录,然后将组项目转移到“其他用户”命名空间。

此时,您将成为项目中的 master。如果需要,您现在可以将自己完全从项目中移除。

【讨论】:

添加了兔子以引起人们的注意,因为糟糕的答案已经被投票了... gitlab 问题的链接已失效。你能再找到它吗,我会感兴趣的。 @Lucas 我找不到它,因为看起来 GitLab 更改了支持论坛的位置(如果您删除问题编号,它仍然是 404)。可能会迁移到这里 (forum.gitlab.com),但如果你真的关心它,我会与 GitLab 核对所有这些支持票的移动位置。它从未存储在 web.archive.org AFAICT 这让我自己找到了它/类似的东西:gitlab.com/gitlab-org/gitlab/-/issues/14502 @Toolkit 在什么版本的 GitLab 上?现在可能有一种更简单的方法......否则,“为什么是 GitLab,为什么?”【参考方案4】:

它涉及多个步骤,但它是可能的。

    创建组并将项目转移到组中 邀请新用户加入群组 以新用户登录并将项目从组转移到新用户

但是我认为如果您将存储库留在组中更容易维护

传输菜单始终位于 Project => Settings => Advanced

【讨论】:

【参考方案5】:

您基本上可以创建一个组,然后将项目添加到组中,然后从组成员设置中添加一个新所有者,您可以自己离开该组。

查看截图

【讨论】:

是的,但通常我们也想将我们的角色降级为简单的“成员”,不幸的是,出于某种原因,这不是一个选项:S【参考方案6】:

在 GitLab 社区版 9.3.5 中,如果您是管理员,您应该转到设置 -> 成员并更改您想要的成员的角色。

例如,搜索 John Doe,设置开发者角色,现在 John Doe 将成为开发者,不再是所有者。

【讨论】:

【参考方案7】:

在当前版本 (10.2.4) 中,您应该执行以下操作:

转到“项目”->“设置”->展开“高级设置”->向下滚动到“传输项目”

【讨论】:

确认:在 v10.8.2(从 2018 年开始)中,它仍然以这种方式工作。 - 找到Gitlab版本号,到右上角,点击头像标志。下拉菜单打开,选择“帮助”【参考方案8】:

在 Gitlab 8.8.3 中,您可以传输项目。 当心。更改项目的命名空间可能会产生意想不到的副作用;)

转到项目 -> 设置 -> 项目设置 -> 向下滚动到传输项目

【讨论】:

【参考方案9】:

您可以通过以下方式向项目添加其他所有者:

项目 -> 成员 -> 添加成员 -> 选择所有者作为权限

接下来您必须将自己从项目中移除:

项目 -> 成员 -> 点击您的用户名后面的红色按钮

现在您离开了项目,您之前输入的用户现在是所有者。

【讨论】:

感谢您的回复,但我无法在 gitlab 的新版本中将“所有者”作为权限... :( 任何其他技巧。 您可以将自己添加为群主。 SO @jvanbaaesen,这意味着该项目必须在任何组下?它不能单独转移给另一个,对吧? 对我不起作用,无法从 10.5.5 的下拉菜单中选择所有者。

以上是关于如何在 GitLab 中更改项目所有者的主要内容,如果未能解决你的问题,请参考以下文章

如何修改gitlab上项目的远程地址

如何在 GitLab 中查看合并审阅评论和文件更改?

如何同时在所有项目中搜索代码?

如何从 Gitlab API 获取用户所有已加星标的项目

如何仅在 Gitlab 中更改的文件上运行 pylint?

如何访问 gitlab 问题迭代更改