Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Fusionner une pull request dans un AWS CodeCommit référentiels
Une fois que votre code a été révisé et que toutes les règles d'approbation (le cas échéant) de la demande d'extraction ont été satisfaites, vous pouvez fusionner une demande d'extraction de l'une des manières suivantes :
-
Vous pouvez utiliser la console pour fusionner votre branche source dans la branche de destination à l'aide d'une des stratégies de fusion disponibles, ce qui ferme automatiquement la demande d'extraction. Vous pouvez également résoudre les conflits de fusion dans la console. La console affiche un message indiquant si la demande d'extraction peut être fusionnée ou si des conflits doivent être résolus. Lorsque tous les conflits sont résolus et que vous choisissez Fusionner, la fusion est effectuée selon la stratégie de fusion que vous choisissez. Fast-forward est la stratégie de fusion par défaut, qui est l'option par défaut pour Git. En fonction de l'état du code dans les branches source et de destination, cette stratégie peut ne pas être disponible, mais d'autres le sont, comme la fusion par écrasement ou la fusion tripartite.
Vous pouvez utiliser le AWS CLI pour fusionner et fermer la pull request à l'aide de la stratégie d'avance rapide, de squash ou de fusion tridirectionnelle.
-
Sur votre ordinateur local, vous pouvez utiliser la commande git merge pour fusionner la branche source dans la branche de destination, puis transmettre le code fusionné à la branche de destination. Cette approche a des inconvénients que vous devez examiner attentivement. Elle fusionne la demande d'extraction, que les exigences relatives aux règles d'approbation de la demande d'extraction aient été satisfaites ou non, en contournant ces contrôles. La fusion et le transfert de la branche de destination ferme également automatiquement la demande d'extraction si cette dernière est fusionnée à l'aide de la stratégie de fusion rapide. L'un des avantages de cette approche est que la git merge commande vous permet de choisir des options de fusion ou des stratégies qui ne sont pas disponibles dans la CodeCommit console. Pour en savoir plus sur git merge et les options de fusion, consultez git-merge
ou votre documentation Git.
CodeCommit ferme automatiquement une pull request si la branche source ou destination de la pull request est supprimée.
Fusionner une pull request (console)
Vous pouvez utiliser la CodeCommit console pour fusionner une pull request dans un CodeCommit référentiel. Lorsque le statut d'une demande d'extraction passe à Merged (Fusionnée), celle-ci ne s'affiche plus dans la liste des demandes d'extraction ouvertes. Une demande d'extraction fusionnée est classée comme fermée. Le statut Open (Ouverte) ne peut pas lui être de nouveau affecté, mais les utilisateurs peuvent continuer à commenter les modifications et à répondre aux commentaires. Après la fusion ou la fermeture d'une demande d'extraction, vous ne pouvez plus l'approuver, annuler son approbation ou remplacer les règles d'approbation qui s'appliquent à cette demande.
Ouvrez la CodeCommit console à l'adresse https://console.aws.amazon.com/codesuite/codecommit/home
. -
Dans Référentiels, sélectionnez le nom du référentiel.
-
Dans le volet de navigation, choisissez Demandes d'extraction.
-
Par défaut, une liste de toutes les demandes d'extraction ouvertes s'affiche. Choisissez la demande d'extraction ouverte que vous souhaitez fusionner.
-
Dans la demande d'extraction, choisissez Approvals (Approbations). Examinez la liste des approbateurs et vérifiez que toutes les règles d'approbation (le cas échéant) ont été satisfaites. Vous ne pouvez pas fusionner une demande d'extraction si une ou plusieurs règles d'approbation ont le statut Rule not satisfied (Règle non satisfaite). Si personne n'a approuvé la demande d'extraction, voyez si vous souhaitez la fusionner ou si vous souhaitez attendre les approbations.
Note
Si une règle d'approbation a été créée pour une demande d'extraction, vous pouvez la modifier ou la supprimer pour débloquer la fusion. Si la règle d'approbation a été créée avec un modèle de règle d'approbation, vous ne pouvez pas la modifier ou la supprimer. Vous pouvez uniquement choisir de contourner les exigences. Pour plus d’informations, consultez Annuler les règles d'approbation relatives à une pull request.
-
Choisissez Merge (Fusionner).
-
Dans la demande d'extraction, choisissez entre les stratégies de fusion disponibles. Les stratégies de fusion qui ne peuvent pas être appliquées apparaissent en grisé. Si aucune stratégie de fusion n'est disponible, vous pouvez choisir de résoudre les conflits manuellement dans la CodeCommit console ou de les résoudre localement à l'aide de votre client Git. Pour plus d’informations, consultez Résoudre les conflits liés à une pull request dans un AWS CodeCommit référentiel.
-
Une fusion rapide déplace la référence de la branche de destination vers le commit le plus récent de la branche source. Il s'agit du comportement par défaut de Git lorsque cela est possible. Aucune validation de fusion n'est créée, mais tout l'historique des validations de la branche source est conservé comme s'il s'était produit dans la branche de destination. Fast-forward les fusions n'apparaissent pas en tant que fusion de branches dans la vue visualiseur de validation de l'historique de la branche de destination car aucune validation de fusion n'est créée. La pointe de la branche source est déplacée rapidement vers la pointe de la branche de destination.
-
Une fusion par écrasement crée une validation contenant les modifications dans la branche source et applique cette validation par écrasement unique à la branche de destination. Par défaut, le message de validation pour cette validation par écrasement contient tous les messages de validation des modifications apportées à la branche source. Aucun historique de validation individuel des modifications de branche n'est conservé. Cela peut vous aider à simplifier votre historique de référentiel tout en conservant une représentation graphique de la fusion dans la vue de visualisation de la validation de l’historique de la branche de destination.
-
Une fusion tripartite crée une validation de fusion pour la fusion dans la branche de destination, mais conserve également les validations individuelles effectuées dans la branche source dans l'historique de la branche de destination. Cela peut vous aider à conserver un historique complet des modifications apportées à votre référentiel.
-
-
Si vous choisissez la stratégie de fusion par écrasement ou tripartite, vérifiez le message de validation généré automatiquement et modifiez-le si vous souhaitez modifier les informations. Ajoutez votre nom et votre adresse e-mail pour l'historique des validations.
-
(Facultatif) Désélectionnez cette option pour supprimer la branche source dans le cadre de la fusion. L'option par défaut consiste à supprimer la branche source lorsqu'une demande d'extraction est fusionnée.
-
Choisissez Merge pull request (Fusionner la demande d'extraction) pour terminer la fusion.
Fusionner une pull request (AWS CLI)
Pour utiliser AWS CLI les commandes avec CodeCommit, installez le AWS CLI. Pour plus d’informations, consultez Référence des commandes en ligne.
Pour utiliser le AWS CLI pour fusionner les pull requests dans un CodeCommit référentiel
-
Pour savoir si toutes ses règles d'approbation d'une demande d'extraction ont été satisfaites et si la demande est prête à être fusionnée, exécutez la commande evaluate-pull-request-approval-rules en spécifiant :
-
L'ID de la demande d'extraction (avec l'option --pull-request-id).
-
L'ID de révision de la demande d'extraction (avec l'option --revision-id option)). Vous pouvez obtenir l'ID de révision actuel d'une demande d'extraction à l'aide de la commande get-pull-request.
Par exemple, pour évaluer l'état des règles d'approbation d'une pull request dont l'ID
27et l'ID de révision sont les9f29d167EXAMPLEsuivants :aws codecommit evaluate-pull-request-approval-rules --pull-request-id27--revision-id9f29d167EXAMPLESi elle aboutit, cette commande produit une sortie similaire à ce qui suit :
{ "evaluation": { "approved": false, "approvalRulesNotSatisfied": [ "Require two approved approvers" ], "overridden": false, "approvalRulesSatisfied": [] } }Note
Ce résultat indique qu'une pull request n'est pas fusionnable car les exigences d'une règle d'approbation ne sont pas satisfaites. Pour fusionner cette demande d'extraction, vous pouvez demander aux réviseurs de l'approuver pour qu'elle respecte les conditions de la règle. Selon vos autorisations et la façon dont la règle a été créée, vous pouvez également modifier, contourner ou supprimer la règle. Pour plus d’informations, consultez Réviser une demande d'extraction, Annuler les règles d'approbation relatives à une pull request et Modifier ou supprimer une règle d'approbation pour une pull request.
-
-
Pour fusionner et fermer une demande d'extraction à l'aide de la stratégie de fusion rapide, exécutez la commande merge-pull-request-by-fast-forward, en spécifiant les éléments suivants :
-
L'ID de la demande d'extraction (avec l'option --pull-request-id).
-
L'ID de validation complet de la pointe de la branche source (avec l'option--source-commit-id).
-
Le nom du référentiel (avec l'option --repository-name).
Par exemple, pour fusionner et fermer une pull request avec l'ID
47et l'ID de validation de la source99132ab0EXAMPLEdans un référentiel nomméMyDemoRepo:aws codecommit merge-pull-request-by-fast-forward --pull-request-id47--source-commit-id99132ab0EXAMPLE--repository-nameMyDemoRepoSi elle aboutit, cette commande produit une sortie similaire à ce qui suit :
{ "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" } } -
-
Pour fusionner et fermer une demande d'extraction à l'aide de la stratégie de fusion par écrasement, exécutez la commande merge-pull-request-by-squash, en spécifiant les éléments suivants :
-
L'ID de la demande d'extraction (avec l'option --pull-request-id).
-
L'ID de validation complet de la pointe de la branche source (avec l'option--source-commit-id).
-
Le nom du référentiel (avec l'option --repository-name).
-
Le niveau de détails de conflit que vous souhaitez utiliser (avec l'option --conflict-detail-level). Si vous ne spécifiez rien, la valeur par défaut
FILE_LEVELest utilisée. -
La stratégie de résolution des conflits que vous souhaitez utiliser (avec l'option --conflict-resolution-strategy). Si vous ne spécifiez rien, la valeur par défaut
NONEest utilisée et les conflits doivent être résolus manuellement. -
Le message de validation à inclure (avec l'option --commit-message).
-
Le nom à utiliser pour la validation (avec l'option --author-name).
-
L'adresse e-mail à utiliser pour la validation (avec l'option --email).
-
Si les dossiers vides doivent être conservés (avec l'option --keep-empty-folders).
L'exemple suivant fusionne et ferme une pull request avec l'ID
47et l'ID de validation de la source99132ab0EXAMPLEdans un référentiel nomméMyDemoRepo. Il utilise les détails de conflitsLINE_LEVELet la stratégie de résolution des conflitsACCEPT_SOURCE:aws codecommit merge-pull-request-by-squash --pull-request-id47--source-commit-id99132ab0EXAMPLE--repository-nameMyDemoRepo--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"Si elle aboutit, cette commande produit le même type de sortie qu’une fusion rapide, semblable à ce qui suit :
{ "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" } } -
-
Pour fusionner et fermer une demande d'extraction à l'aide de la stratégie de fusion tripartite, exécutez la commande merge-pull-request-by-three-way, en spécifiant les éléments suivants :
-
L'ID de la demande d'extraction (avec l'option --pull-request-id).
-
L'ID de validation complet de la pointe de la branche source (avec l'option--source-commit-id).
-
Le nom du référentiel (avec l'option --repository-name).
-
Le niveau de détails de conflit que vous souhaitez utiliser (avec l'option --conflict-detail-level). Si vous ne spécifiez rien, la valeur par défaut
FILE_LEVELest utilisée. -
La stratégie de résolution des conflits que vous souhaitez utiliser (avec l'option --conflict-resolution-strategy). Si vous ne spécifiez rien, la valeur par défaut
NONEest utilisée et les conflits doivent être résolus manuellement. -
Le message de validation à inclure (avec l'option --commit-message).
-
Le nom à utiliser pour la validation (avec l'option --author-name).
-
L'adresse e-mail à utiliser pour la validation (avec l'option --email).
-
Si les dossiers vides doivent être conservés (avec l'option --keep-empty-folders).
L'exemple suivant fusionne et ferme une pull request avec l'ID
47et l'ID de validation de la source99132ab0EXAMPLEdans un référentiel nomméMyDemoRepo. Il utilise les options par défaut pour le détail des conflits et la stratégie de résolution des conflits :aws codecommit merge-pull-request-by-three-way --pull-request-id47--source-commit-id99132ab0EXAMPLE--repository-nameMyDemoRepo--author-name "Maria Garcia" --email "maria_garcia@example.com" --commit-message "Merging pull request 47 by three-way with default options"Si elle aboutit, cette commande produit le même type de sortie qu’une fusion rapide, similaire à ce qui suit :
{ "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" } } -