Gửi nội dung thay đổi mã

Trang này mô tả toàn bộ quy trình gửi thay đổi mã cho Android Dự án nguồn mở (AOSP), bao gồm cả cách yêu cầu xem xét và theo dõi các thay đổi của bạn.

AOSP dựa vào Gerrit, một hệ thống đánh giá mã dựa trên nền tảng web cho các dự án sử dụng Git.

Ký thoả thuận cấp phép của cộng tác viên

Trước khi đóng góp bất kỳ nội dung thay đổi nào về mã cho AOSP, bạn phải đọc Thoả thuận cấp phép và tiêu đề của cộng tác viên và ký một trong các thoả thuận sau:

Bắt đầu một nhánh

Đối với mỗi thay đổi mã mà bạn định thực hiện, hãy thực hiện các bước sau:

  1. Bắt đầu một nhánh mới trong kho lưu trữ Git liên quan. Nhánh không phải là bản sao của các tệp gốc; nó là một con trỏ đến một cam kết cụ thể, điều này khiến tạo các nhánh cục bộ và chuyển đổi giữa các nhánh đó một thao tác đơn giản. Theo bằng cách sử dụng các nhánh, bạn có thể xác định các thay đổi khác nhau. Chạy lệnh này để bắt đầu một nhánh:

    repo start BRANCH_NAME
    

    Bạn có thể khởi động một số nhánh độc lập cùng lúc trong cùng một kho lưu trữ. Nhánh BRANCH_NAME nằm ở địa phương của bạn không gian làm việc và không được đưa vào trên Gerrit hay trong cây nguồn cuối cùng. Các nhánh cũng dành riêng cho dự án bạn đang thực hiện, vì vậy nếu bạn cần thay đổi tệp trong các dự án khác nhau như một phần của cùng một thay đổi, bạn sẽ cần một nhánh trong mỗi dự án mà bạn thay đổi tệp.

  2. (không bắt buộc) Xác minh rằng nhánh đã được tạo:

    repo status .
    

    Bạn sẽ thấy nhánh mới được tạo. Ví dụ:

    project frameworks/native/                      branch mynewbranch
    

Thực hiện và thử nghiệm thay đổi của bạn

Hãy làm theo các bước sau để thực hiện và thử nghiệm thay đổi của bạn:

  1. Để đảm bảo bạn đang làm việc với cơ sở mã mới nhất, hãy đồng bộ hoá toàn bộ cơ sở mã:

    repo sync
    

    Nếu bạn gặp bất kỳ xung đột nào trong quá trình đồng bộ hoá, hãy tham khảo các bước 2-4 của Giải quyết xung đột khi đồng bộ hoá.

  2. Tìm mã cần thay đổi. Để tìm mã, hãy cân nhắc sử dụng Tìm kiếm mã Android Bạn có thể dùng thiết bị Android Code Search để xem mã nguồn AOSP (Dự án nguồn mở Android) khi mã được bố trí khi bạn thực sự sử dụng nó. Để biết thêm thông tin, hãy xem Bắt đầu với Tìm kiếm mã. Để xem tất cả mã trong nhánh main trong tìm kiếm mã Android, chuyển đến https://cs.android.com/android/platform/superproject/main.

  3. Sửa đổi hoặc thêm tệp nguồn. Đối với mọi thay đổi:

  4. Xây dựng Android.

  5. Kiểm thử bản dựng.

Giai đoạn thực hiện và cam kết thay đổi của bạn

cam kết là đơn vị kiểm soát bản sửa đổi cơ bản trong Git và bao gồm một ảnh chụp nhanh cấu trúc thư mục và nội dung tệp của toàn bộ dự án. Thực hiện theo các bước sau để cam kết thay đổi của bạn:

  1. Theo mặc định, Git đăng ký nhưng không theo dõi các thay đổi mà bạn thực hiện. Người nhận hướng dẫn Git theo dõi các thay đổi của mình, bạn phải đánh dấu hoặc sắp xếp các thay đổi đó cho đưa vào cam kết. Chạy lệnh này để triển khai thay đổi:

    git add -A
    

    Lệnh này theo dõi các thay đổi mà bạn đã thực hiện đối với bất kỳ tệp nào.

  2. Lấy các tệp trong vùng chạy thử và lưu trữ hoặc lưu trữ các tệp đó trong thiết bị cơ sở dữ liệu:

    git commit -s
    

    Theo mặc định, một trình chỉnh sửa văn bản sẽ mở ra và bạn sẽ được nhắc cung cấp thông báo cam kết.

  3. Cung cấp thông báo cam kết theo định dạng sau:

    • Dòng 1: Dòng tiêu đề. Cung cấp bản tóm tắt 1 dòng về nội dung thay đổi (50 ký tự) tối đa). Hãy cân nhắc sử dụng tiền tố để mô tả khu vực bạn đã thay đổi, theo sau bằng nội dung mô tả về thay đổi bạn đã thực hiện trong cam kết này, chẳng hạn như ví dụ về thay đổi giao diện người dùng:

      ui: Removes deprecated widget
      
    • Dòng 2: Dòng trống. Theo sau tiêu đề bằng một dòng trống.

    • Dòng 3: Nội dung. Cung cấp một nội dung mô tả dài cố định trong 72 ký tự tối đa. Mô tả vấn đề mà sự thay đổi đó giải quyết và cách thức. Mặc dù cơ thể không bắt buộc, nhưng thông tin này rất hữu ích cho những người cần tham khảo lại sự thay đổi này. Đừng quên kèm theo một ghi chú ngắn gọn về mọi giả định hoặc thông tin cơ bản có thể quan trọng khi một cộng tác viên khác sử dụng tính năng này.

    Để đọc blog về phần mô tả cam kết phù hợp (kèm theo ví dụ), hãy xem Cách viết thông báo xác nhận Git.

  4. Lưu cam kết.

Một mã thay đổi duy nhất cùng với tên và email của bạn, vốn là được cung cấp trong repo init sẽ tự động được thêm vào thông báo cam kết của bạn.

Tải nội dung thay đổi lên để được xem xét

Sau khi bạn thực hiện thay đổi đối với lịch sử Git cá nhân, hãy tải lên Gerrit:

  1. Chạy lệnh sau để tải lên tất cả các cam kết của bạn trong tất cả dự án:

    repo upload
    

    Mọi thay đổi trong tất cả dự án đều được đưa vào tệp tải lên.

    Bạn được nhắc chạy tập lệnh hook.

  2. Nhấn phím a rồi nhấn phím Enter.

    Bạn được nhắc phê duyệt quá trình tải lên:

    Upload project frameworks/native/ to remote branch main:
    branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
           ff46b36d android codelab change
    to https://android-review.googlesource.com/ (y/N)?
    
  3. Nhấn phím y rồi nhấn phím Enter để phê duyệt quá trình tải lên.

Bạn sẽ nhận được một thông báo tương tự như remote: SUCCESS.

Yêu cầu xem xét

Sau khi tải lên thành công, Repo cung cấp cho bạn một đường liên kết đến các thay đổi của bạn trong Gerrit. Nhấp vào đường liên kết để xem các thay đổi của bạn trên máy chủ xem xét, thêm nhận xét, hoặc yêu cầu người dùng đánh giá cụ thể về thay đổi của bạn. Tất cả các thay đổi đối với mã phải được chủ sở hữu mã thích hợp xem xét. Cách yêu cầu xem xét:

  1. Trong Gerrit, hãy nhấp vào CHỦ SỞ HỮU SUGGEST:

    Đề xuất đường liên kết đến chủ sở hữu trong Gerrit

    Hình 1. Đề xuất đường liên kết đến chủ sở hữu trong Gerrit.

    Hộp thoại người đánh giá sẽ xuất hiện. Hộp thoại này chứa danh sách chủ sở hữu mã có thể xem lại thay đổi của bạn.

  2. Nhấp vào chủ sở hữu mã để thêm họ vào bài đánh giá của bạn.

    Nút SEND đã được kích hoạt.

  3. (Tùy chọn) Nhập địa chỉ email của bất kỳ người nào khác mà bạn muốn xem lại thay đổi.

  4. (Không bắt buộc) Nhấp vào dấu +1 bên cạnh mục Tự động gửi để tự động gửi nội dung thay đổi sau khi được phê duyệt. Nếu bạn không nhấp vào nút này, nhân viên của Google phải gửi thay đổi cho bạn.

  5. Nhấp vào GỬI để gửi nội dung thay đổi cho chúng tôi xem xét.

Chủ sở hữu mã xem xét các thay đổi đối với mã của bạn và đưa ra ý kiến phản hồi để bạn hoặc phê duyệt các thay đổi.

Xác định trạng thái thay đổi

Để xác định trạng thái của các tệp trong thay đổi của bạn, hãy kiểm tra các biểu tượng sau bên cạnh các tệp trong thay đổi:

  • (dấu kiểm) biểu tượng): Được chủ sở hữu mã phê duyệt
  • (biểu tượng chữ thập): Không được chủ sở hữu mã phê duyệt
  • (đồng hồ biểu tượng): Đang chờ chủ sở hữu mã phê duyệt

Hình sau đây cho thấy các biểu tượng trạng thái này được áp dụng cho các tệp có thay đổi:

Ví dụ về các tệp có biểu tượng cho thấy sự phê duyệt của chủ sở hữu mã

Hình 2. Ví dụ về các tệp có biểu tượng thể hiện sự phê duyệt của chủ sở hữu mã.

Giải quyết phản hồi và tải thay đổi thay thế lên

Nếu người đánh giá yêu cầu sửa đổi nội dung cập nhật của bạn, bạn có thể sửa đổi cam kết của mình trong Git, dẫn đến một tập hợp bản vá mới trên cùng thay đổi.

Để giải quyết ý kiến phản hồi và sửa đổi nội dung thay đổi, hãy làm như sau:

  1. Làm theo các bước từ 2 đến 4 trong bài viết Thực hiện và thử nghiệm thay đổi.

  2. Chạy các lệnh sau để sửa đổi thay đổi của bạn:

    git add -A
    git commit --amend
    
  3. Tải thay đổi của bạn lên.

Khi bạn tải nội dung thay đổi đã sửa đổi lên, nội dung thay đổi này sẽ thay thế cả bản gốc trên Gerrit và trong lịch sử Git cục bộ của bạn.

Giải quyết xung đột khi đồng bộ hoá

Nếu các thay đổi khác được gửi tới cây nguồn xung đột với của bạn, bạn sẽ nhận được một thông báo cho biết các bạn có xung đột. Cách giải quyết xung đột:

  1. Đảm bảo bạn đang dùng đoạn mã mới nhất:

    repo sync .
    

    Lệnh repo sync tìm nạp nội dung cập nhật từ máy chủ nguồn, sau đó sẽ tự động đặt lại HEAD vào thiết bị điều khiển từ xa HEAD mới.

  2. Nếu quá trình gửi lại cơ sở dữ liệu tự động không thành công, hãy tiến hành khôi phục cơ sở dữ liệu theo cách thủ công:

    repo rebase .
    
  3. Giải quyết xung đột hợp nhất. Nếu bạn không có phương pháp ưu tiên để giải quyết xung đột hợp nhất, bạn có thể sử dụng git mergetool để khắc phục xung đột giữa các tệp theo cách thủ công.

  4. Khi bạn đã khắc phục thành công các tệp xung đột, hãy chạy lệnh này để áp dụng các thay đổi mới:

    git rebase --continue
    

Gửi nội dung thay đổi

Sau khi người dùng gửi biểu mẫu, chúng tôi sẽ trải qua quy trình xem xét và xác minh, người đánh giá của Google phải gửi mã này cho bạn. Lý do khác người dùng có thể chạy repo sync để kéo bản cập nhật vào các thiết bị khách hàng.

Sau khi hợp nhất nội dung gửi, bạn có thể truy cập vào Tích hợp liên tục với Android trang tổng quan để theo dõi thời điểm nội dung gửi của bạn được tích hợp vào cây.