Skip to content

Commit

Permalink
Upgrade to EF Core 6.0.0-preview4 (#1416)
Browse files Browse the repository at this point in the history
* Migrate to EF Core 6.0.0-preview4.

* Fix MySqlMigrationsModelDiffer.

* Fix MySqlSqlTranslatingExpressionVisitor (NotTranslatedExpressionType after visiting a SqlBinaryExpression).

* Fix MySqlSqlTranslatingExpressionVisitor.

* Implement support to return a single byte from a byte array/binary column by index and First() extension method.

* Implement explicit datetime/timestamp, date and time literals.

* Implement SQL Server based workaround for EXISTS(...LIMIT 0 OFFSET 0) bug in MySQL (MariaDB works fine).

* Fix tests.

* Implement MySqlNetTopologySuiteApiConsistencyTest.

* Implement MySqlApiConsistencyTest.

* Setup CI usage of .NET Core preview release.

* Skip failing FromSqlQuery test cases, until dotnet/efcore#24806 has been merged.

* Implement FieldsOnlyLoadMySqlTest.

* Implement DesignTimeMySqlTest.

* Implement ManyToManyFieldsLoadMySqlTest.

* Implement MySqlUpdateSqlGeneratorTest.

* Annotate tests, that are not supported for MariaDB.

* Fix tests with inaccurate orderings. (Should be fixed in EF Core.)

* Annotate tests, that require window functions support (relevant for MySQL < 8.0.0).
  • Loading branch information
lauxjpn committed May 2, 2021
1 parent 5b518ba commit ebe011a
Show file tree
Hide file tree
Showing 131 changed files with 2,384 additions and 1,789 deletions.
61 changes: 31 additions & 30 deletions Dependencies.targets
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<Project>
<PropertyGroup Label="Common Versions">
<DotnetRuntimeVersion>5.0.5</DotnetRuntimeVersion>
<EFCoreVersion>[$(DotnetRuntimeVersion), 6.0.0)</EFCoreVersion>
<DotnetRuntimeVersion>6.0.0-preview.4.*</DotnetRuntimeVersion>
<EFCoreVersion>$(DotnetRuntimeVersion)</EFCoreVersion> <!-- [$(DotnetRuntimeVersion), 7.0.0) -->
<DependencyPreviewVersion>$(DotnetRuntimeVersion)</DependencyPreviewVersion>
</PropertyGroup>

<ItemGroup Label="Dependencies">
Expand All @@ -10,38 +11,38 @@
<PackageReference Update="Microsoft.EntityFrameworkCore.Relational" Version="$(EFCoreVersion)" />
<PackageReference Update="Microsoft.EntityFrameworkCore" Version="$(EFCoreVersion)" />

<PackageReference Update="MySqlConnector" Version="1.3.7" />
<PackageReference Update="MySqlConnector" Version="1.*" />

<PackageReference Update="NetTopologySuite" Version="2.2.0" />
<PackageReference Update="System.Text.Json" Version="5.0.2" />
<PackageReference Update="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Update="NetTopologySuite" Version="2.*-*" />
<PackageReference Update="System.Text.Json" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Newtonsoft.Json" Version="13.*-*" />

<PackageReference Update="Castle.Core" Version="4.4.1" />
<PackageReference Update="Castle.Core" Version="4.*-*" />
<PackageReference Update="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="$(DotnetRuntimeVersion)" />
<PackageReference Update="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="$(DotnetRuntimeVersion)" />
<PackageReference Update="Microsoft.Bcl.AsyncInterfaces" Version="5.0.0" />
<PackageReference Update="Microsoft.Bcl.HashCode" Version="1.1.1" />
<PackageReference Update="Microsoft.CodeAnalysis.CSharp" Version="3.9.0" />
<PackageReference Update="Microsoft.Extensions.Caching.Memory" Version="5.0.0" />
<PackageReference Update="Microsoft.Extensions.Configuration.Binder" Version="5.0.0" />
<PackageReference Update="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="5.0.0" />
<PackageReference Update="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0" />
<PackageReference Update="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />
<PackageReference Update="Microsoft.Extensions.Configuration" Version="5.0.0" />
<PackageReference Update="Microsoft.Extensions.DependencyInjection" Version="5.0.1" />
<PackageReference Update="Microsoft.Extensions.DependencyModel" Version="5.0.0" />
<PackageReference Update="Microsoft.Extensions.Logging" Version="5.0.0" />
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="16.9.4" />
<PackageReference Update="Microsoft.SourceLink.GitHub" Version="1.0.0" />
<PackageReference Update="Moq" Version="4.16.1" />
<PackageReference Update="System.Collections.Immutable" Version="5.0.0" />
<PackageReference Update="System.ComponentModel.Annotations" Version="5.0.0" />
<PackageReference Update="System.ComponentModel.TypeConverter" Version="4.3.0" />
<PackageReference Update="System.Diagnostics.DiagnosticSource" Version="5.0.1" />
<PackageReference Update="xunit.assert" Version="2.4.1" />
<PackageReference Update="xunit.core" Version="2.4.1" />
<PackageReference Update="xunit.runner.console" Version="2.4.1" />
<PackageReference Update="xunit.runner.visualstudio" Version="2.4.3" />
<PackageReference Update="Microsoft.Bcl.AsyncInterfaces" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Microsoft.Bcl.HashCode" Version="1.*-*" />
<PackageReference Update="Microsoft.CodeAnalysis.CSharp" Version="3.*-*" />
<PackageReference Update="Microsoft.Extensions.Caching.Memory" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Microsoft.Extensions.Configuration.Binder" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Microsoft.Extensions.Configuration.FileExtensions" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Microsoft.Extensions.Configuration.Json" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Microsoft.Extensions.Configuration" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Microsoft.Extensions.DependencyInjection" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Microsoft.Extensions.DependencyModel" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Microsoft.Extensions.Logging" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="16.*-*" />
<PackageReference Update="Microsoft.SourceLink.GitHub" Version="1.*-*" />
<PackageReference Update="Moq" Version="4.*-*" />
<PackageReference Update="System.Collections.Immutable" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="System.ComponentModel.Annotations" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="System.ComponentModel.TypeConverter" Version="4.*-*" />
<PackageReference Update="System.Diagnostics.DiagnosticSource" Version="$(DependencyPreviewVersion)" />
<PackageReference Update="xunit.assert" Version="2.*-*" />
<PackageReference Update="xunit.core" Version="2.*-*" />
<PackageReference Update="xunit.runner.console" Version="2.*-*" />
<PackageReference Update="xunit.runner.visualstudio" Version="2.*-*" />

<!-- Keep at the same level that the EF Core projects use. -->
<PackageReference Update="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0" />
Expand Down
4 changes: 2 additions & 2 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<Product>Pomelo.EntityFrameworkCore.MySql</Product>
<Authors>Laurents Meyer, Caleb Lloyd, Yuko Zheng</Authors>
<Company>Pomelo Foundation</Company>
<Copyright>Copyright 2020 © Pomelo Foundation</Copyright>
<Copyright>Copyright 2021 © Pomelo Foundation</Copyright>
<PackageIconUrl>https://avatars3.githubusercontent.com/u/19828814</PackageIconUrl>
<PackageIcon>icon.png</PackageIcon>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
Expand All @@ -23,7 +23,7 @@

<PropertyGroup>
<DefaultNetCoreTargetFramework>net5.0</DefaultNetCoreTargetFramework>
<DefaultNetCoreLegacyTargetFramework>netcoreapp5.0</DefaultNetCoreLegacyTargetFramework>
<DefaultNetCoreLegacyTargetFramework>net6.0</DefaultNetCoreLegacyTargetFramework>
<DefaultNetStandardTargetFramework>netstandard2.1</DefaultNetStandardTargetFramework>
</PropertyGroup>

Expand Down
7 changes: 5 additions & 2 deletions NuGet.config
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@
<!-- Package sources used by EF Core: -->
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
<add key="dotnet-tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" />
<add key="dotnet5-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json" />
<add key="dotnet5" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json" />
<add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" />
<add key="dotnet6-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6-transport/nuget/v3/index.json" />
<add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
<add key="richnav" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/vs-buildservices/nuget/v3/index.json" />

<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
1 change: 1 addition & 0 deletions Pomelo.EFCore.MySql.sln
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
README.md = README.md
dotnet-tools.json = dotnet-tools.json
Dependencies.targets = Dependencies.targets
NuGet.config = NuGet.config
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCore.MySql", "src\EFCore.MySql\EFCore.MySql.csproj", "{FC2779F0-2A2A-4BE2-B5A8-FDA31A4A404A}"
Expand Down
22 changes: 13 additions & 9 deletions Version.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@
<PropertyGroup Label="Version settings">
<!--
Use the following values for the different release types:
- "alpha"
- "beta"
- "rc"
- "rtm"
- "servicing"
- "alpha" - EF Core release independent, code quality unstable, major changes
- "beta" - EF Core release independent, code quality stable, can introduce breaking changes
- "silver" - EF Core release independent, code quality stable, can introduce breaking changes
- "preview" - EF Core release targeted, code quality stable, can introduce breaking changes
- "rc" - EF Core release targeted, code quality production ready, only minor changes are expected
- "rtm" - EF Core release independent, code quality production ready, major release
- "servicing" - EF Core release independent, code quality production ready, mainly bugfixes
-->
<VersionPrefix>5.0.1</VersionPrefix>
<PreReleaseVersionLabel>servicing</PreReleaseVersionLabel>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>
<VersionPrefix>6.0.0</VersionPrefix>
<PreReleaseVersionLabel>preview</PreReleaseVersionLabel>
<PreReleaseVersionIteration>4</PreReleaseVersionIteration>

<!--
The following properties will automatically be set by CI builds when appropriate:
Expand Down Expand Up @@ -39,7 +43,7 @@
<Error Condition="'$(VersionPrefix)' == ''" Text="The 'VersionPrefix' property needs to be set." />
<Error Condition="'$(PreReleaseVersionLabel)' == ''" Text="The 'PreReleaseVersionLabel' property needs to be set." />
<Error Condition="'$(PreReleaseVersionIteration)' == ''" Text="The 'PreReleaseVersionIteration' property needs to be set." />
<Error Condition="'$(OfficialVersion)' != '' And '$(OfficialVersion)' != '$(VersionPrefix)'" Text="The 'OfficialVersion' property needs to be identical to the 'VersionPrefix' property." />
<Error Condition="'$(OfficialVersion)' != '' And '$(OfficialVersion)' != '$(VersionPrefix)' And '$(OfficialVersion)' != '$(VersionPrefix)-$(VersionSuffix)'" Text="The 'OfficialVersion' property needs to be identical to the 'VersionPrefix' property or to a combination of the 'VersionPrefix' and the 'VersionSuffix' properties." />
<!--
<Message Importance="high" Text="VersionPrefix: $(VersionPrefix)" />
<Message Importance="high" Text="VersionSuffix: $(VersionSuffix)" />
Expand Down
117 changes: 85 additions & 32 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ variables:
mariadbSqlMode: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
maxConnections: 255
runIntegrationTests: true

# Dotnet + Tools versioning:
majorDotnetVersion: 6 # empty uses global.json (for rtm/servicing releases)
includeDotnetPrereleases: true

DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: 1
jobs:
Expand Down Expand Up @@ -61,18 +66,50 @@ jobs:
pool:
vmImage: $(vmImageName)
steps:
- pwsh: |
$dotnetVersion = ''
$dotnetEfToolUpdateVersion = ''
$useGlobalJson = $false
if ('$(majorDotnetVersion)' -ne '')
{
$dotnetVersion = '$(majorDotnetVersion).x'
if ('$(includeDotnetPrereleases)' -eq 'true')
{
$dotnetEfToolUpdateVersion = '$(majorDotnetVersion).*-*'
}
else
{
$dotnetEfToolUpdateVersion = '$(majorDotnetVersion).*'
}
}
else
{
$useGlobalJson = $true
}
echo "##vso[task.setvariable variable=dotnetVersion]$dotnetVersion"
echo "##vso[task.setvariable variable=dotnetEfToolUpdateVersion]$dotnetEfToolUpdateVersion"
echo "##vso[task.setvariable variable=useGlobalJson]$useGlobalJson"
displayName: Set additional variables
- pwsh: |
echo "skipTests: $(skipTests)"
echo "skipWindowsTests: $(skipWindowsTests)"
echo "pullRequestSourceBranch: $(pullRequestSourceBranch)"
echo "isPullRequest: $(isPullRequest)"
echo "Build.SourceBranchName: $(Build.SourceBranchName)"
echo "Build.SourceVersionMessage: $(Build.SourceVersionMessage)"
echo "dotnetVersion: $(dotnetVersion)"
echo "includeDotnetPrereleases: $(includeDotnetPrereleases)"
echo "useGlobalJson: $(useGlobalJson)"
displayName: Output Variables
- task: UseDotNet@2
displayName: 'Use .NET Core SDK'
inputs:
useGlobalJson: true
version: $(dotnetVersion)
includePreviewVersions: $(includeDotnetPrereleases)
useGlobalJson: $(useGlobalJson)
- pwsh: |
if ('$(Agent.OS)' -eq 'Windows_NT')
{
Expand Down Expand Up @@ -103,7 +140,7 @@ jobs:
$startTime = Get-Date
$started = $false
while (!($started = docker exec mysql mysqladmin -h localhost -P 3306 -u root -pPassword12! status) -and ((Get-Date) - $startTime).TotalMinutes -lt $waitMinutes)
while (!($started = docker exec mysql mysqladmin --protocol=tcp -h localhost -P 3306 -u root -pPassword12! status) -and ((Get-Date) - $startTime).TotalMinutes -lt $waitMinutes)
{
Start-Sleep -Seconds $pollingIntervalSeconds
}
Expand All @@ -116,25 +153,30 @@ jobs:
}
displayName: Install Database Server
- pwsh: |
if ('$(Agent.OS)' -eq 'Windows_NT')
{
mysql -h localhost -u root -pPassword12! -e "SET GLOBAL sql_mode = '$(sqlMode)'; SET GLOBAL max_connections = $(maxConnections);"
}
else
$mySqlCommand = "mysql --protocol=tcp -h localhost -P 3306 -u root -pPassword12! -e ""SET GLOBAL sql_mode = '$(sqlMode)'; SET GLOBAL max_connections = $(maxConnections);"""
if ('$(Agent.OS)' -ne 'Windows_NT')
{
docker exec mysql mysql -h localhost -P 3306 -u root -pPassword12! -e "SET GLOBAL sql_mode = '$(sqlMode)'; SET GLOBAL max_connections = $(maxConnections);"
$mySqlCommand = 'docker exec mysql ' + $mySqlCommand
}
$mySqlCommand
Invoke-Expression $mySqlCommand
echo "Exit code: $?"
displayName: Setup Database
ignoreLASTEXITCODE: true
- pwsh: |
if ('$(Agent.OS)' -eq 'Windows_NT')
{
mysql -h localhost -u root -pPassword12! -e 'SHOW VARIABLES;'
}
else
$mySqlCommand = 'mysql --protocol=tcp -h localhost -P 3306 -u root -pPassword12! -e "SHOW VARIABLES;"'
if ('$(Agent.OS)' -ne 'Windows_NT')
{
docker exec mysql mysql -h localhost -P 3306 -u root -pPassword12! -e 'SHOW VARIABLES;'
$mySqlCommand = 'docker exec mysql ' + $mySqlCommand
}
$mySqlCommand
Invoke-Expression $mySqlCommand
echo "Exit code: $?"
displayName: Database Information
continueOnError: true
Expand All @@ -143,52 +185,61 @@ jobs:
- pwsh: dotnet --info
displayName: .NET Information
- pwsh: |
if ('$(dotnetEfToolUpdateVersion)' -ne '')
{
dotnet tool update dotnet-ef --version $(dotnetEfToolUpdateVersion)
}
dotnet tool restore
dotnet ef --version
displayName: Install EF Core Tools
- pwsh: |
cp test/EFCore.MySql.FunctionalTests/config.json.example test/EFCore.MySql.FunctionalTests/config.json
cp test/EFCore.MySql.IntegrationTests/appsettings.ci.json test/EFCore.MySql.IntegrationTests/appsettings.json
cp test/EFCore.MySql.IntegrationTests/config.json.example test/EFCore.MySql.IntegrationTests/config.json
displayName: Setup Solution
- pwsh: |
./test/EFCore.MySql.IntegrationTests/scripts/rebuild.ps1
displayName: Setup Integration Tests
condition: and(ne(variables['skipTests'], true), eq(variables['runIntegrationTests'],'true'))
- pwsh: |
dotnet build -c Debug
displayName: Setup and Build Solution
dotnet build -c Release
displayName: Build Solution
- pwsh: |
if ("$(runIntegrationTests)" -eq "true")
{
./test/EFCore.MySql.IntegrationTests/scripts/rebuild.ps1
}
displayName: Build Integration Tests
dotnet test test/EFCore.MySql.FunctionalTests -c Debug --no-build --logger trx --verbosity detailed
displayName: Functional Tests
condition: ne(variables['skipTests'], true)
- pwsh: dotnet test --logger trx test/EFCore.MySql.Tests
- pwsh: |
dotnet test --logger trx test/EFCore.MySql.Tests
displayName: Tests
condition: ne(variables['skipTests'], true)
- pwsh: dotnet test test/EFCore.MySql.FunctionalTests -c Release --logger trx --verbosity detailed
displayName: Functional Tests
condition: ne(variables['skipTests'], true)
- pwsh: |
Get-ChildItem QueryBaseline.txt -Recurse | % { $_.FullName }
Get-Content QueryBaseline.txt -ErrorAction Ignore
displayName: Show Query Baseline
condition: ne(variables['skipTests'], true)
- pwsh: dotnet run --project test/EFCore.MySql.IntegrationTests -c Release testMigrate
- pwsh: |
dotnet run --project test/EFCore.MySql.IntegrationTests -c Release testMigrate
displayName: Integration Tests - Applying migrations
condition: and(ne(variables['skipTests'], true), eq(variables['runIntegrationTests'],'true'))
- pwsh: ./test/EFCore.MySql.IntegrationTests/scripts/scaffold.ps1
- pwsh: |
./test/EFCore.MySql.IntegrationTests/scripts/scaffold.ps1
displayName: Integration Tests - Scaffolding
condition: and(ne(variables['skipTests'], true), eq(variables['runIntegrationTests'],'true'))
- pwsh: |
$env:EF_BATCH_SIZE = "1"
dotnet test -c Release --logger trx test/EFCore.MySql.IntegrationTests
dotnet test -c Release --no-build --logger trx test/EFCore.MySql.IntegrationTests
displayName: Integration Tests - With EF_BATCH_SIZE = 1
condition: and(ne(variables['skipTests'], true), eq(variables['runIntegrationTests'],'true'))
- pwsh: |
$env:EF_BATCH_SIZE = "10"
dotnet test -c Release --logger trx test/EFCore.MySql.IntegrationTests
dotnet test -c Release --no-build --logger trx test/EFCore.MySql.IntegrationTests
displayName: Integration Tests - With EF_BATCH_SIZE = 10
condition: and(ne(variables['skipTests'], true), eq(variables['runIntegrationTests'],'true'))
- pwsh: |
$env:EF_RETRY_ON_FAILURE = "3"
dotnet test -c Release --logger trx test/EFCore.MySql.IntegrationTests
dotnet test -c Release --no-build --logger trx test/EFCore.MySql.IntegrationTests
displayName: Integration Tests - With EF_RETRY_ON_FAILURE = 3
condition: and(ne(variables['skipTests'], true), eq(variables['runIntegrationTests'],'true'))
- pwsh: ./test/EFCore.MySql.IntegrationTests/scripts/legacy.ps1
Expand All @@ -206,7 +257,7 @@ jobs:
condition: and(ne(variables['skipTests'], true), eq(variables['runIntegrationTests'],'true'))
- pwsh: |
$env:EF_DATABASE = "pomelo_test2"
dotnet test -c Release --logger trx test/EFCore.MySql.IntegrationTests
dotnet test -c Release --no-build --logger trx test/EFCore.MySql.IntegrationTests
displayName: Integration Tests - With EF_DATABASE = pomelo_test2
condition: and(ne(variables['skipTests'], true), eq(variables['runIntegrationTests'],'true'))
- task: PublishTestResults@2
Expand All @@ -231,11 +282,13 @@ jobs:
- task: UseDotNet@2
displayName: 'Use .NET Core SDK'
inputs:
useGlobalJson: true
version: $(dotnetVersion)
includePreviewVersions: $(includeDotnetPrereleases)
useGlobalJson: $(useGlobalJson)
- pwsh: dotnet --info
displayName: .NET Information
- pwsh: |
$officialBuild = '$(Build.SourceBranch)' -match '(?<=^refs/tags/)\d+\.\d+\.\d+$'
$officialBuild = '$(Build.SourceBranch)' -match '(?<=^refs/tags/)\d+\.\d+\.\d+(?:\.[^.]+)*$'
$officialVersion = $Matches.0
$wipBuild = '$(Build.SourceBranch)' -match '^refs/heads/.*-wip$'
$ciBuildOnly = $wipBuild -or ('$(Build.SourceBranch)' -match '^refs/heads/(?:master|.*-maint)$')
Expand Down
Loading

0 comments on commit ebe011a

Please sign in to comment.