Switch from Drupal to Drupal Composer Managed Upstream
Switch to the new Pantheon upstream to take advantage of the new structure and future updates.
In this guide, we will convert an existing site from the Drupal (drupal9
) upstream to the new Drupal Composer Managed (drupal-composer-managed
) upstream.
Overview
Drupal sites created on the platform prior to November 30, 2021 use the latest Drupal upstream. Drupal sites created on the platform prior to May 4, 2021 use the Drupal Recommended upstream.
Based on community needs, we have released a new upstream. Drupal Composer Managed is now the default Drupal upstream on the platform and users are encouraged to switch to it to take advantage of the improved structure and updates.
The goals of this conversion doc include the following:
- Configure the site to use the new upstream.
- Apply the upstream changes.
- Resolve any merge conflicts that might arise during the conversion process.
Will This Guide Work for Your Site?
You must confirm that your site meets the following requirement before you continue:
- Ensure your site uses the Drupal Project or Drupal Recommended upstream.
Use Terminus to Confirm the Drupal Upstream
Run the command terminus site:info $SITE
to display the site's basic information and properties.
The following values indicate that a site is using a drupal9
upstream:
The
Framework
isdrupal8
The
Upstream
includeshttps://github.com/pantheon-upstreams/drupal-project
orhttps://github.com/pantheon-upstreams/drupal-recommended
The following is an abridged example of the output for the
terminus site:info $SITE
command, if the site upstream is set todrupal9
:terminus site:info $SITE ------------------ ------------------------------------------------------------------------------------- ID abdc3ea1-fe0b-1234-9c9f-3cxeAA123f88 Name anita-drupal Label AnitaDrupal Created 2019-12-02 18:28:14 Framework drupal8 ... Upstream e96c6794-77fe-4931-9a20-48a2fe1a3789: https://github.com/pantheon-upstreams/drupal-project ... ------------------ -------------------------------------------------------------------------------------
If you have access to Multidev, you could also do this process in an automated way via Terminus using the Conversion Tools plugin command conversion:update-from-deprecated-upstream
and following instructions after running that command.
Prepare the Local Environment
Review our documentation on Git, Composer, and Terminus, and install and configure them on your local computer. Pantheon requires Composer 2 at minimum.
Mac users can use Homebrew to install Git, Composer, and PHP, along with their required dependencies. Note: Terminus 3 should be used for PHP >= 8.0. Restart the shell or terminal environment after entering the following command:
brew install git composer php
Windows users can install Composer and Git, and may need to install XAMPP or similar to satisfy some dependencies.
Set the temporary variable
$SITE
in your terminal session to match the name of your site.This doc uses several commands that use the temporary command line alias,
$SITE
, to make entering command examples easier. Refer to the steps further in this doc to see which sites should be aliased (it may be more than one), then replaceanita-drupal
in this example:export SITE=anita-drupal && echo "New alias set as $SITE"
How to Use Terminus to Find the Site Name
Use
terminus site:list
for a list of sites you have access to:terminus site:list --------------------------- --------------------- ------------- ----------------------------------- -------------------- --------------------- ------------- ------------ Name ID Plan Framework Region Owner Created Memberships Is Frozen? --------------------------- --------------------- ------------- ------------------- ---------------- -------------------- --------------------- ------------- ------------ anita-drupal abdc80ce-286c-1234- Sandbox drupal8 Canada 3374708c-987e-1234 2020-12-15 19:40:42 d3ecc20c-395a falseanita-wordpres abdc9954-fab2-1234- Sandbox wordpress United States c96ddb25-336a-1234 2020-09-02 07:18:51 d3ecc20c-395a false
The site name is listed under
Name
. In this example, the site name isanita-drupal
.Create a new folder to use while working on the migration. This folder will contain two subdirectories that you'll create in the next sections, one for the site on the former platform, and one for the Pantheon site.
Apply All Available Upstream Updates
Use Terminus to list all available updates:
terminus upstream:updates:list $SITE.dev [warning] There are no available updates for this site.
Apply any available updates using the command line or the Pantheon Dashboard:
terminus upstream:updates:apply $SITE.dev --updatedb
Switch to Drupal with Composer Upstream
Change the upstream that your site is tracking with the following command:
terminus site:upstream:set $SITE drupal-composer-managed
Follow the drupal-composer-managed
upstream to keep your site current with any general configuration changes recommended by Pantheon.
Apply New Upstream Updates
After you complete the upstream change, you need to apply the available upstream updates. Use the Pantheon Dashboard in the Dev environment to apply updates. If this is not successful, continue to the next section for help resolving with merge conflicts.
Solving Merge Conflicts When Applying Upstream Updates
Conflicts can occur when a modified file in your site's codebase does not align with changes made to the same file in the site's upstream.
If you receive an error that you have conflicts while updating upstream files, resolve using the -Xtheirs
flag. This will automatically resolve the conflict with a preference for upstream changes. Alternatively, you can choose to manually resolve conflicts to fix this issue.
This is safe to run if you don't have your own changes in any of the conflicting files, such as problems with .gitignore
.
git pull -Xtheirs https://github.com/pantheon-upstreams/drupal-composer-managed.git main
# resolve conflicts
git push origin master
Check that the files are correct before going forward to ensure no bugs are introduced.
You will be in the Drupal with Composer upstream after you apply the upstream updates.