Mesclar uma solicitação pull em um repositório do AWS CodeCommit - AWS CodeCommit

AWS CodeCommit não está mais disponível para novos clientes. Os clientes atuais do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Mesclar uma solicitação pull em um repositório do AWS CodeCommit

Depois que seu código for revisado e todas as regras de aprovação (se houver) na solicitação pull forem atendidas, será possível mesclar uma solicitação pull de várias maneiras:

  • É possível usar o console para mesclar a ramificação de origem com a ramificação de destino usando uma das estratégias de mesclagem disponíveis, que também fecha a solicitação pull. Também é possível resolver conflitos de mesclagem no console. O console exibe uma mensagem que indica se a solicitação pull pode ser mesclada ou se os conflitos devem ser resolvidos. Quando todos os conflitos forem resolvidos e você escolher Merge (Mesclar), a mesclagem será realizada usando a estratégia de mesclagem escolhida. Avanço rápido é a estratégia de mesclagem padrão, que é a opção padrão para o Git. Dependendo do estado do código nas ramificações de origem e de destino, essa estratégia pode não estar disponível, mas outras opções podem estar, como de compressão ou três vias.

  • É possível usar a AWS CLI para tentar mesclar e fechar a solicitação pull usando a estratégia de mesclagem de avanço rápido, compressão ou três vias.

  • No seu computador local, você pode usar o comando git merge para mesclar a ramificação de origem na ramificação de destino e, em seguida, envie seu código mesclado por push para a ramificação de destino. Essa abordagem tem desvantagens que devem ser consideradas cuidadosamente. Ela mescla a solicitação pull independentemente de os requisitos para regras de aprovação na solicitação pull serem atendidos, contornando esses controles. Mesclar e enviar a ramificação de destino também fechará a solicitação pull automaticamente se a solicitação pull for mesclada usando a estratégia de mesclagem de avanço rápido. Uma vantagem dessa abordagem é que o comando git merge permite escolher opções ou estratégias de mesclagem que não estão disponíveis no console do CodeCommit. Para obter mais informações sobre opções de mesclagem e git merge, consulte git-merge ou a documentação do Git.

O CodeCommit fechará uma solicitação pull automaticamente se a ramificação de origem ou a ramificação de destino da solicitação pull for excluída.

Mesclar uma solicitação pull (console)

Você pode usar o console do CodeCommit para mesclar uma solicitação pull em um repositório do CodeCommit. Depois que o status de uma solicitação pull for alterado para Merged (Mesclada), ela não será mais exibida na lista de solicitações pull abertas. Uma solicitação pull mesclada é categorizada como fechada. Ela não pode ser alterada novamente para Open (Aberta), mas os usuários ainda podem comentar sobre as alterações e responder aos comentários. Depois que uma solicitação pull for mesclada ou fechada, não será possível aprová-la, revogá-la ou substituir as regras de aprovação aplicadas à solicitação pull.

  1. Abra o console do CodeCommit em https://console.aws.amazon.com/codesuite/codecommit/home.

  2. Em Repositories (Repositórios), escolha o nome do repositório.

  3. No painel de navegação, escolha Pull Requests (Solicitações pull).

  4. Por padrão, é exibida uma lista de todas as solicitações de extração abertas. Escolha a solicitação pull aberta que você deseja mesclar.

  5. Na solicitação pull, escolha Approvals (Aprovações). Revise a lista de aprovadores e verifique se todas as regras de aprovação (se houver) tiveram suas condições atendidas. Você não poderá mesclar uma solicitação pull se uma ou mais regras de aprovação tiverem o status Rule not satisfied (Regra não satisfeita). Se ninguém tiver aprovado a solicitação pull, avalie se deseja mesclá-la ou aguardar aprovações.

    nota

    Se uma regra de aprovação tiver sido criada para uma solicitação pull, você poderá editá-la ou excluí-la para desbloquear a mesclagem. Se a regra de aprovação tiver sido criada com um modelo de regra de aprovação, você não poderá editá-la nem excluí-la. É possível optar somente por substituir os requisitos. Para obter mais informações, consulte Substituir regras de aprovação em uma solicitação pull.

    Uma solicitação pull mostrando uma regra de aprovação cujas condições não foram atendidas e uma lista vazia de aprovadores.
  6. Escolha Merge (Mesclar).

  7. Na solicitação pull, escolha entre as estratégias de mesclagem disponíveis. As estratégias de mesclagem que não puderem ser aplicadas serão exibidas esmaecidas. Se não houver estratégias de mesclagem disponíveis, você pode optar por resolver conflitos manualmente no console do CodeCommit ou resolvê-los localmente usando o cliente Git. Para obter mais informações, consulte Resolver conflitos em uma solicitação pull em um repositório do AWS CodeCommit.

    Uma solicitação pull mostrando as estratégias de mesclagem disponíveis para a mesclagem no console do CodeCommit.
    • A mesclagem de avanço rápido move a referência da ramificação de destino para a confirmação mais recente da ramificação de origem. Esse é o comportamento padrão do Git sempre que possível. Nenhuma confirmação de mesclagem é criada, mas todo o histórico de confirmações na ramificação de origem é retido como se tivesse ocorrido na ramificação de destino. As mesclagens de avanço rápido não são exibidas como uma mesclagem de ramificação na exibição do visualizador de confirmações do histórico da ramificação de destino porque nenhuma confirmação de mesclagem foi criada. A ponta da ramificação de origem é avançada rapidamente para a ponta da ramificação de destino.

    • Uma mesclagem de compressão cria uma confirmação que contém as alterações na ramificação de origem e aplica essa única confirmação de compressão à ramificação de destino. Por padrão, a mensagem de confirmação para essa confirmação de compressão contém todas as mensagens de confirmação das alterações na ramificação de origem. Nenhuma alteração no histórico de confirmações individuais da ramificação é retida. Isso pode ajudar a simplificar o histórico do repositório e, ao mesmo tempo, manter uma representação gráfica da mesclagem na exibição do visualizador de confirmação do histórico da ramificação de destino.

    • Uma mesclagem de três vias cria uma confirmação de mesclagem para a mesclagem na ramificação de destino, mas também retém confirmações individuais feitas na ramificação de origem como parte do histórico da ramificação de destino. Isso pode ajudar a manter um histórico completo das alterações em seu repositório.

  8. Se você escolher a estratégia de mesclagem de compressão ou três vias, revise a mensagem de confirmação gerada automaticamente e modifique-a se deseja alterar as informações. Adicione seu nome e endereço de e-mail para o histórico de confirmações.

  9. (Opcional) Desmarque a opção para excluir a ramificação de origem como parte da mesclagem. O padrão é excluir a ramificação de origem quando uma solicitação pull é mesclada.

  10. Selecione Merge pull request (Mesclar solicitação pull) para concluir a mesclagem.

Mesclar uma solicitação pull (AWS CLI)

Para usar comandos da AWS CLI com o CodeCommit, instale a AWS CLI. Para obter mais informações, consulte Referência da linha de comando.

Para usar a AWS CLI para mesclar solicitações pull em um repositório do CodeCommit

  1. Para avaliar se uma solicitação pull teve todas as regras de aprovação satisfeitas e está pronta para ser mesclada, execute o comando evaluate-pull-request-approval-rules, especificando:

    • O ID da solicitação pull (usando a opção --pull-request-id).

    • O ID de revisão da solicitação pull (usando a --revision-id option). É possível obter o ID de revisão atual para uma solicitação pull usando o comando get-pull-request.

    Por exemplo, para avaliar o estado das regras de aprovação em uma solicitação pull com um ID 27 e um ID de revisão 9f29d167EXAMPLE:

    aws codecommit evaluate-pull-request-approval-rules --pull-request-id 27 --revision-id 9f29d167EXAMPLE

    Se houver êxito, o comando gerará uma saída semelhante à seguinte:

    { "evaluation": { "approved": false, "approvalRulesNotSatisfied": [ "Require two approved approvers" ], "overridden": false, "approvalRulesSatisfied": [] } }
    nota

    Essa saída indica que uma solicitação pull não pode ser mesclada porque os requisitos de uma regra de aprovação não foram atendidos. Para mesclar essa solicitação pull, é possível fazer com que os revisores a aprovem para atender às condições da regra. Dependendo de suas permissões e de como a regra foi criada, também será possível editar, substituir ou excluir a regra. Para obter mais informações, consulte Revisar uma solicitação pull, Substituir regras de aprovação em uma solicitação pull e Editar ou excluir uma regra de aprovação de uma solicitação pull.

  2. Para mesclar e fechar uma solicitação pull usando a estratégia de mesclagem de avanço rápido, execute o comando merge-pull-request-by-fast-forward, especificando:

    • O ID da solicitação pull (com a opção --pull-request-id).

    • O ID de confirmação completo da extremidade da ramificação de origem (com a opção --source-commit-id).

    • O nome do repositório (com a opção --repository-name).

    Por exemplo, para mesclar e fechar uma solicitação pull com a ID 47 e uma ID de confirmação de origem 99132ab0EXAMPLE em um repositório denominado MyDemoRepo:

    aws codecommit merge-pull-request-by-fast-forward --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo

    Se houver êxito, o comando gerará uma saída semelhante à seguinte:

    { "pullRequest": { "approvalRules": [ { "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 1,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "approvalRuleId": "dd8b17fe-EXAMPLE", "approvalRuleName": "I want one approver for this pull request", "creationDate": 1571356106.936, "lastModifiedDate": 571356106.936, "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major", "ruleContentSha256": "4711b576EXAMPLE" } ], "authorArn": "arn:aws:iam::123456789012:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.142, "description": "Review the latest changes and updates to the global variables", "lastActivityDate": 1508887223.155, "pullRequestId": "47", "pullRequestStatus": "CLOSED", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE", "destinationReference": "refs/heads/main", "mergeMetadata": { "isMerged": true, "mergedBy": "arn:aws:iam::123456789012:user/Mary_Major" }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables" } }
  3. Para mesclar e fechar uma solicitação pull usando a estratégia de mesclagem de compressão, execute o comando merge-pull-request-by-squash, especificando:

    • O ID da solicitação pull (com a opção --pull-request-id).

    • O ID de confirmação completo da extremidade da ramificação de origem (com a opção --source-commit-id).

    • O nome do repositório (com a opção --repository-name).

    • O nível de detalhes de conflitos que você deseja usar (com a opção --conflict-detail-level). Se não especificado, o FILE_LEVEL padrão será usado.

    • A estratégia de resolução de conflitos que você deseja usar (com a opção --conflict-resolution-strategy). Se não especificado, isso define NONE como padrão, e os conflitos devem ser resolvidos manualmente.

    • A mensagem de confirmação a ser incluída (com a opção --commit-message).

    • O nome a ser usado para a confirmação (com a opção --author-name).

    • O endereço de e-mail a ser usado para a confirmação (com a opção --email).

    • Opção de manter pastas vazias (com a opção --keep-empty-folders).

    O exemplo a seguir mescla e fecha uma solicitação pull com o ID 47 e um ID de confirmação de origem 99132ab0EXAMPLE em um repositório denominado MyDemoRepo. Ele usa os detalhes de conflitos LINE_LEVEL e a estratégia de resolução de conflitos ACCEPT_SOURCE:

    aws codecommit merge-pull-request-by-squash --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo --conflict-detail-level LINE_LEVEL --conflict-resolution-strategy ACCEPT_SOURCE --author-name "Jorge Souza" --email "jorge_souza@example.com" --commit-message "Merging pull request 47 by squash and accepting source in merge conflicts"

    Se bem-sucedido, esse comando produz o mesmo tipo de saída que a mesclagem por avanço rápido, uma saída semelhante à seguinte:

    { "pullRequest": { "approvalRules": [ { "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "approvalRuleId": "dd8b17fe-EXAMPLE", "approvalRuleName": "2-approver-rule-for-main", "creationDate": 1571356106.936, "lastModifiedDate": 571356106.936, "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major", "originApprovalRuleTemplate": { "approvalRuleTemplateId": "dd8b17fe-EXAMPLE", "approvalRuleTemplateName": "2-approver-rule-for-main" }, "ruleContentSha256": "4711b576EXAMPLE" } ], "authorArn": "arn:aws:iam::123456789012:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.142, "description": "Review the latest changes and updates to the global variables", "lastActivityDate": 1508887223.155, "pullRequestId": "47", "pullRequestStatus": "CLOSED", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE", "destinationReference": "refs/heads/main", "mergeMetadata": { "isMerged": true, "mergedBy": "arn:aws:iam::123456789012:user/Mary_Major" }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables" } }
  4. Para mesclar e fechar uma solicitação pull usando a estratégia de mesclagem de três vias, execute o comando merge-pull-request-by-three-way, especificando:

    • O ID da solicitação pull (com a opção --pull-request-id).

    • O ID de confirmação completo da extremidade da ramificação de origem (com a opção --source-commit-id).

    • O nome do repositório (com a opção --repository-name).

    • O nível de detalhes de conflitos que você deseja usar (com a opção --conflict-detail-level). Se não especificado, o FILE_LEVEL padrão será usado.

    • A estratégia de resolução de conflitos que você deseja usar (com a opção --conflict-resolution-strategy). Se não especificado, isso define NONE como padrão, e os conflitos devem ser resolvidos manualmente.

    • A mensagem de confirmação a ser incluída (com a opção --commit-message).

    • O nome a ser usado para a confirmação (com a opção --author-name).

    • O endereço de e-mail a ser usado para a confirmação (com a opção --email).

    • Opção de manter pastas vazias (com a opção --keep-empty-folders).

    O exemplo a seguir mescla e fecha uma solicitação pull com o ID 47 e um ID de confirmação de origem 99132ab0EXAMPLE em um repositório denominado MyDemoRepo. Ele usa as opções padrão para detalhes de conflitos e estratégia de resolução de conflitos:

    aws codecommit merge-pull-request-by-three-way --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo --author-name "Maria Garcia" --email "maria_garcia@example.com" --commit-message "Merging pull request 47 by three-way with default options"

    Se bem-sucedido, esse comando produz o mesmo tipo de saída que a mesclagem por avanço rápido, semelhante ao seguinte:

    { "pullRequest": { "approvalRules": [ { "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "approvalRuleId": "dd8b17fe-EXAMPLE", "approvalRuleName": "2-approver-rule-for-main", "creationDate": 1571356106.936, "lastModifiedDate": 571356106.936, "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major", "originApprovalRuleTemplate": { "approvalRuleTemplateId": "dd8b17fe-EXAMPLE", "approvalRuleTemplateName": "2-approver-rule-for-main" }, "ruleContentSha256": "4711b576EXAMPLE" } ], "authorArn": "arn:aws:iam::123456789012:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.142, "description": "Review the latest changes and updates to the global variables", "lastActivityDate": 1508887223.155, "pullRequestId": "47", "pullRequestStatus": "CLOSED", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE", "destinationReference": "refs/heads/main", "mergeMetadata": { "isMerged": true, "mergedBy": "arn:aws:iam::123456789012:user/Mary_Major" }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables" } }