Bỏ qua để đến nội dung

Xem xét và merge một PR

Hướng dẫn này chỉ cho bạn cách xem xét và hợp nhất một pull request.

  1. Điều hướng đến Pull requests trong thanh bên
  2. Chọn một PR từ danh sách

Một PR mở ra dưới dạng bàn làm việc có tab, chứ không phải một trang đơn. Năm tab mở sẵn theo mặc định, theo thứ tự này: Tổng quan, Diff, Kiểm soát mã nguồn, Chat và Hành động (các kiểm tra CI được nhóm theo workflow). Đánh giá — tiến độ của quy trình review, rồi artifact mà nó đã xuất bản kèm thanh phát hiện — cố tình không nằm trong số đó: một PR không có review cho đến khi ai đó yêu cầu, nên Hỏi AI mới mở nó. Một terminal, một trình soạn thảo đơn tệp, một code-server nhúng và một trình duyệt trong ứng dụng mở theo yêu cầu; các tab xem trước triển khai được chèn tự động khi phát hiện URL xem trước trên PR. Bố cục tab của bạn được ghi nhớ theo từng PR.

Tab Tổng quan mang siêu dữ liệu của PR (tác giả, nhánh, nhãn, người được giao, reaction, commit, trạng thái kiểm tra) và hàng hành động: làm mới, Đánh giá, Hợp nhất, mở trong IDE và một menu tràn ⋯.

Mở tab Diff để xem toàn bộ diff của PR cùng lúc, kèm một cây tệp để nhảy giữa các tệp.

  • Nút cài đặt trên thanh công cụ của diff chuyển đổi giữa chế độ xem Chia (cạnh nhau) và Gộp, đồng thời bật/tắt ngắt dòng và chữ ghép của phông mã.
  • Các tiêu đề hunk @@ được thay bằng các điều khiển Show N lines / Show end of file, giúp chèn ngữ cảnh xung quanh khi bấm vào.
  • Nhấn j / k để di chuyển giữa các tệp, c để thu gọn hoặc mở rộng tệp đang chọn, t để đưa thanh bên về cây tệp và ⌘F để tìm kiếm trên toàn bộ diff (Enter / Shift+Enter để đi qua các kết quả khớp).
  • Nhấn v để đánh dấu tệp đang chọn là đã xem, và con trỏ chuyển sang tệp tiếp theo. Trên GitHub, trạng thái đã xem được lưu trên máy chủ mã, nên nó theo bạn giữa các máy khách; GitLab và Bitbucket không có API như vậy, nên ở đó trạng thái này chỉ được ghi nhớ trên thiết bị này.

Kéo chuột trong vùng mã sẽ chọn văn bản chính xác đến từng cột, và ⌘C sao chép mã nguồn thô thay vì các dấu diff đã hiển thị.

  1. Bấm vào lề của một dòng mã để mở trình soạn gắn với dòng đó, hoặc dùng nút + trên tiêu đề tệp để bình luận ở cấp tệp
  2. Viết phản hồi của bạn bằng Markdown
  3. Gửi

Trên GitHub và GitLab, trình soạn đưa ra hai cách gửi: Thêm bình luận đơn đăng ngay lập tức, còn Bắt đầu review / Thêm vào review xếp bình luận vào một review đang chờ, review này sẽ được gửi đi cùng với Phê duyệt, Yêu cầu thay đổi hoặc Bình luận. Bitbucket không có cơ chế gộp review đang chờ, nên ở đó mọi lần gửi đều đăng ngay. Một bài đăng ngay sẽ hiển thị trạng thái đang chờ cho đến khi máy chủ mã xác nhận, rồi chuyển sang đã đồng bộ. Nếu việc đăng thất bại, luồng sẽ được đánh dấu kèm lỗi và cho phép thử lại.

Chỉ phần thân của review là bản nháp: nó được lưu phía máy chủ theo (chủ sở hữu, repo, số PR) một lát sau khi bạn ngừng gõ, nên nó tồn tại qua lần tải lại và theo bạn giữa máy khách máy tính để bàn và web.

  1. Nhấn Đánh giá trong hàng hành động ở Tổng quan (nút này bị ẩn trên PR của chính bạn và trên PR đã đóng hoặc đã hợp nhất)
  2. Viết phần thân review. Bạn có thể đính kèm ảnh, chèn emoji hoặc GIF và chuyển đổi giữa viết và xem trước
  3. Nhấn Yêu cầu thay đổi, Bình luận hoặc Phê duyệt

Kết luận chính là nút — không có trình chọn kết luận riêng. Sau Phê duyệt hoặc Yêu cầu thay đổi, nút tự đổi nhãn thành Đã phê duyệt hoặc Thay đổi được yêu cầu và phần thân nháp bị xóa. Một kết luận Bình luận giữ nguyên nhãn Đánh giá cho nút.

Nút Hợp nhất xuất hiện khi bạn có quyền ghi và PR đang mở và không phải bản nháp. Màu của nút là tín hiệu mức sẵn sàng suy ra từ các phê duyệt bắt buộc và trạng thái kiểm tra (sẵn sàng / đang chờ / bị chặn) — nó chỉ mang tính tham khảo. Nút không bao giờ bị vô hiệu hóa bởi trạng thái review; chính chế độ bảo vệ nhánh của máy chủ mã mới là thứ thực thi các quy tắc.

  1. Nhấn Hợp nhất để mở bảng hợp nhất
  2. Chọn một phương thức hợp nhất: squash, merge commit hoặc rebase (mặc định là squash). Bitbucket không có hợp nhất rebase thực sự, nên rebase được ánh xạ sang chiến lược fast-forward của nó và thất bại trên nhánh đã phân kỳ
  3. Với squash và merge commit, hãy sửa tiêu đề và mô tả commit đã điền sẵn. Rebase không dùng cả hai và ẩn cả hai trường
  4. Đọc bảng cảnh báo — bảng này nêu các kiểm tra đang thất bại và các review đang chờ, nhưng không chặn bạn
  5. Nhấn nút hợp nhất trong bảng để xác nhận

Hợp nhất là không thể đảo ngược: thao tác này đẩy commit lên máy chủ mã, nên nó có một bước xác nhận thay vì một mục hoàn tác. Sau đó bộ nhớ đệm của PR bị vô hiệu hóa, trạng thái của nó chuyển thành Đã merge và một sự kiện PullRequestStatusChanged được phát với trạng thái merged. Sự kiện đó giải phóng worktree tạm thời của “mở trong trình soạn thảo” và khởi động hai quy trình có sẵn: Stale repository cleanup, quy trình này xóa các worktree cũ và thư mục hội thoại của PR, và Release notes, quy trình này soạn một mục trong nhật ký thay đổi.

Menu tràn ⋯ trên tab Tổng quan chứa Hỏi AI, mục này khởi động quy trình pr_review có sẵn cho PR này. Mục chỉ xuất hiện khi PR còn mở. Xem Dùng đánh giá hỗ trợ AI để biết quy trình làm gì và cách xuất bản các phát hiện của nó, và Tính toán đánh giá để hiểu mô hình cohort và trục tất định.

Control Center cũng nhập các PR do con người mở bên ngoài ứng dụng. Quy trình review ở trên là như nhau. Các PR bên ngoài được dịch vụ thăm dò PR phát hiện.