Unione di una richiesta di pull in unAWS CodeCommitmagazzino - AWS CodeCommit

AWS CodeCommit non è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Scopri di più»

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Unione di una richiesta di pull in unAWS CodeCommitmagazzino

Una volta esaminato il codice e soddisfatte tutte le regole di approvazione (se presenti) nella richiesta pull, è possibile unire una richiesta pull in uno dei diversi modi illustrati di seguito:

  • È possibile utilizzare la console per unire il ramo di origine al ramo di destinazione utilizzando una delle strategie di unione disponibili, che chiude anche la richiesta di pull. È inoltre possibile risolvere qualsiasi conflitto di unione nella console. Nella console viene visualizzato un messaggio che indica se la richiesta pull può essere unita o se i conflitti devono essere risolti. Quando tutti i conflitti vengono risolti e si sceglie Merge (Unisci), l'unione viene eseguita utilizzando la strategia di unione scelta. L'inoltro rapido è la strategia di unione predefinita, che è l'opzione predefinita per Git. A seconda dello stato del codice nei rami di origine e di destinazione, tale strategia potrebbe non essere disponibile, ma potrebbero esserne disponibili altre, ad esempio la strategia squash o quella a 3 vie.

  • È possibile utilizzare l'AWS CLI per tentare di unire e chiudere la richiesta di pull utilizzando la strategia di avanzamento rapido, squash o a tre vie.

  • Sul tuo computer locale, puoi usare il comando git merge per unire il ramo di origine nel ramo di destinazione e quindi eseguire il push del codice unito nel ramo di destinazione. Questo approccio presenta degli svantaggi da considerare attentamente. Unisce la richiesta di pull indipendentemente dal fatto che siano stati soddisfatti i requisiti per le regole di approvazione della richiesta di pull, eludendo tali controlli. L'unione e il push del ramo di destinazione chiudono automaticamente anche la richiesta pull, se la richiesta pull viene unita utilizzando la strategia di unione inoltro rapido. Un vantaggio di questo approccio è che ilgit mergeconsente di scegliere le opzioni di unione o le strategie che non sono disponibili nella console CodeCommit. Per ulteriori informazioni su git merge e sulle opzioni di unione, consulta git-merge o la documentazione Git.

CodeCommit chiude automaticamente una richiesta di pull se il ramo di origine o di destinazione della richiesta di pull viene eliminato.

Unione di una richiesta di pull (console)

Puoi utilizzare la console CodeCommit per unire una richiesta di pull in un repository CodeCommit. Una volta modificato in Merged (Unito), lo stato di una richiesta di pull non appare più nell'elenco delle richieste di pull aperte. Una richiesta di pull unita è categorizzata come chiusa. Non può essere modificato in Open (Apri), ma gli utenti possono comunque commentare le modifiche e rispondere ai commenti. Dopo l'unione o la chiusura di una richiesta pull, non è possibile approvarla, revocare l'approvazione o ignorare le regole di approvazione applicate alla richiesta pull.

  1. Aprire la console CodeCommit all'indirizzo.https://console.aws.amazon.com/codesuite/codecommit/home.

  2. In Repositories (Repository), scegliere il nome del repository.

  3. Nel riquadro di navigazione, selezionare Pull requests (Richieste pull).

  4. Per impostazione predefinita, viene visualizzato l'elenco di tutte le richieste pull aperte. Scegliere la richiesta di pull aperta che si desidera unire.

  5. Nella richiesta pull, scegliere Approvals (Approvazioni). Esaminare l'elenco degli approvatori e verificare che siano state soddisfatte le condizioni per tutte le regole di approvazione (se presenti). Non è possibile unire una richiesta pull se una o più regole di approvazione hanno lo stato Rule not satisfied (Regola non soddisfatta). Se nessuno ha approvato la richiesta pull, valutare se si desidera unirla o se si desidera attendere le approvazioni.

    Nota

    Se è stata creata una regola di approvazione per una richiesta pull, è possibile modificarla o eliminarla per sbloccare l'unione. Se la regola di approvazione è stata creata con un modello di regola di approvazione, non è possibile modificarla o eliminarla. È possibile scegliere solo di ignorare i requisiti. Per ulteriori informazioni, consultare Sostituisci le regole di approvazione su una richiesta pull.

    Una richiesta pull che mostra una regola di approvazione le cui condizioni non sono state soddisfatte e un elenco vuoto di approvatori.
  6. Selezionare Merge (Unisci).

  7. Nel richiesta di pull, scegliere tra le strategie di unione disponibili. Le strategie di unione non applicabili vengono visualizzate in grigio. Se nessuna delle strategie di unione è disponibile, è possibile scegliere di risolvere i conflitti manualmente nella console CodeCommit oppure è possibile risolverli in locale utilizzando il client Git. Per ulteriori informazioni, consultare Risolvere i conflitti in una richiesta di pull in unAWS CodeCommitmagazzino.

    Una richiesta di pull che mostra le strategie di unione disponibili per l'unione nella console CodeCommit.
    • Una unione ad avanzamento rapido farà avanzare il riferimento per il ramo di destinazione al più recente commit del ramo di origine. Questo è il comportamento predefinito di Git quando possibile. Non viene creato nessun commit di unione, ma tutta la cronologia di commit dal ramo di origine viene conservata come se fosse avvenuta nel ramo di destinazione. Le unioni di avanzamento rapido non vengono visualizzate come unione di ramo nella visualizzazione del commit della cronologia del ramo di destinazione perché non viene creato alcun commit di unione. La punta del ramo di origine viene inoltrata rapidamente alla punta del ramo di destinazione.

    • Una unione squash crea un commit contenente le modifiche nel ramo di origine e applica quel singolo commit squash al ramo di destinazione. Per impostazione predefinita, il messaggio di commit per il commit squash contiene tutti i messaggi di commit delle modifiche apportate al ramo di origine. Non verrà conservata nessuna cronologia di commit singola delle modifiche del ramo. Questo può aiutare a semplificare la cronologia dei repository conservando una rappresentazione grafica dell'unione nella vista del visualizzatore di commit della cronologia dei rami di destinazione.

    • Una unione a tre vie creerà un commit di unione per l'unione nel ramo di destinazione, ma conserverà anche i commit singoli effettuati nel ramo di origine come parte della cronologia del ramo di destinazione. Questo può aiutare a mantenere una cronologia completa delle modifiche al repository.

  8. Se si sceglie la strategia di unione squash o a tre vie, rivedere il messaggio di commit generato automaticamente e modificarlo se si desidera cambiare le informazioni. Aggiungere il nome e l'indirizzo e-mail per la cronologia di commit.

  9. (Facoltativo) Deselezionare l'opzione per eliminare il ramo di origine come parte dell'unione. L'impostazione predefinita è eliminare il ramo di origine quando viene unita una richiesta pull.

  10. Scegliere Merge pull request (Unisci richiesta di pull) per completare l'unione.

Unione di una richiesta di pull (AWS CLI)

Per utilizzareAWS CLIcomandi con CodeCommit, installa ilAWS CLI. Per ulteriori informazioni, consultare Guida di riferimento alla riga di comando.

Per utilizzare il pluginAWS CLIper unire le richieste pull in un repository CodeCommit

  1. Per valutare se per una richiesta pull sono state soddisfatte tutte le regole di approvazione e risulta essere pronta per l'unione, eseguire il comando evaluate-pull-request-approval-rules, specificando:

    • L'ID della richiesta di pull (da utilizzare con l'opzione --pull-request-id).

    • L'ID di revisione della richiesta pull, utilizzando il --revision-id option). È possibile ottenere l'ID di revisione corrente per una richiesta pull utilizzando il comando get-pull-request.

    Ad esempio, per valutare lo stato delle regole di approvazione in una richiesta pull con un ID 27 e un ID di revisione di 9f29d167EXAMPLE:

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

    Se il comando viene eseguito correttamente, verrà visualizzato un output simile al seguente:

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

    Questo output indica che una richiesta pull non può essere unita perché i requisiti di una regola di approvazione non sono stati soddisfatti. Per unire questa richiesta pull, è possibile chiedere ai revisori di approvarla per soddisfare le condizioni della regola. A seconda delle autorizzazioni e della modalità di creazione della regola, è possibile modificare, ignorare o eliminare la regola. Per ulteriori informazioni, consultare Revisione di una richiesta di pull, Sostituisci le regole di approvazione su una richiesta pull e Modificare o eliminare una regola di approvazione per una richiesta pull.

  2. Per unire e chiudere una richiesta di pull utilizzando una strategia di unione di avanzamento rapido, eseguire il comando merge-pull-request-by-fast-forward, specificando:

    • L'ID della richiesta di pull (con l'opzione --pull-request-id).

    • L'ID commit completo dell'estremità del ramo di origine (con l'opzione --source-commit-id).

    • Il nome del repository (con l'opzione --repository-name).

    Ad esempio, per unire e chiudere una richiesta di pull con ID47e un ID di commit sorgente di99132AB0 Esempioin un repository denominatoMyDemoRepo:

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

    Se il comando viene eseguito correttamente, verrà visualizzato un output simile al seguente:

    { "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. Per unire e chiudere una richiesta di pull utilizzando la strategia di unione squash, eseguire il comando merge-pull-request-by-squash, specificando:

    • L'ID della richiesta di pull (con l'opzione --pull-request-id).

    • L'ID commit completo dell'estremità del ramo di origine (con l'opzione --source-commit-id).

    • Il nome del repository (con l'opzione --repository-name).

    • Il livello di dettaglio del conflitto che si desidera utilizzare (con l'opzione --conflict-detail-level). Se non altrimenti specificato, si utilizza l'impostazione predefinita FILE_LEVEL.

    • La strategia di risoluzione dei conflitti che si desidera utilizzare (con l'opzione --conflict-resolution-strategy). Se non altrimenti specificato, l'impostazione predefinita è NONE e i conflitti devono essere risolti manualmente.

    • Il messaggio di commit da includere (con l'opzione --commit-message).

    • Il nome da utilizzare per il commit (con l'opzione --author-name).

    • L'indirizzo e-mail da utilizzare per il commit (con l'opzione --email).

    • Per mantenere le cartelle vuote (con l'opzione --keep-empty-folders).

    L'esempio seguente unisce e chiude una richiesta di pull con ID47e un ID di commit sorgente di99132AB0 Esempioin un repository denominatoMyDemoRepo. Utilizza i dettagli del conflitto di LINE_LEVEL e la strategia di risoluzione dei conflitti di 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"

    In caso di successo, questo comando produce lo stesso tipo di output dell'unione mediante l'avanzamento rapido, output simile ai seguenti:

    { "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. Per unire e chiudere una richiesta di pull utilizzando la strategia di unione a tre vie, eseguire il comando merge-pull-request-by-three-way, specificando:

    • L'ID della richiesta di pull (con l'opzione --pull-request-id).

    • L'ID commit completo dell'estremità del ramo di origine (con l'opzione --source-commit-id).

    • Il nome del repository (con l'opzione --repository-name).

    • Il livello di dettaglio del conflitto che si desidera utilizzare (con l'opzione --conflict-detail-level). Se non altrimenti specificato, si utilizza l'impostazione predefinita FILE_LEVEL.

    • La strategia di risoluzione dei conflitti che si desidera utilizzare (con l'opzione --conflict-resolution-strategy). Se non altrimenti specificato, l'impostazione predefinita è NONE e i conflitti devono essere risolti manualmente.

    • Il messaggio di commit da includere (con l'opzione --commit-message).

    • Il nome da utilizzare per il commit (con l'opzione --author-name).

    • L'indirizzo e-mail da utilizzare per il commit (con l'opzione --email).

    • Per mantenere le cartelle vuote (con l'opzione --keep-empty-folders).

    L'esempio seguente unisce e chiude una richiesta di pull con ID47e un ID di commit sorgente di99132AB0 Esempioin un repository denominatoMyDemoRepo. Utilizza le opzioni predefinite per i dettagli dei conflitti e la strategia di risoluzione dei conflitti:

    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"

    In caso di successo, questo comando produce lo stesso tipo di output dell'unione mediante l'avanzamento rapido, simile ai seguenti:

    { "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" } }