uuid: - value: 862ba3ee-9c27-40e6-9e86-a5ce4c1bae67 langcode: - value: en type: - target_id: daily_email target_type: node_type target_uuid: 8bde1f2f-eef9-4f2d-ae9c-96921f8193d7 revision_timestamp: - value: '2025-05-11T09:00:14+00:00' revision_uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 revision_log: { } status: - value: true uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 title: - value: "Don't cherry-pick features from a branch to deploy" created: - value: '2024-04-26T00:00:00+00:00' changed: - value: '2025-05-11T09:00:14+00:00' promote: - value: false sticky: - value: false default_langcode: - value: true revision_translation_affected: - value: true path: - alias: /daily/2024/04/26/don-t-cherry-pick-features-from-a-branch-to-deploy langcode: en body: - value: |
I previously worked on a project where, after a code change had been reviewed and merged, it was pushed to a UAT environment for the client to test.
This usually resulted in a group of changes pushed to the UAT environment, waiting for the client to test them.
They would, and then decide which changes they wanted to be moved to production.
Maybe changes 1, 2 and 4 would be asked to be deployed, but not 3 or 5.
Someone would then cherry pick the relevant commits onto the mainline branch and deploy them to production.
But, if the code isn't the same as on that UAT environment, how do you know it still works?
Could a commit have been missed or could not including a non-selected commit have caused a regression or unintended side effects?
git cherry-pick
isn't a command I use often, and definitely not in this scenario.
If you want to select which changes go live, feature flags are a better option as you don't need to change the commits or code you're pushing.
You push all the commits from UAT to production and enable the feature flags for the things you want to release.
format: full_html processed: |I previously worked on a project where, after a code change had been reviewed and merged, it was pushed to a UAT environment for the client to test.
This usually resulted in a group of changes pushed to the UAT environment, waiting for the client to test them.
They would, and then decide which changes they wanted to be moved to production.
Maybe changes 1, 2 and 4 would be asked to be deployed, but not 3 or 5.
Someone would then cherry pick the relevant commits onto the mainline branch and deploy them to production.
But, if the code isn't the same as on that UAT environment, how do you know it still works?
Could a commit have been missed or could not including a non-selected commit have caused a regression or unintended side effects?
git cherry-pick
isn't a command I use often, and definitely not in this scenario.
If you want to select which changes go live, feature flags are a better option as you don't need to change the commits or code you're pushing.
You push all the commits from UAT to production and enable the feature flags for the things you want to release.
summary: null field_daily_email_cta: { }