Upgrading phpro/grumphp 1 to 2
Breakingv1.16.0 → v2.26.0Breaking3Security3Platform3New21Changed25Fixed10Other23
SecurityPrefixes file paths starting with `-` with `./` so external tools cannot parse them as options, and makes git_blacklist match file names literally.GHSA-fmpp-rfr9-jgpg ↗
BreakingUpgrade verdict
3 breaking changes and 3 platform requirement changes and 3 security fixes.
In plain terms
- Removes v1 deprecations.
- After upgrading, the pre-commit git hook must be regenerated because the diff command it runs now needs an extra --raw flag.
- Contains BC breaks for GrumPHP extension or task developers.
- The package now supports running on PHP 8.4.
Must act Top 5 of 9 that need code or config changes
phpro/grumphp publishes an official migration guide for version 2. It covers more than the release notes do.
Migration guide ↗PHP requirement changed in v2.17.0: ^8.0 → ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0.
What you must change
Breaking3
Removes v1 deprecations.
Requires the --raw option on git diff for gitlib, so git hooks must be re-initialized after upgrading.
git diff--rawgrumphp git:initContains BC breaks for GrumPHP extension or task developers.
Security3
Prefixes file paths starting with
- with ./ so external tools cannot parse them as options, and makes git_blacklist match file names literally.git_blacklistPrevents file paths from being parsed as tool options.
Upgrades composer CVE and lock dependencies.
Platform3
Adds PHP 8.4 support.
Requires PHP >=v8.1.
Requires PHP >=v8.1.
API changes
Generated by DepDelta from published PHP source. Not mixed with prose notes.
- added:
method TasksCollection.filterEnabled(): self - added:
static method FilesCollection.fromTraversable(\Traversable $iterator): FilesCollection
- changed:
constructor GuessedPaths(string $gitWorkingDir, string $gitRepositoryDir, string $workingDir, string $projectDir, string $binDir, ComposerFile $composerFile, string $configFile) → constructor GuessedPaths(string $gitWorkingDir, string $gitRepositoryDir, string $workingDir, string $projectDir, string $binDir, ComposerFile $composerFile, string $configFile, ?string $gitWorktreeDir = …) - added:
final class LoaderFactory - added:
method GuessedPaths.getGitWorktreeDir(): string - added:
static method LoaderFactory.createLoader(ContainerBuilder $container, array $paths = …): DelegatingLoader
- changed:
method TaskConfigurator.__invoke(TaskInterface $task, TaskConfigInterface $config): TaskInterface → method TaskConfigurator.__invoke(TaskInterface $task, TaskConfigResolver $configResolver, string $taskName): TaskInterface
- added:
constructor DistFileLoader(LoaderInterface $loader) - added:
final class DistFileLoader implements LoaderInterface - added:
method DistFileLoader.getResolver(): LoaderResolverInterface - added:
method DistFileLoader.load(mixed $resource, ?string $type = …): mixed - added:
method DistFileLoader.setResolver(LoaderResolverInterface $resolver): void - added:
method DistFileLoader.supports(mixed $resource, ?string $type = …): bool
- changed:
method TaskConfigResolver.fetchByName(string $taskName): OptionsResolver → method TaskConfigResolver.fetchByName(string $taskName): ConfigOptionsResolver - changed:
method TaskConfigResolver.resolve(string $taskName, array $config): array → method TaskConfigResolver.resolve(string $taskName): TaskConfigInterface
- removed:
const ConfigureCommand.COMMAND_NAME - removed:
const RunCommand.COMMAND_NAME - removed:
static method ConfigureCommand.getDefaultName(): string - removed:
static method RunCommand.getDefaultName(): string - changed:
constructor RunCommand(TestSuiteCollection $testSuites, StdInFiles $stdInFileLocator, RegisteredFiles $registeredFilesLocator, TaskRunner $taskRunner) → constructor RunCommand(TestSuiteCollection $testSuites, StdInFiles $stdInFileLocator, RegisteredFiles $registeredFilesLocator, TaskRunner $taskRunner, IOInterface $io) - changed:
protected method ConfigureCommand.createQuestionString(string $question, string $default = …, string $separator = …): string → protected method ConfigureCommand.createQuestionString(string $question, ?string $default = …, string $separator = …): string
- removed:
const CommitMsgCommand.COMMAND_NAME - removed:
const DeInitCommand.COMMAND_NAME - removed:
const InitCommand.COMMAND_NAME - removed:
const PreCommitCommand.COMMAND_NAME - removed:
protected method DeInitCommand.configure(): void - removed:
protected method InitCommand.configure(): void - removed:
static method CommitMsgCommand.getDefaultName(): string - removed:
static method DeInitCommand.getDefaultName(): string - removed:
static method InitCommand.getDefaultName(): string - removed:
static method PreCommitCommand.getDefaultName(): string - changed:
constructor CommitMsgCommand(TestSuiteCollection $testSuites, StdInFiles $stdInFilesLocator, ChangedFiles $changedFilesLocator, TaskRunner $taskRunner, Filesystem $filesystem, Paths $paths) → constructor CommitMsgCommand(TestSuiteCollection $testSuites, StdInFiles $stdInFilesLocator, ChangedFiles $changedFilesLocator, TaskRunner $taskRunner, Filesystem $filesystem, Paths $paths, IOInterface $io) - changed:
constructor PreCommitCommand(TestSuiteCollection $testSuites, StdInFiles $stdInFilesLocator, ChangedFiles $changedFilesLocator, TaskRunner $taskRunner) → constructor PreCommitCommand(TestSuiteCollection $testSuites, StdInFiles $stdInFilesLocator, ChangedFiles $changedFilesLocator, TaskRunner $taskRunner, IOInterface $io) - changed:
protected method CommitMsgCommand.getCommittedFiles(ConsoleIO $io): FilesCollection → protected method CommitMsgCommand.getCommittedFiles(): FilesCollection - changed:
protected method PreCommitCommand.getCommittedFiles(ConsoleIO $io): FilesCollection → protected method PreCommitCommand.getCommittedFiles(): FilesCollection
- removed:
class Event extends SymfonyLegacyEvent
- changed:
method EventDispatcherInterface.dispatch(Event $event, string $name = …): void → method EventDispatcherInterface.dispatch(Event $event, ?string $name = …): void
- changed:
method SymfonyEventDispatcher.dispatch(Event $event, string $name = …): void → method SymfonyEventDispatcher.dispatch(Event $event, ?string $name = …): void
- removed:
class DeprecatedException extends RuntimeException - removed:
static method DeprecatedException.directParameterConfiguration(string $key): self - removed:
static method TaskConfigResolverException.deprectatedTask(string $taskName): self
- removed:
method ExtensionInterface.load(ContainerBuilder $container): void - added:
method ExtensionInterface.imports(): iterable
- changed:
constructor GitRepository(GitRepositoryLocator $repositoryLocator, array $repositoryOptions) → constructor GitRepository(GitRepositoryLocator $repositoryLocator, CliDriver $driver)
- added:
class GitHubActionsIO extends ConsoleIO - added:
class IOFactory - added:
constructor IOFactory(CiDetector $ciDetector) - added:
method ConsoleIO.endGroup(): void - added:
method ConsoleIO.startGroup(string $title): void - added:
method GitHubActionsIO.endGroup(): void - added:
method GitHubActionsIO.startGroup(string $title): void - added:
method IOFactory.create(InputInterface $input, OutputInterface $output): IOInterface - added:
method IOInterface.endGroup(): void - added:
method IOInterface.readCommandInput($handle): string - added:
method IOInterface.startGroup(string $title): void
- changed:
method GitRepositoryLocator.locate(array $options): Repository → method GitRepositoryLocator.locate(CliDriver $driver): Repository - added:
method GitRepositoryDirLocator.locateWorktreeGitDir(string $gitDir): string
- changed:
method TraverserConfigurator.registerStandardEnabledVisitor(string $alias, array $visitorOptions = …): void → method TraverserConfigurator.registerStandardEnabledVisitor(string $alias, ?array $visitorOptions = …): void
- changed:
method ProcessBuilder.createArgumentsForCommand(string $command, callable $pathManipulator = …): ProcessArgumentsCollection → method ProcessBuilder.createArgumentsForCommand(string $command, ?callable $pathManipulator = …): ProcessArgumentsCollection
- changed:
constructor TaskRunnerContext(ContextInterface $taskContext, TestSuiteInterface $testSuite = …, array $taskNames = …) → constructor TaskRunnerContext(ContextInterface $taskContext, ?TestSuiteInterface $testSuite = …, array $taskNames = …) - added:
final class StopOnFailure - added:
method FixableTaskResult.withContext(ContextInterface $context): static - added:
method StopOnFailure.cancellation(): Cancellation - added:
method StopOnFailure.decideForResult(TaskResultInterface $result): void - added:
method StopOnFailure.stop(): void - added:
method TaskResult.withContext(ContextInterface $context): static - added:
method TaskResultInterface.withContext(ContextInterface $context): static - added:
static method StopOnFailure.createFromConfig(RunnerConfig $config): self - added:
static method StopOnFailure.dummy(): self
- removed:
method PoolFactory.create(): Pool - added:
class SerializedClosureTask implements Task - added:
method PoolFactory.createShared(): WorkerPool - added:
method SerializedClosureTask.run(Channel $channel, Cancellation $cancellation): mixed - added:
static method SerializedClosureTask.fromClosure(\Closure $closure): self
- removed:
class MultiPromise - removed:
static method MultiPromise.cancelable(array $promises, callable $shouldCancel): Promise
- changed:
method TaskHandler.handle(TaskInterface $task, TaskRunnerContext $runnerContext): Promise → method TaskHandler.handle(TaskInterface $task, TaskRunnerContext $runnerContext, StopOnFailure $stopOnFailure): Future
- changed:
method ErrorHandlingTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, callable $next): Promise → method ErrorHandlingTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, StopOnFailure $stopOnFailure, callable $next): Future - changed:
method EventDispatchingTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, callable $next): Promise → method EventDispatchingTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, StopOnFailure $stopOnFailure, callable $next): Future - changed:
method MemoizedResultsTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, callable $next): Promise → method MemoizedResultsTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, StopOnFailure $stopOnFailure, callable $next): Future - changed:
method NonBlockingTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, callable $next): Promise → method NonBlockingTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, StopOnFailure $stopOnFailure, callable $next): Future - changed:
method ParallelProcessingMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, callable $next): Promise → method ParallelProcessingMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, StopOnFailure $stopOnFailure, callable $next): Future - changed:
method ReportingTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, callable $next): Promise → method ReportingTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, StopOnFailure $stopOnFailure, callable $next): Future - changed:
method TaskHandlerMiddlewareInterface.handle(TaskInterface $task, TaskRunnerContext $runnerContext, callable $next): Promise → method TaskHandlerMiddlewareInterface.handle(TaskInterface $task, TaskRunnerContext $runnerContext, StopOnFailure $stopOnFailure, callable $next): Future - added:
class StopOnFailureTaskHandlerMiddleware implements TaskHandlerMiddlewareInterface - added:
method StopOnFailureTaskHandlerMiddleware.handle(TaskInterface $task, TaskRunnerContext $runnerContext, StopOnFailure $stopOnFailure, callable $next): Future
- removed:
const PhpParser.KIND_PHP5 - removed:
const PhpParser.KIND_PHP7 - removed:
static method AbstractLinterTask.getConfigurableOptions(): OptionsResolver - removed:
static method AbstractParserTask.getConfigurableOptions(): OptionsResolver - changed:
static method Ant.getConfigurableOptions(): OptionsResolver → static method Ant.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Atoum.getConfigurableOptions(): OptionsResolver → static method Atoum.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Behat.getConfigurableOptions(): OptionsResolver → static method Behat.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Brunch.getConfigurableOptions(): OptionsResolver → static method Brunch.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method CloverCoverage.getConfigurableOptions(): OptionsResolver → static method CloverCoverage.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Codeception.getConfigurableOptions(): OptionsResolver → static method Codeception.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Composer.getConfigurableOptions(): OptionsResolver → static method Composer.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method ComposerNormalize.getConfigurableOptions(): OptionsResolver → static method ComposerNormalize.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method ComposerRequireChecker.getConfigurableOptions(): OptionsResolver → static method ComposerRequireChecker.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method ComposerScript.getConfigurableOptions(): OptionsResolver → static method ComposerScript.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Deptrac.getConfigurableOptions(): OptionsResolver → static method Deptrac.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method DoctrineOrm.getConfigurableOptions(): OptionsResolver → static method DoctrineOrm.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method ESLint.getConfigurableOptions(): OptionsResolver → static method ESLint.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Ecs.getConfigurableOptions(): OptionsResolver → static method Ecs.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method FileSize.getConfigurableOptions(): OptionsResolver → static method FileSize.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Gherkin.getConfigurableOptions(): OptionsResolver → static method Gherkin.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Grunt.getConfigurableOptions(): OptionsResolver → static method Grunt.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Gulp.getConfigurableOptions(): OptionsResolver → static method Gulp.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Infection.getConfigurableOptions(): OptionsResolver → static method Infection.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method JsonLint.getConfigurableOptions(): OptionsResolver → static method JsonLint.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Kahlan.getConfigurableOptions(): OptionsResolver → static method Kahlan.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Make.getConfigurableOptions(): OptionsResolver → static method Make.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method NpmScript.getConfigurableOptions(): OptionsResolver → static method NpmScript.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Paratest.getConfigurableOptions(): OptionsResolver → static method Paratest.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Pest.getConfigurableOptions(): OptionsResolver → static method Pest.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Phan.getConfigurableOptions(): OptionsResolver → static method Phan.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Phing.getConfigurableOptions(): OptionsResolver → static method Phing.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Php7cc.getConfigurableOptions(): OptionsResolver → static method Php7cc.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method PhpArkitect.getConfigurableOptions(): OptionsResolver → static method PhpArkitect.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method PhpCpd.getConfigurableOptions(): OptionsResolver → static method PhpCpd.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method PhpCsFixer.getConfigurableOptions(): OptionsResolver → static method PhpCsFixer.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method PhpLint.getConfigurableOptions(): OptionsResolver → static method PhpLint.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method PhpMd.getConfigurableOptions(): OptionsResolver → static method PhpMd.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method PhpMnd.getConfigurableOptions(): OptionsResolver → static method PhpMnd.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method PhpParser.getConfigurableOptions(): OptionsResolver → static method PhpParser.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method PhpStan.getConfigurableOptions(): OptionsResolver → static method PhpStan.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method PhpVersion.getConfigurableOptions(): OptionsResolver → static method PhpVersion.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Phpcs.getConfigurableOptions(): OptionsResolver → static method Phpcs.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Phpspec.getConfigurableOptions(): OptionsResolver → static method Phpspec.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Phpunit.getConfigurableOptions(): OptionsResolver → static method Phpunit.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method PhpunitBridge.getConfigurableOptions(): OptionsResolver → static method PhpunitBridge.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Progpilot.getConfigurableOptions(): OptionsResolver → static method Progpilot.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Psalm.getConfigurableOptions(): OptionsResolver → static method Psalm.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Rector.getConfigurableOptions(): OptionsResolver → static method Rector.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Robo.getConfigurableOptions(): OptionsResolver → static method Robo.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method SecurityChecker.getConfigurableOptions(): OptionsResolver → static method SecurityChecker.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method SecurityCheckerEnlightn.getConfigurableOptions(): OptionsResolver → static method SecurityCheckerEnlightn.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method SecurityCheckerLocal.getConfigurableOptions(): OptionsResolver → static method SecurityCheckerLocal.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method SecurityCheckerRoave.getConfigurableOptions(): OptionsResolver → static method SecurityCheckerRoave.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method SecurityCheckerSymfony.getConfigurableOptions(): OptionsResolver → static method SecurityCheckerSymfony.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Shell.getConfigurableOptions(): OptionsResolver → static method Shell.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Stylelint.getConfigurableOptions(): OptionsResolver → static method Stylelint.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method TaskInterface.getConfigurableOptions(): OptionsResolver → static method TaskInterface.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method Tester.getConfigurableOptions(): OptionsResolver → static method Tester.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method TwigCs.getConfigurableOptions(): OptionsResolver → static method TwigCs.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method XmlLint.getConfigurableOptions(): OptionsResolver → static method XmlLint.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method YamlLint.getConfigurableOptions(): OptionsResolver → static method YamlLint.getConfigurableOptions(): ConfigOptionsResolver - added:
class ComposerValidateAutoload extends AbstractExternalTask - added:
class MagoAnalyzer extends AbstractExternalTask - added:
class MagoFormatter extends AbstractExternalTask - added:
class MagoGuard extends AbstractExternalTask - added:
class MagoLinter extends AbstractExternalTask - added:
class PhpMd3 extends AbstractExternalTask - added:
class SecurityCheckerComposeraudit extends AbstractExternalTask - added:
class SymfonyConsole extends AbstractExternalTask - added:
class TwigCsFixer extends AbstractExternalTask - added:
method ComposerValidateAutoload.canRunInContext(ContextInterface $context): bool - added:
method ComposerValidateAutoload.run(ContextInterface $context): TaskResultInterface - added:
method MagoAnalyzer.canRunInContext(ContextInterface $context): bool - added:
method MagoAnalyzer.run(ContextInterface $context): TaskResultInterface - added:
method MagoFormatter.canRunInContext(ContextInterface $context): bool - added:
method MagoFormatter.run(ContextInterface $context): TaskResultInterface - added:
method MagoGuard.canRunInContext(ContextInterface $context): bool - added:
method MagoGuard.run(ContextInterface $context): TaskResultInterface - added:
method MagoLinter.canRunInContext(ContextInterface $context): bool - added:
method MagoLinter.run(ContextInterface $context): TaskResultInterface - added:
method PhpMd3.canRunInContext(ContextInterface $context): bool - added:
method PhpMd3.run(ContextInterface $context): TaskResultInterface - added:
method SecurityCheckerComposeraudit.canRunInContext(ContextInterface $context): bool - added:
method SecurityCheckerComposeraudit.run(ContextInterface $context): TaskResultInterface - added:
method SymfonyConsole.canRunInContext(ContextInterface $context): bool - added:
method SymfonyConsole.run(ContextInterface $context): TaskResultInterface - added:
method TwigCsFixer.canRunInContext(ContextInterface $context): bool - added:
method TwigCsFixer.run(ContextInterface $context): TaskResultInterface - added:
protected static method AbstractLinterTask.sharedOptionsResolver(): OptionsResolver - added:
protected static method AbstractParserTask.sharedOptionsResolver(): OptionsResolver - added:
static method ComposerValidateAutoload.getConfigurableOptions(): ConfigOptionsResolver - added:
static method MagoAnalyzer.getConfigurableOptions(): ConfigOptionsResolver - added:
static method MagoFormatter.getConfigurableOptions(): ConfigOptionsResolver - added:
static method MagoGuard.getConfigurableOptions(): ConfigOptionsResolver - added:
static method MagoLinter.getConfigurableOptions(): ConfigOptionsResolver - added:
static method PhpMd3.getConfigurableOptions(): ConfigOptionsResolver - added:
static method SecurityCheckerComposeraudit.getConfigurableOptions(): ConfigOptionsResolver - added:
static method SymfonyConsole.getConfigurableOptions(): ConfigOptionsResolver - added:
static method TwigCsFixer.getConfigurableOptions(): ConfigOptionsResolver
- removed:
class LazyTaskConfig implements TaskConfigInterface - removed:
constructor LazyTaskConfig(callable $configFactory) - removed:
method LazyTaskConfig.getMetadata(): Metadata - removed:
method LazyTaskConfig.getName(): string - removed:
method LazyTaskConfig.getOptions(): array - changed:
static method Metadata.getConfigurableOptions(): OptionsResolver → static method Metadata.getConfigurableOptions(): \GrumPHP\Task\Config\ConfigOptionsResolver - added:
final class ConfigOptionsResolver - added:
method ConfigOptionsResolver.resolve(array $data): array - added:
static method ConfigOptionsResolver.fromClosure(\Closure $closure): self - added:
static method ConfigOptionsResolver.fromOptionsResolver(OptionsResolver $optionsResolver): self
- changed:
static method Blacklist.getConfigurableOptions(): OptionsResolver → static method Blacklist.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method BranchName.getConfigurableOptions(): OptionsResolver → static method BranchName.getConfigurableOptions(): ConfigOptionsResolver - changed:
static method CommitMessage.getConfigurableOptions(): OptionsResolver → static method CommitMessage.getConfigurableOptions(): ConfigOptionsResolver - added:
const CommitMessage.MERGE_COMMIT_REGEX
- added:
method Paths.getGitWorktreeDir(): string