Điều kiện tiên quyết
- Một repository đã được kết nối trong thiết lập Review trên GitHub, GitLab, Bitbucket hoặc AWS CodeCommit. Azure DevOps chưa được hỗ trợ.
- Vai trò Admin của workspace để thay đổi thiết lập (xem Vai trò).
- Một kết nối nhà cung cấp có thể push nhánh mới và mở MR/PR. Trên GitHub, GitLab và Bitbucket, các scope ghi trong Xác thực nhà cung cấp đã bao gồm điều này. Trên AWS CodeCommit, thêm
codecommit:GitPushvàcodecommit:CreatePullRequestvào policy của script thiết lập, theo các bước trong What the script creates ở AWS CodeCommit. - Trên GitLab, một webhook có bật Push events, bên cạnh các trigger thông thường (xem Cấu hình webhook). GitHub, Bitbucket và CodeCommit gửi các lần push lên nhánh đích với thiết lập webhook bạn đã có.
Bật tự động giải quyết
1
Mở cài đặt Review
Vào Review → Settings và tìm mục Review. Các thiết lập ở đây áp dụng cho mọi repository trong workspace.
2
Bật Auto-resolve conflicts
Bật Auto-resolve conflicts.Trạng thái thành công: công tắc giữ ở trạng thái bật. Lần tới khi một MR/PR đang mở xung đột với nhánh đích, CloudThinker đăng một bình luận trạng thái trên đó.Bật công tắc không quét lại các MR/PR đã xung đột từ trước. CloudThinker chỉ xử lý MR/PR đó vào lần tới khi nhận được sự kiện liên quan (xem bảng bên dưới).
Mỗi lần giải quyết là một lượt chạy agent và dùng credit (xem mức sử dụng và credit). Thiết lập này chỉ quyết định CloudThinker có giải quyết xung đột hay không. Tính năng phát hiện luôn bật: dù thiết lập bật hay tắt, MR/PR bị xung đột vẫn có huy hiệu Conflict màu đỏ trên Review → Reviews.
Cách giải quyết hoạt động
Xung đột thường xuất hiện sau khi có người push lên nhánh đích (hoặc nhánh nguồn của bạn) và hai nhánh không còn merge sạch được. Khi đó CloudThinker:- Đăng bình luận CloudThinker Conflict Resolution In Progress trên MR/PR của bạn.
- Tạo một nhánh từ nhánh nguồn của MR/PR, đặt tên
cloudthinker/mr-<MR/PR number>-thread-resolve-conflict-<provider>-<project id>-<MR/PR number>, và merge nhánh đích mới nhất vào đó. Với MR !42 trong project GitLab 1234, tên nhánh làcloudthinker/mr-42-thread-resolve-conflict-gitlab-1234-42. CloudThinker không bao giờ rebase, nên lịch sử của bạn được giữ nguyên. - Giải quyết từng xung đột văn bản bằng chỉnh sửa của agent, và giữ phía MR/PR của bạn khi tệp bị đổi tên, bị xóa, được thêm ở cả hai phía, hoặc là tệp nhị phân.
- Kiểm tra rằng kết quả chứa các commit mới nhất từ cả hai nhánh, rồi push.
- Mở một MR/PR tiếp theo có tiêu đề
fix: resolve merge conflicts for <your MR/PR>nhắm vào nhánh nguồn của bạn, và liên kết đến nó từ bình luận trạng thái và liên kết Resolution MR (hoặc Resolution PR) trên danh sách Reviews.
Merge MR/PR tiếp theo
1
Mở MR/PR tiếp theo
Nhấn liên kết trong bình luận trạng thái, hoặc Resolution MR bên cạnh MR/PR trên Review → Reviews.
2
Review phần giải quyết
Đọc diff như với bất kỳ thay đổi nào. CloudThinker không chạy code review trên các nhánh tiếp theo do chính nó tạo, nên hãy chờ CI chạy thành công trên MR/PR tiếp theo trước khi merge. MR/PR tiếp theo nhắm vào nhánh nguồn của bạn, không phải nhánh mặc định, nên nếu CI không chạy trên MR/PR vào nhánh tính năng, hãy kiểm thử cục bộ.
3
Merge vào nhánh nguồn
Merge trên nhà cung cấp của bạn.Trạng thái thành công: MR/PR gốc của bạn lại hiển thị là có thể merge, và huy hiệu Conflict biến mất khi nhà cung cấp kiểm tra lại.
Merge MR/PR tiếp theo bằng merge commit, trên mọi nhà cung cấp. Squash merge và rebase merge đều làm mất lịch sử merge mà nhà cung cấp cần để coi xung đột ban đầu là đã giải quyết. Nếu quy tắc nhánh chỉ cho phép squash hoặc rebase, hãy merge nhánh tiếp theo vào nhánh nguồn cục bộ bằng
git merge rồi push.Bình luận trạng thái
CloudThinker giữ một bình luận trạng thái duy nhất trên MR/PR của bạn và chỉnh sửa trực tiếp trên đó:
Bình luận trạng thái trên một MR GitLab khi MR/PR tiếp theo đã sẵn sàng
@cloudthinker-ai autofix sửa các phát hiện của review, không phải xung đột (xem Lệnh mention).
Khắc phục sự cố
Tôi không thấy Auto-resolve conflicts trong cài đặt
Tôi không thấy Auto-resolve conflicts trong cài đặt
Nguyên nhân: công tắc bị ẩn trong hai trường hợp: repository của bạn nằm trên Azure DevOps (chưa được hỗ trợ), hoặc tính năng tự động giải quyết chưa được bật cho phiên bản CloudThinker của bạn. Vai trò của bạn không làm ẩn công tắc. Cách khắc phục: trên Azure DevOps, hãy giải quyết xung đột trên nhà cung cấp như bình thường. Nếu không, hãy liên hệ bộ phận hỗ trợ CloudThinker.
Tôi thấy On hoặc Off thay vì công tắc
Tôi thấy On hoặc Off thay vì công tắc
Nguyên nhân: vai trò workspace của bạn không phải Admin, nên dòng này hiển thị On hoặc Off thay cho công tắc. Cách khắc phục: nhờ một Admin của workspace bật tính năng.
Một MR/PR bị xung đột không nhận được bình luận trạng thái
Một MR/PR bị xung đột không nhận được bình luận trạng thái
Kiểm tra: tính năng tự động giải quyết đang bật và MR/PR đang mở. CloudThinker chỉ xử lý các MR/PR đã theo dõi, nên CloudThinker phải từng nhận được webhook cho MR/PR đó.Cách khắc phục: push một commit lên nhánh nguồn của MR/PR. Thao tác này gửi cho CloudThinker một sự kiện mới, và CloudThinker kiểm tra xung đột trước khi review.
Bình luận báo Failed
Bình luận báo Failed
Nguyên nhân: có điều gì đó làm gián đoạn lượt chạy trước khi kịp push, chẳng hạn lỗi mạng. Cách khắc phục: lần push tiếp theo lên nhánh nguồn hoặc nhánh đích sẽ thử lại, và cùng bình luận đó chuyển lại thành In Progress. Nếu không thể chờ, hãy giải quyết xung đột trên nhà cung cấp của bạn.
MR/PR gốc vẫn báo xung đột sau khi merge MR/PR tiếp theo
MR/PR gốc vẫn báo xung đột sau khi merge MR/PR tiếp theo
Nguyên nhân: MR/PR tiếp theo đã được merge bằng squash hoặc rebase. Cách khắc phục: giải quyết phần xung đột còn lại trên nhà cung cấp, và lần sau hãy merge MR/PR tiếp theo bằng merge commit.
Bước tiếp theo
Không gian Review
Phát hiện các MR/PR bị xung đột và mở MR/PR tiếp theo từ danh sách Reviews.
Lệnh mention
Sửa các phát hiện của review từ bình luận MR/PR bằng autofix.