Git 完成拉取请求时自动删除分支

Git 完成拉取请求时自动删除分支,git,azure-devops,git-branch,pull-request,Git,Azure Devops,Git Branch,Pull Request,我的公司使用VST和git。当我在VSTS中完成对开发分支的拉入请求时,会自动选中删除功能分支的复选框,但它不会删除,除非我更改功能分支的权限,以允许我所属的管理员用户组重写和销毁历史(强制推送) 每次我完成拉取请求时都这样做有点乏味,但我并不热衷于让这个管理员用户组的所有成员都能够随时删除功能分支。似乎有可能是意外删除。当我正在完成一个已经审核和批准的拉取请求时,删除开发分支确实让我感觉很舒服。关于权限,是否有第三个选项?贵公司是如何设置策略来删除功能分支的?我自己没有使用过VST,但在其他g

我的公司使用VST和git。当我在VSTS中完成对开发分支的拉入请求时,会自动选中删除功能分支的复选框,但它不会删除,除非我更改功能分支的权限,以允许我所属的管理员用户组重写和销毁历史(强制推送)


每次我完成拉取请求时都这样做有点乏味,但我并不热衷于让这个管理员用户组的所有成员都能够随时删除功能分支。似乎有可能是意外删除。当我正在完成一个已经审核和批准的拉取请求时,删除开发分支确实让我感觉很舒服。关于权限,是否有第三个选项?贵公司是如何设置策略来删除功能分支的?

我自己没有使用过VST,但在其他git主机(gitlab和github)中,有一种东西叫做“受保护的分支”

对于这些受保护的分支(“我的工作流中的master”和“development”),我覆盖权限,不允许开发人员删除这些分支(他们可以随意删除其他分支)

编辑


我的记忆力有问题。无法删除受保护的分支(使用git;仍然可以使用gitlab网页删除它们)。可以设置允许接受合并请求和推送到分支的权限(请参见屏幕截图)。

我自己没有使用过VST,但在其他git宿主(gitlab和github)中,有一种称为“受保护的分支”的东西

对于这些受保护的分支(“我的工作流中的master”和“development”),我覆盖权限,不允许开发人员删除这些分支(他们可以随意删除其他分支)

编辑


我的记忆力有问题。无法删除受保护的分支(使用git;仍然可以使用gitlab网页删除它们)。可以设置允许接受合并请求和推送到分支的权限(请参见屏幕截图)。

相应分支删除源分支需要“重写和销毁历史记录”(强制推送)权限

默认情况下,分支所有者有权删除分支(新分支)。对于其他分支,您可以为指定分支的特定用户指定该权限,而不需要为整个组指定该权限,之后您不需要每次都指定该权限。(选择分支,单击添加=>Add User)


总之,有两种方法可以做到这一点,1:通过请求审阅者创建分支。2:为拉取请求审阅者授予重写和销毁历史记录(强制推送)权限。

要删除源分支,相应分支需要具有重写和销毁历史记录(强制推送)权限

默认情况下,分支所有者有权删除分支(新分支)。对于其他分支,您可以为指定分支的特定用户指定该权限,而不需要为整个组指定该权限,之后您不需要每次都指定该权限。(选择分支,单击添加=>Add User)


总之,有两种方法可以做到这一点,1:通过请求审阅者创建分支。2:为拉取请求审阅者授予重写和销毁历史记录(强制推送)权限。

IMHO,我认为您应该将完成拉取请求的责任推给分支所有者/PR创建者。您可能已经知道,您可以在PRs上将某些人员(阅读:主要开发人员)设置为“必需”,甚至可以根据正在更改的回购协议中的目录或区域筛选这些自动添加人员(我们使用人员组)

这将允许您和您的其他受信任的开发人员审查所做的代码更改,并将防止PR创建者在没有权威人士批准更改的情况下将任何代码放入您的
develope
master
分支机构。公关的实际完成实际上只是一个象征性的行动。真正有用的信息是知道谁批准了请求

赋予分支机构和PR所有者对其功能分支机构和PRs的责任将减轻您更改分支机构权限的问题,以便您(而不是分支机构所有者)可以删除其他分支机构的人员。它还将减轻错误的删除问题,因为所有者应该知道特性何时完成

还有,如果这个功能没有完成,就不应该得到公关


还要注意的是,在AzDO中删除源分支不会影响本地存储库,除非您执行
git remote prune origin
,或者让您选择的IDE定期为它们执行此操作,因此如果错误地删除了某个功能分支,那么在开发人员工作站上的某个地方至少应该有一个该分支的副本。我们不使用“定期删除我的遥控器”选项,这也是部分原因。

我认为您应该将责任推到完成向分支机构所有者/PR创建者的请求。您可能已经知道,您可以在PRs上将某些人员(阅读:主要开发人员)设置为“必需”,甚至可以根据正在更改的回购协议中的目录或区域筛选这些自动添加人员(我们使用人员组)

这将允许您和您的其他受信任的开发人员审查所做的代码更改,并将防止PR创建者在没有权威人士批准更改的情况下将任何代码放入您的
develope
master
分支机构。公关的实际完成实际上只是一个象征性的行动。真正有用的信息是知道谁批准了请求

赋予分支机构和PR所有者对其功能分支机构和PRs的责任将减轻您更改分支机构权限的问题,以便您(而不是分支机构所有者)可以删除其他分支机构的人员。它还将缓解错误删除问题