Menggabungkan permintaan pull dalam repositori AWS CodeCommit - AWS CodeCommit

AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari lebih lanjut”

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggabungkan permintaan pull dalam repositori AWS CodeCommit

Setelah kode Anda ditinjau dan semua aturan persetujuan (jika ada) pada permintaan pull telah terpenuhi, Anda dapat menggabungkan permintaan pull dengan salah satu dari beberapa cara:

  • Anda dapat menggunakan konsol untuk menggabungkan cabang sumber Anda ke cabang tujuan menggunakan salah satu strategi penggabungan yang tersedia, yang juga menutup permintaan pull. Anda juga dapat menyelesaikan konflik penggabungan di konsol tersebut. Konsol menampilkan pesan yang menunjukkan jika permintaan pull dapat digabungkan atau jika konflik harus diselesaikan. Ketika semua konflik diselesaikan dan Anda memilih Gabungkan, penggabungan dilakukan menggunakan strategi penggabungan yang Anda pilih. Fast-forward adalah strategi merge default, yang merupakan pilihan default untuk Git. Tergantung pada status kode di cabang sumber dan tujuan, strategi tersebut mungkin tidak tersedia, tetapi pilihan lain mungkin tersedia, seperti squash atau 3-way.

  • Anda dapat menggunakan AWS CLI untuk menggabungkan dan menutup permintaan pull menggunakan strategi penggabungan fast-forward, squash, atau 3-way.

  • Pada komputer lokal Anda, Anda dapat menggunakan perintah git merge untuk menggabungkan cabang sumber ke cabang tujuan, dan kemudian mendorong kode gabungan ke cabang tujuan. Pendekatan ini memiliki kekurangan yang harus Anda pertimbangkan dengan hati-hati. Ini menggabungkan permintaan pull terlepas jika persyaratan untuk aturan persetujuan pada permintaan pull telah dipenuhi atau tidak, yang menghindari kontrol tersebut. Penggabungan dan pengiriman ke cabang tujuan juga menutup permintaan pull secara otomatis jika permintaan pull digabung menggunakan strategi penggabungan fast-forward. Salah satu keuntungan dari pendekatan ini adalah bahwa perintah git merge memungkinkan Anda untuk memilih opsi penggabungan atau strategi yang tidak tersedia di konsol CodeCommit. Untuk informasi lebih lanjut tentang git merge dan opsi penggabungan, lihat git-merge atau dokumentasi Git Anda.

CodeCommit menutup permintaan pull secara otomatis jika salah sumber atau cabang tujuan permintaan pull dihapus.

Menggabungkan permintaan pull (konsol)

Anda dapat menggunakan konsol CodeCommit untuk menggabungkan permintaan pull dalam repositori CodeCommit. Setelah status permintaan pull diubah menjadi Digabungkan, maka tidak akan lagi muncul di daftar permintaan pull terbuka. Permintaan pull gabungan dikategorikan sebagai tertutup. Hal ini tidak dapat diubah kembali ke Buka, namun pengguna masih dapat mengomentari perubahan dan membalas komentar. Setelah permintaan pull digabung atau ditutup, Anda tidak dapat menyetujuinya, mencabut persetujuan untuk itu, atau mengesampingkan aturan persetujuan yang diterapkan pada permintaan pull.

  1. Buka konsol CodeCommit di https://console.aws.amazon.com/codesuite/codecommit/home.

  2. Di Repositori, pilih nama repositori.

  3. Di panel navigasi, pilih Permintaan pull.

  4. Secara default, daftar semua permintaan pull terbuka ditampilkan. Pilih permintaan pull terbuka yang ingin Anda gabungkan.

  5. Dalam permintaan pull, pilih Persetujuan. Tinjau daftar pemberi persetujuan, dan verifikasi bahwa semua aturan persetujuan (jika ada) telah memenuhi syarat. Anda tidak dapat menggabungkan permintaan pull jika satu atau lebih persetujuan aturan memiliki status Aturan tidak terpenuhi. Jika tidak ada yang menyetujui permintaan pull, pertimbangkan apakah Anda ingin menggabungkannya, atau apakah Anda ingin menunggu persetujuan.

    catatan

    Jika aturan persetujuan dibuat untuk permintaan pull, Anda dapat mengeditnya atau menghapusnya untuk membuka blokir penggabungan. Jika aturan persetujuan dibuat dengan templat aturan persetujuan, Anda tidak dapat mengedit atau menghapusnya. Anda hanya dapat memilih untuk mengesampingkan persyaratan. Untuk informasi selengkapnya, lihat Menimpa aturan persetujuan pada sebuah permintaan pull.

    Permintaan pull menunjukkan aturan persetujuan yang syaratnya belum terpenuhi dan daftar pemberi persetujuan yang kosong.
  6. Pilih Gabungkan.

  7. Dalam permintaan pull, pilih antara strategi penggabungan yang tersedia. Menggabungkan strategi yang tidak dapat diterapkan muncul berwarna abu-abu. Jika tidak ada strategi penggabungan tersedia, Anda dapat memilih untuk secara manual menyelesaikan konflik di konsol CodeCommit, atau Anda dapat mengatasinya secara lokal menggunakan klien Git Anda. Untuk informasi selengkapnya, lihat Menyelesaikan konflik dalam permintaan pull dalam repositori AWS CodeCommit.

    Permintaan pull yang menunjukkan strategi penggabungan yang tersedia untuk penggabungan di konsol CodeCommit.
    • Penggabungan fast-forward menggerakkan referensi untuk cabang tujuan maju ke commit terbaru cabang sumber. Ini adalah perilaku default Git bila memungkinkan. Tidak ada commit penggabungan yang dibuat, tetapi semua riwayat commit dari cabang sumber disimpan seolah-olah telah terjadi di cabang tujuan. Penggabungan fast-forward tidak muncul sebagai gabungan cabang dalam tampilan visualizer commit riwayat cabang tujuan karena tidak ada gabungan commit dibuat. Ujung cabang sumber cepat diteruskan ke ujung cabang tujuan.

    • Penggabungan squash menciptakan satu commit yang berisi perubahan di cabang sumber dan memberlakukan satu commit squash ke cabang tujuan. Secara default, pesan commit untuk commit squash berisi semua pesan commit dari perubahan di cabang sumber. Tidak ada riwayat commit individu perubahan cabang yang disimpan. Hal ini dapat membantu menyederhanakan riwayat repositori Anda dengan terus mempertahankan representasi grafis dari gabungan dalam tampilan visualizer commit riwayat cabang tujuan.

    • Penggabungan tiga arah menciptakan commit gabungan untuk penggabungan di cabang tujuan, tetapi juga mempertahankan commit individu yang dibuat di cabang sumber sebagai bagian dari riwayat cabang tujuan. Hal ini dapat membantu mempertahankan riwayat perubahan lengkap pada repositori Anda.

  8. Jika Anda memilih strategi penggabungan squash atau 3-way, tinjau pesan commit yang dihasilkan secara otomatis dan ubah jika Anda ingin mengubah informasi. Tambahkan nama dan alamat email Anda untuk riwayat commit.

  9. (Opsional) Hapus opsi untuk menghapus cabang sumber sebagai bagian dari penggabungan. Default-nya adalah menghapus cabang sumber ketika permintaan pull digabung.

  10. Pilih Gabungkan permintaan pull untuk menyelesaikan penggabungan.

Menggabungkan permintaan pull (AWS CLI)

Untuk menggunakan perintah AWS CLI dengan CodeCommit, instal AWS CLI. Untuk informasi lebih lanjut, lihat Referensi baris perintah.

Untuk menggunakanAWS CLIuntuk menggabungkan pull request dalam sebuah repositori CodeCommit

  1. Untuk mengevaluasi apakah permintaan pull telah memenuhi semua aturan persetujuan dan siap untuk digabung, jalankan perintah evaluate-pull-request-approval-rules, menentukan:

    • ID dari permintaan pull (menggunakan opsi --pull-request-id).

    • ID revisi dari permintaan pull (menggunakan --revision-id option). Anda bisa mendapatkan ID revisi saat ini untuk permintaan pull dengan menggunakan perintah get-pull-request.

    Misalnya, untuk mengevaluasi keadaan aturan persetujuan pada permintaan pull dengan ID 27 dan ID revisi 9f29d167EXAMPLE:

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

    Jika berhasil, perintah ini menghasilkan output yang serupa dengan yang berikut:

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

    Output ini menunjukkan bahwa permintaan pull tidak dapat digabungkan karena persyaratan aturan persetujuan belum dipenuhi. Untuk menggabungkan permintaan pull ini, Anda dapat meminta pengulas menyetujuinya untuk memenuhi persyaratan aturan. Tergantung pada izin dan cara aturan dibuat, Anda mungkin juga dapat mengedit, menimpa, atau menghapus aturan. Untuk informasi lebih lanjut, lihat Meninjau permintaan pull, Menimpa aturan persetujuan pada sebuah permintaan pull, dan Mengedit atau menghapus aturan persetujuan untuk permintaan pull.

  2. Untuk menggabungkan dan menutup permintaan pull menggunakan strategi penggabungan fast-forward, jalankan perintah merge-pull-request-by-fast-forward, menentukan:

    • ID dari permintaan pull (dengan opsi --pull-request-id).

    • ID commit penuh dari ujung cabang sumber (dengan opsi --source-commit-id).

    • Nama repositori (dengan opsi --repository-name).

    Misalnya, untuk menggabungkan dan menutup permintaan pull dengan ID 47 dan sebuah ID commit sumber 99132ab0EXAMPLE dalam repositori bernama MyDemoRepo:

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

    Jika berhasil, perintah ini menghasilkan output yang serupa dengan yang berikut:

    { "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. Untuk menggabungkan dan menutup permintaan pull menggunakan strategi penggabungan squash, jalankan perintah merge-pull-request-by-squash, menentukan:

    • ID permintaan pull (dengan opsi --pull-request-id).

    • ID commit penuh dari ujung cabang sumber (dengan opsi --source-commit-id).

    • Nama repositori (dengan opsi --repository-name).

    • Tingkat detail konflik yang ingin Anda gunakan (dengan opsi --conflict-detail-level). Jika tidak ditentukan, default FILE_LEVEL digunakan.

    • Strategi resolusi konflik yang ingin Anda gunakan (dengan opsi --conflict-resolution-strategy). Jika tidak ditentukan, secara default diatur ke NONE, dan konflik harus diselesaikan secara manual.

    • Pesan commit yang harus disertakan (dengan opsi --commit-message).

    • Nama yang digunakan untuk commit (dengan opsi --author-name).

    • Alamat email yang digunakan untuk commit (dengan opsi --email).

    • Apakah menyimpan folder kosong (dengan opsi --keep-empty-folders).

    Contoh berikut menggabungkan dan menutup permintaan pull dengan ID 47 dan sebuah ID commit sumber 99132ab0EXAMPLE dalam repositori bernama MyDemoRepo. Ini menggunakan detail konflik LINE_LEVEL dan strategi penyelesaian konflik 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"

    Jika berhasil, perintah ini menghasilkan jenis output yang sama sebagai penggabungan dengan fast-forward, output mirip dengan berikut ini:

    { "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. Untuk menggabungkan dan menutup permintaan pull menggunakan strategi penggabungan tiga arah, jalankan perintah merge-pull-request-by-three-way, menentukan:

    • ID dari permintaan pull (dengan opsi --pull-request-id).

    • ID commit penuh dari ujung cabang sumber (dengan opsi --source-commit-id).

    • Nama repositori (dengan opsi --repository-name).

    • Tingkat detail konflik yang ingin Anda gunakan (dengan opsi --conflict-detail-level). Jika tidak ditentukan, default FILE_LEVEL digunakan.

    • Strategi resolusi konflik yang ingin Anda gunakan (dengan opsi --conflict-resolution-strategy). Jika tidak ditentukan, secara default diatur ke NONE, dan konflik harus diselesaikan secara manual.

    • Pesan commit yang harus disertakan (dengan opsi --commit-message).

    • Nama yang digunakan untuk commit (dengan opsi --author-name).

    • Alamat email yang digunakan untuk commit (dengan opsi --email).

    • Apakah menyimpan folder kosong (dengan opsi --keep-empty-folders).

    Contoh berikut menggabungkan dan menutup permintaan pull dengan ID 47 dan sebuah ID commit sumber dari 99132ab0EXAMPLE dalam repositori MyDemoRepo. Ini menggunakan opsi default untuk detail konflik dan strategi penyelesaian konflik:

    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"

    Jika berhasil, perintah ini menghasilkan jenis yang sama output sebagai penggabungan dengan fast-forward, mirip dengan berikut ini:

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