Zusammenführen einer Pull-Anforderung in einemAWS CodeCommitEndlager - AWS CodeCommit

AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. Erfahren Sie mehr“

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Zusammenführen einer Pull-Anforderung in einemAWS CodeCommitEndlager

Nachdem der Code geprüft wurde und alle Genehmigungsregeln (falls vorhanden) für die Pull-Anforderung erfüllt wurden, können Sie eine Pull-Anforderung auf verschiedene Arten zusammenführen:

  • In der Konsole können Sie den Quell-Branch mit einer der verfügbaren Merge-Strategien mit dem Ziel-Branch zusammenführen, wodurch auch die Pull-Anforderung geschlossen wird. Sie können Zusammenführungskonflikte auch in der Konsole lösen. Die Konsole zeigt eine Meldung an, die angibt, ob die Pull-Anforderung zusammengeführt werden kann oder Konflikte gelöst werden müssen. Sobald alle Konflikte gelöst wurden und Sie Merge (Zusammenführen) auswählen, wird die Zusammenführung unter Anwendung der von Ihnen ausgewählten Merge-Strategie durchgeführt. FAST_FORWARD ist die Merge-Standardstrategie und die Standardoption für Git. Je nach dem Status des Codes in den Quell- und Ziel-Branches ist diese Strategie möglicherweise nicht verfügbar, dafür aber andere Optionen, wie z. B. Squashmerge oder 3-Wege-Merge.

  • Mit der AWS CLI können Sie die Pull-Anforderung unter Verwendung der Merge-Strategie mit Vorlauf, Squash oder der Dreiwege-Merge-Strategie zusammenzuführen.

  • Verwenden Sie auf Ihrem lokalen Computer den Befehl git merge, um den Quell-Branch mit dem Ziel-Branch zusammenzuführen, und übertragen Sie dann den zusammengeführten Code an den Ziel-Branch. Dieser Herangehensweise hat Nachteile, die Sie berücksichtigen müssen. Die Pull-Anforderung wird unabhängig davon zusammengeführt, ob die Anforderungen der Genehmigungsregeln für die Pull-Anforderung erfüllt wurden – diese Kontrollen werden umgangen. Durch das Zusammenführen und Pushen des Ziel-Branches wird die Pull-Anforderung auch automatisch geschlossen, wenn die Pull-Anforderung mithilfe der Merge-Strategie mit Vorlauf zusammengeführt wird. Ein Vorteil dieses Ansatzes ist, dass dergit mergeMit dem Befehl können Sie Mergeoptionen und -strategien wählen, die in der CodeCommit-Konsole nicht verfügbar sind. Weitere Informationen zu git merge und den Mergeoptionen finden Sie unter git-merge oder in Ihrer Git-Dokumentation.

CodeCommit schließt eine Pull-Anforderung automatisch, wenn der Quell- oder Ziel-Branch der Pull-Anforderung gelöscht wird.

Zusammenführen einer Pull-Anforderung (-Konsole)

Sie können die CodeCommit-Konsole verwenden, um eine Pull-Anforderung in einem CodeCommit-Repository zusammenzuführen. Nachdem der Status einer Pull-Anforderung in Merged (Zusammengeführt) geändert wurde, wird sie nicht mehr in der Liste offener Pull-Anforderungen angezeigt. Eine zusammengeführte Pull-Anforderung wird als geschlossen kategorisiert. Ihr Status kann nicht wieder in Open (Geöffnet) geändert werden, aber Benutzer können die Änderungen weiterhin kommentieren und auf Kommentare antworten. Nachdem eine Pull-Anforderung zusammengeführt oder geschlossen wurde, können Sie sie nicht mehr genehmigen, eine erteilte Genehmigung für sie widerrufen oder die Genehmigungsregeln außer Kraft setzen, die der Pull-Anforderung zugewiesen wurden.

  1. Öffnen Sie die CodeCommit-Konsole unter.https://console.aws.amazon.com/codesuite/codecommit/homeaus.

  2. Wählen Sie im Bereich Repositories (Repositorys) den Namen des Repositorys aus.

  3. Wählen Sie im Navigationsbereich Pull requests (Pull-Anforderungen) aus.

  4. Standardmäßig wird eine Liste aller offenen Pull-Anforderungen angezeigt. Wählen Sie die offene Pull-Anforderung aus, die Sie zusammenführen möchten.

  5. Wählen Sie in der Pull-Anforderung die Option Approvals (Genehmigungen). Verifizieren Sie anhand der Liste der Genehmiger, dass die Bedingungen aller Genehmigungsregeln (falls vorhanden) erfüllt wurden. Sie können eine Pull-Anforderung nicht zusammenführen, wenn einzelne oder mehrere Genehmigungsregeln den Status Rule not satisfied (Regel nicht erfüllt) haben. Wenn kein Benutzer die Pull-Anforderung genehmigt hat, müssen Sie abwägen, ob sie zusammengeführt werden soll oder ob Sie auf Genehmigungen warten möchten.

    Anmerkung

    Wenn eine Genehmigungsregel für eine Pull-Anforderung erstellt wurde, können Sie sie bearbeiten oder löschen, um die Blockierung der Zusammenführung aufzuheben. Wenn die Genehmigungsregel mit einer Genehmigungsregelvorlage erstellt wurde, können Sie sie nicht bearbeiten oder löschen. Sie können sich nur entscheiden, die Anforderungen außer Kraft zu setzen. Weitere Informationen finden Sie unter Überschreiben von Genehmigungsregeln für eine Pull-Anforderung .

    Eine Pull-Anforderung mit einer Genehmigungsregel, deren Bedingungen nicht erfüllt wurden, und mit einer leeren Genehmigerliste
  6. Wählen Sie Merge (Zusammenführen).

  7. Wählen Sie in der Pull-Anforderung zwischen den verfügbaren Mergestrategien. Merge-Strategien, die nicht angewendet werden können, werden abgedunkelt dargestellt. Wenn keine Mergestrategien verfügbar sind, können Sie Konflikte auf Wunsch manuell in der CodeCommit-Konsole beheben oder Sie können sie mit Ihrem Git-Client lokal lösen. Weitere Informationen finden Sie unter Lösen von Konflikten in einer Pull-Anforderung in einemAWS CodeCommitEndlager .

    Eine Pull-Anforderung mit den Mergestrategien, die für die Zusammenführung in der CodeCommit-Konsole verfügbar sind.
    • Bei einem Merge mit Vorlauf bewegt sich die Referenz für den Ziel-Branch vorwärts zum neuesten Commit des Quell-Branches. Dies ist das Standardverhalten von Git, soweit möglich. Es wird kein Merge-Commit erstellt, der gesamte Commit-Verlauf vom Quell-Branch bleibt aber erhalten, als ob er im Ziel-Branch aufgetreten wäre. Zusammenführungen mit Vorlauf werden nicht als Branch-Zusammenführungen in der Commit-Ansicht des Verlaufs für den Ziel-Branch dargestellt, weil kein Merge-Commit erstellt wird. Die Spitze des Quell-Branches wird per Vorlauf an die Spitze des Ziel-Branches weitergeleitet.

    • Bei einem Squash-Merge wird ein Commit mit den Änderungen im Quell-Branch erstellt und weist diesen einzelnen Squash-Commit dem Ziel-Branch zu. Standardmäßig enthält die Commit-Nachricht für diesen Squash-Commit alle Commit-Nachrichten der Änderungen im Quell-Branch. Individuelle Commit-Verläufe der Branch-Änderungen bleiben nicht erhalten. Dadurch lässt sich der Repository-Verlauf vereinfachen, während gleichzeitig eine grafische Darstellung der Zusammenführung in der Commit Visualizer-Ansicht der Ziel-Branch-Verlaufs beibehalten wird.

    • Ein Dreiwege-Merge erstellt einen Merge-Commit für die Zusammenführung im Ziel-Branch, behält als Teil des Verlaufs des Ziel-Branches aber auch die einzelnen Commits bei, die im Quell-Branch vorgenommen wurden. Dies kann bei der Wahrung eines vollständigen Verlaufs der Änderungen an Ihrem Repository hilfreich sein.

  8. Wenn Sie als Strategie den Squash-Merge oder den Dreiwege-Merge wählen, überprüfen Sie die automatisch generierte Commit-Nachricht und ändern Sie sie, wenn Sie die Informationen ändern möchten. Fügen Sie den Namen und die E-Mail-Adresse für den Commit-Verlauf hinzu.

  9. (Optional) Deaktivieren Sie die Option, um den Quell-Branch im Rahmen der Zusammenführung zu löschen. Standardmäßig wird der Quell-Branch gelöscht, wenn eine Pull-Anforderung zusammengeführt wird.

  10. Wählen Sie Merge pull request (Pull-Anforderung zusammenführen) um die Zusammenführung abzuschließen.

Zusammenführen einer Pull-Anforderung (AWS CLI)

Um zu verwendenAWS CLIBefehle mit CodeCommit, installieren Sie dasAWS CLIaus. Weitere Informationen finden Sie unter Befehlszeilenreferenz .

So verwenden Sie denAWS CLISo führen Sie Pull-Anforderungen in einem CodeCommit-Repository zusammen

  1. Um auszuwerten, ob eine Pull-Anforderung alle Genehmigungsregeln erfüllt und zusammengeführt werden kann, führen Sie den Befehl evaluate-pull-request-approval-rules aus, indem Sie Folgendes angeben:

    • ID der Pull-Anforderung (mit der Option --pull-request-id).

    • Revisions-ID der Pull-Anforderung (mit --revision-id option)). Sie können die aktuelle Revisions-ID für eine Pull-Anforderung mit dem Befehl get-pull-request abrufen.

    Um beispielsweise den Status der Genehmigungsregeln für eine Pull-Anforderung mit der ID 27 und der Revisions-ID 9f29d167EXAMPLE auszuwerten:

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

    Ist der Befehl erfolgreich, wird eine Ausgabe zurückgegeben, die der folgenden ähnelt:

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

    Diese Ausgabe gibt an, dass eine Pull-Anforderung nicht zusammengeführt werden kann, weil die Anforderungen einer Genehmigungsregel nicht erfüllt wurden. Damit diese Pull-Anforderung zusammengeführt werden kann, können Sie voraussetzen, dass Genehmiger sie genehmigen und so die Bedingungen der Regel erfüllen. Abhängig von Ihren Berechtigungen und der Art der Regelerstellung können Sie die Regel möglicherweise auch bearbeiten, überschreiben oder löschen. Weitere Informationen finden Sie unter Überprüfen einer Pull-Anforderung, Überschreiben von Genehmigungsregeln für eine Pull-Anforderung und Bearbeiten oder Löschen einer Genehmigungsregel für eine Pull-Anforderung.

  2. Um eine Pull-Anforderung mittels der Mergestrategie mit Vorlauf zusammenzuführen und zu schließen, führen Sie den Befehl merge-pull-request-by-fast-forwardaus, wobei Sie Folgendes angeben:

    • ID der Pull-Anforderung (mit der Option --pull-request-id).

    • Die vollständige Commit-ID des obersten Commits des Quell-Branches (mit der Option --source-commit-id).

    • Der Name des Repositorys (mit der Option --repository-name).

    Wenn Sie beispielsweise eine Pull-Anforderung mit der ID zusammenführen und schließen möchten47und eine Quell-Commit-ID von99132ab0Beispielin einem Repository mit dem NamenMyDemoRepo:

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

    Ist der Befehl erfolgreich, wird eine Ausgabe zurückgegeben, die der folgenden ähnelt:

    { "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. Um eine Pull-Anforderung mittels der Squashmerge-Strategie zusammenzuführen und zu schließen, führen Sie den Befehl merge-pull-request-by-squashaus, wobei Sie Folgendes angeben:

    • ID der Pull-Anforderung (mit der Option --pull-request-id).

    • Die vollständige Commit-ID des obersten Commits des Quell-Branches (mit der Option --source-commit-id).

    • Der Name des Repositorys (mit der Option --repository-name).

    • Die Konflikt-Detailgenauigkeit, die Sie verwenden möchten (mit der Option --conflict-detail-level). Wenn dieser Parameter nicht angegeben wird, wird der Standardwert FILE_LEVEL verwendet.

    • Die Konfliktlösungsstrategie, die Sie verwenden möchten (mit der Option --conflict-resolution-strategy). Wenn dieser Parameter nicht angegeben wird, gilt der Standardwert NONE, und Konflikte müssen manuell behoben werden.

    • Die einzuschließende Commit-Nachricht (mit der Option --commit-message).

    • Der für den Commit zu verwendende Name (mit der Option --author-name).

    • Die für den Commit zu verwendende E-Mail-Adresse (mit der Option --email).

    • Angabe, ob leere Ordner beibehalten werden sollen (mit der Option --keep-empty-folders).

    Das folgende Beispiel führt beispielsweise eine Pull-Anforderung mit der ID zusammen und schließt sie dann47und eine Quell-Commit-ID von99132ab0Beispielin einem Repository mit dem NamenMyDemoRepoaus. Es verwendet das Konfliktdetail LINE_LEVEL und die Konfliktlösungsstrategie 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"

    Ist der Befehl erfolgreich, erstellt er die gleiche Art von Ausgabe wie ein Merge mit Vorlauf, vergleichbar mit der folgenden Ausgabe:

    { "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. Um eine Pull-Anforderung mittels der Dreiwege-Mergestrategie zusammenzuführen und zu schließen, führen Sie den Befehl merge-pull-request-by-three-way aus und geben Sie Folgendes an:

    • ID der Pull-Anforderung (mit der Option --pull-request-id).

    • Die vollständige Commit-ID des obersten Commits des Quell-Branches (mit der Option --source-commit-id).

    • Der Name des Repositorys (mit der Option --repository-name).

    • Die Konflikt-Detailgenauigkeit, die Sie verwenden möchten (mit der Option --conflict-detail-level). Wenn dieser Parameter nicht angegeben wird, wird der Standardwert FILE_LEVEL verwendet.

    • Die Konfliktlösungsstrategie, die Sie verwenden möchten (mit der Option --conflict-resolution-strategy). Wenn dieser Parameter nicht angegeben wird, gilt der Standardwert NONE, und Konflikte müssen manuell behoben werden.

    • Die einzuschließende Commit-Nachricht (mit der Option --commit-message).

    • Der für den Commit zu verwendende Name (mit der Option --author-name).

    • Die für den Commit zu verwendende E-Mail-Adresse (mit der Option --email).

    • Angabe, ob leere Ordner beibehalten werden sollen (mit der Option --keep-empty-folders).

    Das folgende Beispiel führt beispielsweise eine Pull-Anforderung mit der ID zusammen und schließt sie dann47und eine Quell-Commit-ID von99132ab0Beispielin einem Repository mit dem NamenMyDemoRepoaus. Es verwendet die Standardoptionen für Konfliktdetail und Konfliktlösungsstrategie:

    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"

    Ist der Befehl erfolgreich, erstellt er die gleiche Art von Ausgabe wie ein Merge mit Vorlauf, vergleichbar mit der folgenden Ausgabe:

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