Conflict Resolution in Multi-Cloud

Updated 1 week ago by Copado Solutions

Introduction

When multiple developers are contributing to the same project, merge conflicts are likely to arise. 

Copado has different approaches to resolving Git conflicts and offers the ability to automatically resolve conflicts without manual intervention or enable you to resolve a conflict manually. The automatic resolution of conflicts can be helpful for files that are not programming languages, such as Salesforce metadata or Vlocity components. However, you may want to review conflicts in other types of files manually.

Additionally, if you want to resolve conflicts for a particular metadata type or component manually, Copado allows you, in certain scenarios, to exclude these metadata types from being auto-resolved, and will prompt you to manually resolve conflicts every time an issue is found in those metadata types.

Conflict Resolution Strategy in Multi-Cloud

The default conflict resolution strategy Copado applies in multi-cloud pipelines is an override of the conflicting files. Hence, whatever is carried in the promotion prevails over what is available in the destination environment.

If you don’t want Copado to apply this conflict resolution strategy and want to always resolve conflicts manually, you need to edit the Function step in the promote and deploy job templates and leave the merge_strategy parameter blank:

Merge_strategy parameter in Function step

If you leave this parameter blank, the Function step fails, and you need to manually review the conflicts and merge the feature branches in the Git repository.

Exclude from Auto-Resolve

As mentioned in the introduction, Copado offers you the option to decide for which metadata types conflicts should be manually resolved. This option is currently available in the DX solution only and will become available in other solutions in the future.

Let’s see how you can configure this functionality.

  1. Create a file with the name .copado_exclude_autoresolve and add it to your Git repository.
  2. Include one of the options below depending on what you want to exclude from auto-resolve:

Line

Exclusion

**

Completely disable the auto-resolve functionality.

**/.cls

Exclude all Apex class files.

module1/classes/

Exclude all files in the ApexClass directory (Apex classes and their associated metadata).

**/classes/

Exclude all files in the ApexClass directory (Apex classes and their associated metadata) in every submodule.

**/copado__*/**

Exclude all the metadata in an unlocked package.

staticresources/SourceCode/**

Exclude unzipped static resources with subdirectories.


How did we do?