Skip to content

GsTYPO3/core-patches

Repository files navigation

TYPO3 Core Patches

Packagist Version Packagist PHP Version Support Packagist Dependency Version Packagist Downloads GitHub issues GitHub forks GitHub stars GitHub license GitHub build Coveralls Contributor Covenant

This package let you easily manage TYPO3 Core patches with Composer based on cweagans/composer-patches which is a dependency of this package and requires to be installed as non-dev dependency for production usage.

Table of contents:

Installation

This package requires Composer 2.0 or higher.

Require this package as normal dependency:

composer require gilbertsoft/typo3-core-patches

If the package is installed as dev requirement, the patches won't get applied using the install option --no-dev as long as you don't require cweagans/composer-patches as normal dependency.

For Composer 2.2 and later, plug-ins must be explicitly allowed using the following command:

composer config --no-plugins allow-plugins.gilbertsoft/typo3-core-patches true
composer config --no-plugins allow-plugins.gilbertsoft/cweagans/composer-patches true

Prerelease

To install a prerelease, run the following command using one of the stability flags dev, alpha, beta or RC:

composer require gilbertsoft/typo3-core-patches:@<stability>

E.g. this would allow Composer to install beta, RC and stable releases:

composer require gilbertsoft/typo3-core-patches:@beta

Usage

Adding a change

Lookup the change ID at https://forge.typo3.org or https://review.typo3.org and provide it as argument or multiple arguments for multiple changes at once:

composer typo3:patch:apply 12345
composer typo3:patch:apply 12345 23456 34567

This plugin will then properly create patch files for the change and save it to the patch directory which defaults to patches. The patch directory can be changed by the option --patch-dir or with the shortcut -p:

composer typo3:patch:apply --patch-dir:path/to/folder 12345
composer typo3:patch:apply -ppath/to/folder 12345

By default changes in tests are exluded. If you also like to include these changes, provide the option --tests or the shortcut -t. This will result in installing the sources instead of the dist packages for the affected packages.

composer typo3:patch:apply --tests 12345
composer typo3:patch:apply -t 12345

Updating a change

To update the applied patches to the last patch sets from Gerrit just run the following command, which will update all patches:

composer typo3:patch:update

It is also possible to just update some single patches by providing the change ID as argument or multiple arguments for multiple changes to update at once:

composer typo3:patch:update 12345
composer typo3:patch:update 12345 23456 34567

Removing a change

Provide the change ID to remove as argument or multiple arguments for multiple changes to remove at once:

composer typo3:patch:remove 12345
composer typo3:patch:remove 12345 23456 34567

Supported change ID formats

This plugin supports various change-id formats, as described in https://review.typo3.org/Documentation/rest-api-changes.html#change-id.

Additionally, you can also specify the full URL for the change, as shown in the next example:

composer typo3:patch:apply https://review.typo3.org/c/Packages/TYPO3.CMS/+/12345

Configuration

Branch verification

The plugin compares the current installed core version with the target branch of the patch to install and if different, asks for confirmation to anyway try to apply the patch to the different version.

To disabled the branch check for this project, run:

composer config extra.gilbertsoft/typo3-core-patches.ignore-branch true

Outdated patch detection

When running composer update or composer install, the plugin detects changes that already exist in the version being installed and suggests removing the related patches. If you run Composer with the --no-interaction option, the patches are always preserved. This can be changed by the config force-tidy-patches see bellow.

Errors may occur if you use the source-dist of packages, which can be solved by adding the config.discard-changes configuration option to your composer.json, see https://getcomposer.org/doc/06-config.md#discard-changes. Run e.g. composer config discard-changes true to add the configuration to your composer.json.

If a CI environment is detected, the detection of merged changes is skipped by default. To change this behavior and enable the detection again, run:

composer config extra.gilbertsoft/typo3-core-patches.force-tidy-patches true

To disable the detection of merged changes completely, run:

composer config extra.gilbertsoft/typo3-core-patches.disable-tidy-patches true

CI detection

The plugin tries to detect CI environments and changes its default behavior while running in a CI pipeline. It's possible to override the detection by setting an environment variable:

  • Set GS_CI=1 to force CI mode
  • Set GS_CI=0 to disable CI mode

Feedback / Bug reports / Contribution

Bug reports, feature requests, pull requests, and any other kind of feedback are welcome in the GitHub repository.

For support questions or other discussions please use the GitHub Discussions or join the dedicated TYPO3 Slack channel.

License

This package is licensed under the MIT License.