设置 Git 存储库设置和策略

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

可通过多种方式使用分支和存储库设置和策略自定义 Azure Repos Git 存储库。 本文讨论存储库级设置和策略。

  • 存储库设置和策略为项目或组织或单个存储库的所有 Git 存储库配置全局选项。

    本文介绍服务器端存储库设置和策略。 若要了解客户端 Git 首选项,请参阅Visual Studio中的 Git 首选项和设置

  • 分支策略涵盖特定于分支的控件。

    分支策略包括要求拉取请求、成功生成或代码评审等选项,然后更改才能合并到分支中。 有关详细信息,请参阅 分支策略和设置

  • 存储库和分支安全权限控制用户分配。

    这些权限控制谁可以读取、写入、参与拉取请求,并执行其他特定操作。 有关详细信息,请参阅 设置存储库的权限

注意

本文中所述的功能需要 TFS 2018 Update 2 或更高版本。

所有存储库和分支设置和策略的摘要

可以为项目中的所有存储库、单个存储库和存储库的分支配置设置和策略。 在浏览器中,通过 Project settingsRepositories 配置所有这些设置>和策略。

注意

可以使用 az repos 策略通过 Azure CLI 设置多个分支设置和策略。

下表总结了可为 Git 存储库和分支启用和配置的设置和策略。

所有存储库设置

下表汇总了可以为项目或组织中的所有新 Git 存储库启用和配置的设置。

设置

默认值

说明


使用指定的默认分支名称初始化新存储库。 可以随时更改特定存储库的默认分支。 If you don't enable this feature, repositories initialize with a default branch named main.

让用户在所有新存储库中管理其创建的分支的权限。

存储库设置

下表汇总了可为每个 Git 存储库启用或配置的设置。

设置

默认值

说明


启用或禁用为企业外部的用户使用 Gravatar 映像 。 此设置适用于项目中的所有存储库。

允许用户从存储库创建分支。

自动为提交注释中提到的工作项创建链接。

允许在提交注释中提及关闭工作项。 需要Azure DevOps Server 2020.1 更新或更高版本。

记住用户使用拉取请求完成工作项的用户首选项。

允许用户管理他们创建的分支的权限

为存储库启用 严格投票模式 ,这需要 参与 权限才能对拉取请求进行投票。

禁用对存储库的访问,包括生成和拉取请求,但保留存储库可发现警告。

指定最多五个分支以参与代码搜索,默认情况下仅适用于默认分支。 需要安装并启用 代码搜索扩展

存储库策略或选项

下表汇总了可以为所有存储库或单个存储库设置的策略或选项。 为所有 存储库 设置的策略为以后添加的单个存储库设置默认值。

策略选项

默认值

说明


使用与指定模式不匹配的提交作者电子邮件阻止推送。 此设置需要Azure DevOps Server 2020.1 或更高版本。

阻止推送引入与指定模式匹配的文件路径。 此设置需要Azure DevOps Server 2020.1 或更高版本。

通过阻止更改文件、文件夹、分支和标记上的名称大小写的推送来避免区分大小写冲突。

阻止引入包含平台保留名称或不兼容字符的文件、文件夹或分支名称的推送。

阻止推送,引入超过指定长度的路径。

阻止包含大于所选限制的新文件或更新的文件的推送。

分支策略

下表汇总了可用于自定义分支的策略。 有关配置这些设置的详细信息,请参阅 使用分支策略提高代码质量。 在分支上设置任何策略时,会自动强制实施以下策略:

  • 需要拉取请求才能更新分支。
  • 无法删除分支。

策略

默认值

说明


要求在拉取请求时获得指定数量的审阅者批准。

通过检查拉取请求上的链接工作项,鼓励可跟踪性。

检查是否已解决拉取请求的所有注释。

通过在完成拉取请求时限制可用的合并类型来控制分支历史记录。

通过预先合并和生成拉取请求更改来添加、启用或禁用一个或多个策略来验证代码。

添加、启用或禁用一个或多个策略,以要求其他服务发布成功状态以完成拉取请求。

添加、启用或禁用一个或多个策略,以指定在拉取请求更改某些代码区域时自动包括的代码审阅者。

先决条件

  • 若要配置策略,你必须是Project管理员安全组的成员,或者具有存储库级别的编辑策略权限。 若要了解详细信息,请参阅 设置 Git 存储库权限
  • 如果要使用 az repos 命令,请务必按照 Azure DevOps CLI 开始中的步骤进行操作。
  • 若要配置策略,你必须是Project管理员安全组的成员,或者具有存储库级别的编辑策略权限。 若要了解详细信息,请参阅 设置 Git 存储库权限

查看和编辑设置和策略

可以为整个组织或项目或单个存储库的所有存储库配置 设置 。 可以为所有存储库、单个存储库或跨存储库的指定分支配置 策略 。 有关设置分支策略的信息,请参阅 分支策略

注意

最好是在项目级别或单个存储库配置存储库设置,但不能同时配置这两者。 如果在多个级别配置设置,则系统会遵循限制性最高的设置。 仅在一个级别配置设置可以减少混淆和 Git 性能问题。

若要通过 Web 门户配置存储库设置和策略,请从 Web 浏览器打开ProjectsettingsRepositories>。

  1. 若要查看或修改所有 Git 存储库的设置或策略,请打开“所有存储库”页,然后选择“设置”或“策略”。

    Screenshot that shows repository Settings for All Repositories

    若要配置特定存储库的设置和策略,请选择“存储库”选项卡,选择存储库,然后选择“设置”或“策略”选项卡。

    Screenshot that shows repository Settings for the Fabrikam repository.

  2. 以下屏幕截图显示了所选设置选项卡。 可以为所有 Git 存储库或单个存储库定义这些设置。

    Screenshot that shows the repo project Settings tab selected.

  3. 以下屏幕截图显示了所选的 “策略 ”选项卡。 可以为所有 Git 存储库或单个存储库定义这些策略。

    Screenshot that shows the repo 'Policies' tab selected.

  1. 在 Web 浏览器中,打开项目,然后选择Project设置存储库并选择存储库。

    Screenshot of the 'Project Settings' for your repository.

  2. 若要查看和配置存储库设置,请选择 “选项 ”或“ 策略”。

    以下屏幕截图显示了所有存储库 的选项

    Screenshot of the Options for all repositories.

    以下屏幕截图显示了 Fabrikam 存储库 的选项

    Screenshot of Options for the Fabrikam repository.

  1. 在 Web 浏览器中,打开项目,然后选择齿轮图标、 版本控制,然后选择存储库。

    Screenshot that shows the 'Version Control' options for your repository.

  2. 选择 “选项 ”以查看和配置存储库设置。

    The options UI

默认分支名称

可以在组织或项目级别设置默认存储库分支名称。 组织级别设置对组织中所有项目的所有新存储库生效。 项目级别设置会影响项目中的所有新存储库,并取代在组织级别设置的任何名称。

可以执行以下操作:

  • 选择初始化存储库时要使用的任何法律分支名称。
  • 随时更改默认名称以影响所有将来的存储库。
  • 随时更改任何特定存储库的默认分支名称。

如果未启用默认分支名称功能,则存储库使用Azure Repos默认分支名称main进行初始化。

若要在组织级别设置默认分支名称,请执行以下操作:

  1. 在Azure DevOps组织页上,选择左下角的组织设置,然后在左侧导航中选择存储库
  2. 在“ 所有存储库 ”页上,将 新存储库的默认分支名称 设置为 On,然后输入默认分支名称。

Screenshot that shows the organization-level setting for Default branch name for new repositories.

若要在项目级别设置默认分支名称,请执行以下操作:

  1. 在Azure DevOps项目页上,选择左下角Project设置,然后选择左侧导航中的存储库
  2. 在“所有存储库”页的“设置”选项卡上,将新存储库的默认分支名称设置为“打开”,然后输入默认分支名称。

Screenshot that shows the project-level setting for Default branch name for new repositories.

注意

新存储库设置的默认分支名称需要Azure DevOps Server 2020.1 或更高版本。

分支权限管理

可以通过为所有 Git 存储库或单个存储库设置权限管理设置来控制谁可以管理存储库分支的权限。 如果允许用户在“所有存储库”级别管理其创建的分支设置的权限,则所有新的项目存储库都配置为允许用户管理其创建的分支的权限。

若要管理此设置,请执行以下操作:

  1. 在Azure DevOps项目页上,选择左下角Project设置,然后选择左侧导航中的存储库
  2. 在“所有存储库”页的“设置”选项卡上,设置“允许用户管理其创建的分支的权限”打开或关闭

Screenshot that shows the project-level Allow users to manage permissions for their created branches setting.

若要为单个存储库启用或禁用此设置,请执行以下操作:

  1. 选择Project 设置>存储库,然后选择存储库。
  2. “存储库名称>”页的<“设置”选项卡上,将“权限管理”设置为“打开”或“关闭”。

Screenshot that shows the Permissions management repository setting.

Gravatar 图像

此设置启用或禁用对企业外部用户使用 Gravatar 映像

Gravatar 图像 是组织级别的设置。

  1. 在Azure DevOps组织页上,选择左下角的组织设置,然后在左侧导航中选择存储库
  2. 在“ 所有存储库 ”页上,将 Gravatar 映像 设置为 “打开 ”或 “关闭”。

Screenshot that shows the organization-level setting for Gravatar images.

Gravatar 映像所有存储库的项目级设置。

  1. 在Azure DevOps项目页上,选择左下角Project设置,然后选择左侧导航中的存储库
  2. 在“所有存储库”页的“设置”选项卡上,将 Gravatar 映像设置为“打开”或“关闭”。

Gravatar 映像所有存储库的项目级设置。

  1. 在Azure DevOps项目页上,选择左下角Project设置,然后选择左侧导航中的存储库
  2. 在“所有存储库”页的“设置”选项卡上,将 Gravatar 映像设置为“打开”或“关闭”。

Gravatar 映像 是单个存储库设置。

启用分支

此存储库设置控制用户是否可以创建新的服务器端 分支。 禁用此设置不会删除现有的分叉。

  1. Project 设置中,选择左侧导航中的存储库
  2. 在“所有存储库”页的“存储库”选项卡上,选择存储库。
  3. “存储库名称>”页的<“设置”选项卡上,将分支设置为“打开”或“关闭”。

Screenshot that shows the Forks repository setting.

工作项链接设置

这些存储库设置管理工作项链接。

  1. 选择Project 设置>存储库,然后选择存储库。
  2. “存储库名称>”页的<“设置”选项卡上,打开或关闭设置。

Screenshot that shows the work item linking repository settings.

提交提及链接

启用后,包含的提交消息 # 后跟有效的工作项 ID 会自动将提交链接到该工作项。 如果存储库以前使用不同的帐户或服务,请禁用此设置。 这些存储库可能包含与当前帐户中工作项 ID 不匹配的提及的提交消息 #

提交提及工作项解析

启用此设置以在链接拉取请求完成时自动完成工作项。 此设置还允许在拉取请求提交消息中指定其他工作项转换状态。 有关详细信息,请参阅 使用拉取请求自动完成工作项

提交提及工作项解析

启用此设置可在成功完成 PR 时自动完成这些工作项。 若要了解详细信息,请参阅 使用拉取请求自动完成的工作项

工作项转换首选项

默认情况下,在拉取请求完成期间完成链接工作项的选项会记住每个用户的最后一个选项。 希望阻止用户使用拉取请求完成工作项的Teams可以禁用此设置。 然后,用户必须选择每次完成拉取请求时完成工作项。

严格投票模式设置

在某些情况下,不属于存储库参与者的用户可以提交拉取请求并导致合并,具体取决于策略。 若要防止这种可能性,请启用 严格投票模式 以更改对存储库拉取 请求进行投票所需的权限。 如果你依赖于Azure Repos中的用户分支,建议启用此设置。

  1. 选择Project 设置>存储库,然后选择存储库。
  2. “存储库名称>”页的<“设置”选项卡上,将“严格投票模式”设置为“打开”或“关闭”。

Screenshot that shows the Strict Vote Mode repository setting.

禁用存储库设置

启用此设置会禁用对存储库的访问,包括生成和拉取请求,但保留存储库可发现警告。

  1. 选择Project 设置>存储库,然后选择存储库。
  2. “存储库名称>”页的<“设置”选项卡上,在“禁用存储库”下,将“禁用存储库”设置为“打开”或“关闭”。

Screenshot that shows the Disable Repository setting.

可搜索分支设置

默认情况下,文件中的代码搜索仅适用于默认分支。 最多可以添加五个分支进行搜索。

重要

若要在存储库中搜索代码,必须安装市场 代码搜索 扩展。 如果在存储库设置选项卡中看不到“可搜索分支”,请确保已安装扩展。

添加代码搜索的分支:

  1. 选择Project 设置>存储库,然后选择存储库。
  2. “存储库名称>”页的<“设置”选项卡上,选择+“可搜索的分支”。
  3. 选择要包含在搜索中的分支,然后选择“ 添加分支”。

Screenshot that shows the Searchable Branches repository setting.

注意

可搜索分支设置需要Azure DevOps Server 2020.1 或更高版本。

跨存储库分支策略

可以在项目中所有存储库中设置特定分支名称或默认分支上的策略。 例如,对于所有 main 项目存储库的每个分支中的所有拉取请求,可能需要两个最低审阅者。

若要设置策略以保护项目中的特定或默认分支名称:

  1. Project 设置中,选择左侧导航中的存储库

  2. 在“ 所有存储库 ”页上,选择“ 策略 ”选项卡。

  3. 选择页面底部的分支策略加号登录+

  4. “添加分支保护 ”屏幕上,选择“ 保护每个存储库的默认分支”,或 保护与指定模式匹配的当前和将来的分支

    如果选择第二个选项,请输入要保护的分支名称。 信息性消息可让你知道有多少当前分支受到影响。 分支尚不存在,无法保护分支名称。

  5. 选择“创建”。

    Screenshot that shows enabling cross-repo branch policies.

  6. 分支名称>的<跨存储库策略页上,为受保护的分支设置所需的策略。 有关分支策略的详细信息,请参阅 分支策略

    Screenshot that shows cross-repo branch policy settings.

提交作者电子邮件验证策略

此策略阻止提交作者提交到存储库,其电子邮件地址与模式不匹配。

  1. 选择Project 设置>Repositories,如果只想配置该存储库,请选择存储库。

  2. 在“所有存储库<存储库名称>”页的“策略”选项卡上,在“存储库策略”下,将提交作者电子邮件验证设置为“打开”或“关闭”。

  3. 如果启用策略,请指定要匹配的电子邮件地址或地址。

    可以指定确切的电子邮件地址或使用通配符。 用作 ; 多个电子邮件模式的分隔符。 排除前缀为电子邮件 ! 模式的电子邮件模式。 顺序很重要。

Screenshot that shows the Commit author email validation policy setting.

文件路径验证策略

可以设置一个策略,防止提交到存储库的文件路径与模式匹配。

  1. 选择Project 设置>Repositories,如果只想配置该存储库,请选择存储库。

  2. 在“所有存储库<存储库名称>”页的“策略”选项卡上,在“存储库策略”下,将文件路径验证设置为“打开”或“关闭”。

  3. 如果打开策略,请指定要阻止的路径或路径。

    可以指定确切的路径和通配符。 确切路径以 /. 开头。 还可以使用 ; 分隔符指定多个路径。 带 ! 前缀的路径将被排除。 顺序很重要。

Screenshot that shows the File path validation policy setting.

案例实施策略

Git 区分大小写,这意味着名为 Foo.txt 的文件不同于名为 foo.txt的文件。 但是,Windows和 macOS 默认为不区分大小写的文件系统,这意味着Foo.txtfoo.txt的名称相同。 如果不区分大小写的系统上的某人推送文件、文件夹、分支或仅因字母大小写而有所不同的标记,则这种差异可能会导致问题。 有关详细信息,请参阅 Git 跨平台兼容性

如果大多数参与者都位于 Windows 或 macOS 上,最好启用 Case 强制策略。 案例强制将服务器从默认区分大小写的模式(其中File.txtfile.txt不同)切换到Windows和 macOS 友好模式,其中File.txtfile.txt被视为同一文件。 此设置会影响文件、文件夹、分支和标记。

此设置可防止参与者引入仅限大小写的差异。 此设置通过阻止更改文件、文件夹、分支和标记上的名称大小写的推送来避免区分大小写冲突。 用户必须重写其未推送历史记录才能解决问题,然后再次尝试推送。

此设置不会修复已包含仅区分大小写的对象的存储库。 最好在启用策略之前修复此类问题。 重命名文件和文件夹或重新创建 分支标记 以使用不冲突的名称。

若要设置案例强制策略,请执行以下操作:

  1. 选择Project 设置>Repositories,如果只想配置该存储库,请选择存储库。
  2. 在“所有存储库<存储库名称>”页的“策略”选项卡上,在“存储库策略”下,将案例强制设置为“打开”或“关闭”。

Screenshot that shows the Case enforcement policy setting.

注意

案例强制策略需要 TFS 2018.2 或更高版本。

保留名称策略

并非所有文件名都允许在三个主要 OS 文件系统上:Windows、macOS 和 Linux。 提交到共享存储库可能包含一个或多个平台上无效的文件或文件夹名称。 如果提取并签出这些平台上的无效文件或文件夹,工作目录可能会损坏。 有关详细信息,请参阅 Git 跨平台兼容性

可以启用或禁用策略以对文件和文件夹名称施加限制。 保留名称设置阻止推送到包含所有平台上无效的文件或文件夹名称的存储库。 若要查看名称无效,请参阅 Git 跨平台兼容性

设置保留名称策略:

  1. 选择Project 设置>存储库,如果只想配置该存储库,请选择存储库。
  2. 在“所有存储库<存储库名称>”页的“策略”选项卡上的“存储库策略”下,将“保留名称”设置为“打开”或“关闭”。

Screenshot that shows the Reserved names policy setting.

最大路径长度策略

并非所有路径长度都允许在三个主要 OS 文件系统上:Windows、macOS 和 Linux。 提交到共享存储库可能包含路径长度无效的文件或目录,这些文件或目录在一个或多个平台上无效。 如果在无效的平台上提取并签出这些文件或目录,工作目录可能会损坏。 有关详细信息,请参阅 Git 跨平台兼容性

最大路径长度设置阻止包含任何平台上无效的文件或目录的推送。 若要查看路径长度无效,请参阅 Git 跨平台兼容性。 启用此设置时,默认值为 248,因为所有三个主要平台支持的最大长度为 100%。

可以修改最大路径值。 例如,如果组织中只有 macOS 或 Linux 开发人员,可以选择将最大长度设置为这两个平台上支持的值。 1016 还可以选择设置较低的最大路径值,以强制实施组织的目录命名约定。

设置最大路径长度策略:

  1. 选择Project 设置>存储库,如果只想配置该存储库,请选择存储库。
  2. 在“所有存储库<存储库名称>”页的“策略”选项卡上的“存储库策略”下,将最大路径长度设置为“打开”或“关闭”。
  3. 如果打开了设置,请输入最大路径长度。

Screenshot that shows the Maximum path length policy setting.

最大文件大小策略

签入 Git 的大型文件将无限期保留在存储库中,增加克隆时间和磁盘使用率。 有关管理大型文件的指南,请参阅 在 Git 中管理和存储大型文件

最大文件大小策略设置阻止特定大小的文件进入存储库。 如果推送包含大于此设置中配置的限制的新文件或更新的文件,则阻止推送。 用户必须重写其未压缩的历史记录以删除大型文件,然后重试推送。

若要配置 最大文件大小 策略,请执行以下操作:

  1. 选择Project 设置>存储库,如果只想配置该存储库,请选择存储库。
  2. 在“所有存储库<存储库名称>”页的“策略”选项卡上,在“存储库策略”下,将最大文件大小设置为“开”或“关”。
  3. 如果启用此设置,请选择最大文件大小。

Screenshot that shows the Maximum file size policy setting.

注意

最大文件大小策略需要 TFS 2018.2 或更高版本。

后续步骤