设置 Git 存储库设置和策略
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
可通过多种方式使用分支和存储库设置和策略来自定义 Azure Repos Git 存储库。 本文讨论存储库级别的设置和策略。
存储库设置和策略为项目或组织的所有 Git 存储库或为单个存储库配置全局选项。
本文讨论服务器端存储库设置和策略。 要了解客户端 Git 首选项,请参阅 Visual Studio 中的 Git 首选项和设置。
分支策略涵盖特定于分支的控制。
分支策略包括一些选项,例如在更改合并到分支之前需要拉取请求、成功生成或代码评审。 有关详细信息,请参阅分支策略和设置。
存储库和分支安全权限控制用户分配。
这些权限控制谁可以读取、写入、参与拉取请求以及执行其他特定操作。 有关详细信息,请参阅设置存储库的权限。
所有存储库和分支设置和策略的摘要
可以为项目中的所有存储库、单个存储库以及存储库分支配置设置和策略。 在浏览器中,可以通过项目设置>存储库配置所有这些设置和策略。
注意
可以使用 az repos policy 通过 Azure CLI 设置多个分支设置和策略。
下表总结了可为 Git 存储库和分支启用和配置的设置和策略。
所有存储库设置
下表总结了可为项目或组织中的所有新 Git 存储库启用和配置的设置。
设置
默认值
说明
关
使用指定的默认分支名称初始化新存储库。 你可以随时更改特定存储库的默认分支。 如果未启用此功能,存储库会使用名为 main
的默认分支进行初始化。
开
允许用户管理其在所有新存储库中创建的分支的权限。
存储库设置
下表总结了可为每个单独的 Git 存储库启用或配置的设置。
设置
默认值
描述
开
允许用户从存储库创建分支。
开
自动为提交注释中提到的工作项创建链接。
开
允许在提交注释中提及以关闭工作项。 需要 Azure DevOps Server 2020.1 更新或更高版本。
开
记住使用拉取请求完成工作项的用户首选项设置。
开
允许用户管理其创建的分支的权限
开
为存储库启用严格投票模式,这需要参与权限才能对拉取请求进行投票。
开
禁止访问存储库(包括生成和拉取请求),但使其可被发现并发出警告。
存储库策略或选项
下表汇总了可为所有存储库或单个存储库设置的策略或选项。 为所有存储库设置的策略为以后添加的单个存储库设置默认值。
策略或选项
默认值
说明
关
阻止具有与指定模式不匹配的提交作者电子邮件的推送。 此设置需要 Azure DevOps Server 2020.1 或更高版本。
关
阻止推送引入与指定模式匹配的文件路径。 此设置需要 Azure DevOps Server 2020.1 或更高版本。
关
通过阻止更改文件、文件夹、分支和标记的名称大小写的推送,避免区分大小写的冲突。
关
阻止引入包含平台保留名称或不兼容字符的文件、文件夹或分支名称的推送。
关
阻止引入超出指定长度的路径的推送。
关
阻止包含大于所选限制的新文件或已更新文件的推送。
分支策略
下表汇总了可以定义以自定义分支的策略。 有关配置这些设置的详细信息,请参阅使用分支策略提高代码质量。 在分支上设置任何策略时,将自动实施以下策略:
- 需要拉取请求才能更新分支。
- 无法删除分支。
注意
分支策略将根据此拉取请求的目标分支而应用于拉取请求。 不应对拉取请求后会删除的临时分支设置分支策略。 将分支策略添加到临时分支将导致自动分支删除失败。
策略
默认值
说明
关
需要拉取请求获得指定数量的审阅者的批准。
关
通过检查拉取请求的链接工作项来提高可跟踪性。
关
检查是否已解决拉取请求的所有注释。
关
通过在拉取请求完成时限制可用的合并类型,来控制分支历史记录。
关
添加、启用或禁用一个或多个策略以通过预合并和生成拉取请求更改来验证代码。
关
添加、启用或禁用一个或多个策略以要求其他服务发布成功状态才能完成拉取请求。
关
添加、启用或禁用一个或多个策略以指定在拉取请求更改特定代码区域时自动包含的代码审阅者。
先决条件
- 要配置策略,你需要是“项目管理员”安全组的成员,或者具有存储库级别的编辑策略权限。 有关详细信息,请参阅设置 Git 存储库权限。
- 如果要使用 az repos 命令,请务必按照 Azure DevOps CLI 入门中的步骤操作。
- 要配置策略,你需要是“项目管理员”安全组的成员,或者具有存储库级别的编辑策略权限。 有关详细信息,请参阅设置 Git 存储库权限。
查看和编辑设置和策略
可以为组织或项目中的所有存储库或为单个存储库配置设置。 可以为所有存储库、单个存储库或各存储库的指定分支配置策略。 有关设置分支策略的信息,请参阅分支策略。
注意
最好在项目级别或者为单个存储库配置存储库设置,但不要两者同时进行。 如果在多个级别配置设置,系统将采用限制条件最严格的设置。 仅在一个级别配置设置可以减少混乱和 Git 性能问题。
要通过 Web 门户配置存储库设置和策略,请从 Web 浏览器中打开项目设置>存储库。
要查看或修改所有 Git 存储库的设置或策略,请打开所有存储库页,然后选择设置或策略。
要为特定存储库配置设置和策略,请选择存储库选项卡,选择存储库,然后选择设置或策略选项卡。
以下屏幕截图显示了已选中的设置选项卡。 可为所有 Git 存储库或单个存储库定义这些设置。
以下屏幕截图显示了已选中的策略选项卡。 可为所有 Git 存储库或单个存储库定义这些策略。
在 Web 浏览器中,打开项目并选择项目设置、存储库,然后选择存储库。
要查看和配置存储库设置,请选择选项或策略。
以下屏幕截图显示了所有存储库的选项:
以下屏幕截图显示了 Fabrikam 存储库的选项:
默认分支名称
可以在组织或项目级别设置默认存储库分支名称。 组织级设置对组织中所有项目的所有新存储库均有效。 项目级设置影响项目中的所有新存储库,并取代在组织级别设置的任何名称。
方法:
- 选择在初始化存储库时要使用的任何法定分支名称。
- 随时更改默认名称以影响所有将来的存储库。
- 随时更改任何特定存储库的默认分支名称。
如果未启用默认分支名称功能,则存储库将使用 Azure Repos 默认分支名称 main
进行初始化。
要在组织级别设置默认分支名称:
- 在 Azure DevOps 组织页上,选择左下角的组织设置,然后选择左侧导航中的存储库。
- 在所有存储库页上,将新存储库的默认分支名称设置为开,然后输入默认分支名称。
要在项目级别设置默认分支名称:
- 在 Azure DevOps 项目页上,选择左下角的项目设置,然后选择左侧导航中的存储库。
- 在所有存储库页的设置选项卡上,将新存储库的默认分支名称设置为开,然后输入默认分支名称。
注意
新存储库的默认分支名称设置需要 Azure DevOps Server 2020.1 或更高版本。
分支权限管理
可以通过为所有 Git 存储库或单个存储库设置权限管理设置来控制谁可以管理存储库分支的权限。 如果在所有存储库级别启用允许用户管理其创建的分支的权限设置,则所有新项目存储库都将配置为允许用户管理其创建的分支的权限。
要管理此设置:
- 在 Azure DevOps 项目页上,选择左下角的项目设置,然后选择左侧导航中的存储库。
- 在所有存储库页的设置选项卡上,将允许用户管理其创建的分支的权限设置为开或关。
要为单个存储库启用或禁用此设置:
- 选择项目设置>存储库,然后选择一个存储库。
- 在<存储库名称>页的设置选项卡上,将权限管理设置为开或关。
Gravatar 图像
此设置允许或禁止企业外部的用户使用 Gravatar 图像。
Gravatar 图像是组织级设置。
- 在 Azure DevOps 组织页上,选择左下角的组织设置,然后选择左侧导航中的存储库。
- 在所有存储库页上,将 Gravatar 图像设置为开或关。
Gravatar 图像是所有存储库的项目级设置。
- 在 Azure DevOps 项目页上,选择左下角的项目设置,然后选择左侧导航中的存储库。
- 在所有存储库页的设置选项卡上,将 Gravatar 图像设置为开或关。
Gravatar 图像是所有存储库的项目级设置。
- 在 Azure DevOps 项目页上,选择左下角的项目设置,然后选择左侧导航中的存储库。
- 在所有存储库页的设置选项卡上,将 Gravatar 图像设置为开或关。
启用分支
此存储库设置控制用户是否可以创建新的服务器端分支。 禁用此设置不会删除现有分支。
- 在项目设置中,选择左侧导航中的存储库。
- 在所有存储库页的存储库选项卡上,选择一个存储库。
- 在<存储库名称>页的设置选项卡上,将分支设置为开或关。
工作项链接设置
这些存储库设置管理工作项链接。
- 选择项目设置>存储库,然后选择一个存储库。
- 在<存储库名称>页的设置选项卡上,将设置设为开或关。
提交提及链接
启用后,包含后跟有效工作项 ID 的 #
的提交消息会自动将提交链接到该工作项。 如果存储库以前使用了其他帐户或服务,请禁用此设置。 这些存储库具有的提交消息可能包含与当前帐户中的工作项 ID 不匹配的 #
提及。
提交提及工作项解决方法
启用此设置可在链接的拉取请求完成时自动完成工作项。 此设置还允许在拉取请求提交消息中指定其他工作项转换状态。 有关详细信息,请参阅使用拉取请求自动完成工作项。
提交提及工作项解决方法
启用此设置可在成功完成 PR 时自动完成这些工作项。 有关详细信息,请参阅使用拉取请求自动完成工作项。
工作项转换首选项
默认情况下,用于在拉取请求完成期间完成链接工作项的选项会记住每个用户的最后选择。 希望阻止用户使用拉取请求完成工作项的团队可以禁用此设置。 然后,用户必须在每次完成拉取请求时选择完成工作项。
“严格投票模式”设置
在某些情况下,不是存储库参与者的用户可以根据策略提交拉取请求并使其合并。 为了防止这种可能性,请启用严格投票模式,以将对存储库拉取请求进行投票所需的权限更改为参与。 如果依赖于 Azure Repos 中的用户分支,建议启用此设置。
- 选择项目设置>存储库,然后选择一个存储库。
- 在<存储库名称>页的设置选项卡上,将严格投票模式设置为开或关。
“禁用存储库”设置
启用此设置将禁止访问存储库(包括生成和拉取请求),但使其可被发现并发出警告。
- 选择项目设置>存储库,然后选择一个存储库。
- 在<存储库名称>页的设置选项卡上的禁用存储库下,将禁用存储库设置为开或关。
“可搜索分支”设置
默认情况下,文件中的代码搜索仅适用于默认分支。 最多可以再添加五个要搜索的分支。
重要
要在存储库中搜索代码,必须安装市场代码搜索扩展。 如果在存储库设置选项卡中未看到可搜索分支,请确保已安装该扩展。
要为代码搜索添加分支:
- 选择项目设置>存储库,然后选择一个存储库。
- 在<储库名称>页的设置选项卡上,在可搜索分支中选择 +。
- 选择要包含在搜索中的分支,然后选择添加分支。
跨存储库分支策略
可以在项目中的所有存储库中对特定分支名称或默认分支设置策略。 例如,对于所有项目存储库的每个 main
分支中的所有拉取请求,可能需要至少两个审阅者。
要设置策略以保护项目中的特定或默认分支名称:
在项目设置中,选择左侧导航中的存储库。
在所有存储库页上,选择策略选项卡。
在页面底部的分支策略中选择加号 +。
在添加分支保护屏幕上,选择保护每个存储库的默认分支或保护当前和未来与指定模式匹配的分支。
如果选择第二个选项,请输入要保护的分支名称。 信息性消息可让你了解有多少当前分支受到影响。 请记住,分支名称(或输入的模式) 区分大小写。 分支无需存在即可保护分支名称。
选择创建。
在<分支名称>的跨存储库策略页上,为受保护的分支设置所需的策略。 有关分支策略的详细信息,请参阅分支策略。
“提交作者电子邮件验证”策略
此策略阻止其电子邮件地址与模式不匹配的提交作者提交到存储库。
选择项目设置>存储库,如果只想配置某个存储库,则选择该存储库。
在所有存储库或<存储库名称>页的策略选项卡上,在存储库策略下,将提交作者电子邮件验证设置为开或关。
如果启用该策略,请指定要匹配的电子邮件地址。
可以指定确切的电子邮件地址或使用通配符。 使用
;
作为多个电子邮件模式的分隔符。 排除前缀为!
的电子邮件模式。 顺序很重要。
“文件路径验证”策略
可以设置一个策略,防止从与模式匹配的文件路径提交到存储库。
选择项目设置>存储库,如果只想配置某个存储库,则选择该存储库。
在所有存储库或<存储库名称>页的策略选项卡上,在存储库策略下,将文件路径验证设置为开或关。
如果启用该策略,请指定要阻止的路径。
可以指定确切的路径和通配符。 确切路径以
/
开头。 还可以使用;
作为分隔符来指定多个路径。 排除前缀为!
的路径。 顺序很重要。
“大小写执行”策略
Git 区分大小写,这意味着名为 Foo.txt 的文件与名为 foo.txt 的文件不同。 但是,Windows 和 macOS 默认为不区分大小写的文件系统,这意味着 Foo.txt 和 foo.txt 是相同的名称。 如果使用不区分大小写的系统的人推送的文件、文件夹、分支或标记仅字母大小写不同,则这种差异可能会导致问题。 有关详细信息,请参阅 Git 跨平台兼容性。
如果大多数参与者都使用 Windows 或 macOS,则最好启用大小写执行策略。 “大小写执行”用于将服务器从其默认的区分大小写模式(其中 File.txt 和 file.txt 不同)切换到 Windows 和 MacOS 友好模式(其中 File.txt 和 file.txt 被视为是同一个文件)。 此设置会影响文件、文件夹、分支和标记。
此设置可防止参与者引入仅区分大小写的差异。 该设置通过阻止更改文件、文件夹、分支和标记的名称大小写的推送,避免区分大小写的冲突。 用户必须重写其未推送的历史记录以解决问题,然后再次尝试推送。
此设置不会修复已包含仅大小写不同的对象的存储库。 最好在启用策略之前解决此类问题。 重命名文件和文件夹或重新创建分支和标记以使用无冲突的名称。
要设置“大小写执行”策略:
- 选择项目设置>存储库,如果只想配置某个存储库,则选择该存储库。
- 在所有存储库或<存储库名称>页的策略选项卡上,在存储库策略下,将大小写执行设置为开或关。
“保留名称”策略
并非所有文件名都允许在 Windows、macOS 和 Linux 这三个主要 OS 文件系统上使用。 提交到共享存储库的内容可能包含在一个或多个平台上无效的文件或文件夹名称。 如果在这些平台上提取和签出无效的文件或文件夹,则工作目录可能会损坏。 有关详细信息,请参阅 Git 跨平台兼容性。
可以启用或禁用对文件和文件夹名称施加限制的策略。 保留名称设置阻止推送到包含在所有平台上均无效的文件或文件夹名称的存储库。 要查看哪些名称无效,请参阅 Git 跨平台兼容性。
要设置“保留名称”策略:
- 选择项目设置>存储库,如果只想配置某个存储库,则选择该存储库。
- 在所有存储库或<存储库名称>页的策略选项卡上,在存储库策略下,将保留名称设置为开或关。
“最大路径长度”策略
并非所有路径长度都允许在 Windows、macOS 和 Linux 这三个主要 OS 文件系统上使用。 提交到共享存储库的内容可能包含路径长度在一个或多个平台上无效的文件或目录。 如果在文件或目录在其上无效的平台上提取和签出这些文件或目录,则工作目录可能会损坏。 有关详细信息,请参阅 Git 跨平台兼容性。
最大路径长度设置阻止包含路径长度在任何平台上均无效的文件或目录的推送。 要查看哪些路径长度无效,请参阅 Git 跨平台兼容性。 启用此设置时,默认的最大值为 248
,因为所有三个主要平台都 100% 支持该最大长度。
可以修改最大路径值。 例如,如果组织中只有 macOS 或 Linux 开发人员,则可以选择将最大长度设置为这两个平台都支持的值 1016
。 还可以选择设置较低的最大路径值来强制执行组织的目录命名约定。
要设置“最大路径长度”策略:
- 选择项目设置>存储库,如果只想配置某个存储库,则选择该存储库。
- 在所有存储库或<存储库名称>页的策略选项卡上,在存储库策略下,将最大路径长度设置为开或关。
- 如果已启用该设置,请输入一个最大路径长度。
“最大文件大小”策略
签入 Git 的大型文件会无限期地保留在存储库中,从而增加克隆时间和磁盘使用量。 有关管理大型文件的指南,请参阅在 Git 中管理和存储大型文件。
最大文件大小策略设置阻止超过特定大小的文件进入存储库。 如果推送包含的新文件或已更新文件大于此设置中配置的限制,则推送会被阻止。 用户必须重写其未推送的历史记录以删除大型文件,然后再次尝试推送。
要配置最大文件大小策略:
- 选择项目设置>存储库,如果只想配置某个存储库,则选择该存储库。
- 在所有存储库或<存储库名称>页的策略选项卡上,在存储库策略下,将最大文件大小设置为开或关。
- 如果已启用该设置,请选择一个最大文件大小。