:doc:`CodeCommit <../../codecommit>` / Client / merge_branches_by_three_way

***************************
merge_branches_by_three_way
***************************



.. py:method:: CodeCommit.Client.merge_branches_by_three_way(**kwargs)

  

  Merges two specified branches using the three-way merge strategy.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/codecommit-2015-04-13/MergeBranchesByThreeWay>`_  


  **Request Syntax**
  ::

    response = client.merge_branches_by_three_way(
        repositoryName='string',
        sourceCommitSpecifier='string',
        destinationCommitSpecifier='string',
        targetBranch='string',
        conflictDetailLevel='FILE_LEVEL'|'LINE_LEVEL',
        conflictResolutionStrategy='NONE'|'ACCEPT_SOURCE'|'ACCEPT_DESTINATION'|'AUTOMERGE',
        authorName='string',
        email='string',
        commitMessage='string',
        keepEmptyFolders=True|False,
        conflictResolution={
            'replaceContents': [
                {
                    'filePath': 'string',
                    'replacementType': 'KEEP_BASE'|'KEEP_SOURCE'|'KEEP_DESTINATION'|'USE_NEW_CONTENT',
                    'content': b'bytes',
                    'fileMode': 'EXECUTABLE'|'NORMAL'|'SYMLINK'
                },
            ],
            'deleteFiles': [
                {
                    'filePath': 'string'
                },
            ],
            'setFileModes': [
                {
                    'filePath': 'string',
                    'fileMode': 'EXECUTABLE'|'NORMAL'|'SYMLINK'
                },
            ]
        }
    )
    
  :type repositoryName: string
  :param repositoryName: **[REQUIRED]** 

    The name of the repository where you want to merge two branches.

    

  
  :type sourceCommitSpecifier: string
  :param sourceCommitSpecifier: **[REQUIRED]** 

    The branch, tag, HEAD, or other fully qualified reference used to identify a commit (for example, a branch name or a full commit ID).

    

  
  :type destinationCommitSpecifier: string
  :param destinationCommitSpecifier: **[REQUIRED]** 

    The branch, tag, HEAD, or other fully qualified reference used to identify a commit (for example, a branch name or a full commit ID).

    

  
  :type targetBranch: string
  :param targetBranch: 

    The branch where the merge is applied.

    

  
  :type conflictDetailLevel: string
  :param conflictDetailLevel: 

    The level of conflict detail to use. If unspecified, the default FILE_LEVEL is used, which returns a not-mergeable result if the same file has differences in both branches. If LINE_LEVEL is specified, a conflict is considered not mergeable if the same file in both branches has differences on the same line.

    

  
  :type conflictResolutionStrategy: string
  :param conflictResolutionStrategy: 

    Specifies which branch to use when resolving conflicts, or whether to attempt automatically merging two versions of a file. The default is NONE, which requires any conflicts to be resolved manually before the merge operation is successful.

    

  
  :type authorName: string
  :param authorName: 

    The name of the author who created the commit. This information is used as both the author and committer for the commit.

    

  
  :type email: string
  :param email: 

    The email address of the person merging the branches. This information is used in the commit information for the merge.

    

  
  :type commitMessage: string
  :param commitMessage: 

    The commit message to include in the commit information for the merge.

    

  
  :type keepEmptyFolders: boolean
  :param keepEmptyFolders: 

    If the commit contains deletions, whether to keep a folder or folder structure if the changes leave the folders empty. If true, a .gitkeep file is created for empty folders. The default is false.

    

  
  :type conflictResolution: dict
  :param conflictResolution: 

    If AUTOMERGE is the conflict resolution strategy, a list of inputs to use when resolving conflicts during a merge.

    

  
    - **replaceContents** *(list) --* 

      Files to have content replaced as part of the merge conflict resolution.

      

    
      - *(dict) --* 

        Information about a replacement content entry in the conflict of a merge or pull request operation.

        

      
        - **filePath** *(string) --* **[REQUIRED]** 

          The path of the conflicting file.

          

        
        - **replacementType** *(string) --* **[REQUIRED]** 

          The replacement type to use when determining how to resolve the conflict.

          

        
        - **content** *(bytes) --* 

          The base-64 encoded content to use when the replacement type is USE_NEW_CONTENT.

          

        
        - **fileMode** *(string) --* 

          The file mode to apply during conflict resoltion.

          

        
      
  
    - **deleteFiles** *(list) --* 

      Files to be deleted as part of the merge conflict resolution.

      

    
      - *(dict) --* 

        A file that is deleted as part of a commit.

        

      
        - **filePath** *(string) --* **[REQUIRED]** 

          The full path of the file to be deleted, including the name of the file.

          

        
      
  
    - **setFileModes** *(list) --* 

      File modes that are set as part of the merge conflict resolution.

      

    
      - *(dict) --* 

        Information about the file mode changes.

        

      
        - **filePath** *(string) --* **[REQUIRED]** 

          The full path to the file, including the name of the file.

          

        
        - **fileMode** *(string) --* **[REQUIRED]** 

          The file mode for the file.

          

        
      
  
  
  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'commitId': 'string',
          'treeId': 'string'
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **commitId** *(string) --* 

        The commit ID of the merge in the destination or target branch.

        
      

      - **treeId** *(string) --* 

        The tree ID of the merge in the destination or target branch.

        
  
  **Exceptions**
  
  *   :py:class:`CodeCommit.Client.exceptions.RepositoryNameRequiredException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidRepositoryNameException`

  
  *   :py:class:`CodeCommit.Client.exceptions.RepositoryDoesNotExistException`

  
  *   :py:class:`CodeCommit.Client.exceptions.TipsDivergenceExceededException`

  
  *   :py:class:`CodeCommit.Client.exceptions.CommitRequiredException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidCommitException`

  
  *   :py:class:`CodeCommit.Client.exceptions.CommitDoesNotExistException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidTargetBranchException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidBranchNameException`

  
  *   :py:class:`CodeCommit.Client.exceptions.BranchNameRequiredException`

  
  *   :py:class:`CodeCommit.Client.exceptions.BranchNameIsTagNameException`

  
  *   :py:class:`CodeCommit.Client.exceptions.BranchDoesNotExistException`

  
  *   :py:class:`CodeCommit.Client.exceptions.ManualMergeRequiredException`

  
  *   :py:class:`CodeCommit.Client.exceptions.ConcurrentReferenceUpdateException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidConflictDetailLevelException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidConflictResolutionStrategyException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidConflictResolutionException`

  
  *   :py:class:`CodeCommit.Client.exceptions.MaximumConflictResolutionEntriesExceededException`

  
  *   :py:class:`CodeCommit.Client.exceptions.MultipleConflictResolutionEntriesException`

  
  *   :py:class:`CodeCommit.Client.exceptions.ReplacementTypeRequiredException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidReplacementTypeException`

  
  *   :py:class:`CodeCommit.Client.exceptions.ReplacementContentRequiredException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidReplacementContentException`

  
  *   :py:class:`CodeCommit.Client.exceptions.PathRequiredException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidPathException`

  
  *   :py:class:`CodeCommit.Client.exceptions.FileContentSizeLimitExceededException`

  
  *   :py:class:`CodeCommit.Client.exceptions.FolderContentSizeLimitExceededException`

  
  *   :py:class:`CodeCommit.Client.exceptions.MaximumFileContentToLoadExceededException`

  
  *   :py:class:`CodeCommit.Client.exceptions.MaximumItemsToCompareExceededException`

  
  *   :py:class:`CodeCommit.Client.exceptions.FileModeRequiredException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidFileModeException`

  
  *   :py:class:`CodeCommit.Client.exceptions.NameLengthExceededException`

  
  *   :py:class:`CodeCommit.Client.exceptions.InvalidEmailException`

  
  *   :py:class:`CodeCommit.Client.exceptions.CommitMessageLengthExceededException`

  
  *   :py:class:`CodeCommit.Client.exceptions.EncryptionIntegrityChecksFailedException`

  
  *   :py:class:`CodeCommit.Client.exceptions.EncryptionKeyAccessDeniedException`

  
  *   :py:class:`CodeCommit.Client.exceptions.EncryptionKeyDisabledException`

  
  *   :py:class:`CodeCommit.Client.exceptions.EncryptionKeyNotFoundException`

  
  *   :py:class:`CodeCommit.Client.exceptions.EncryptionKeyUnavailableException`

  