Quy trình làm việc của tính năng kiểm soát nguồn

Để xử lý mã Android, bạn cần sử dụng Git (một hệ thống quản lý phiên bản nguồn mở) và Repo (một công cụ quản lý kho lưu trữ do Google xây dựng, chạy trên Git). Hãy xem phần Công cụ kiểm soát nguồn để biết nội dung giải thích về mối quan hệ giữa Repo và Git cũng như các đường liên kết đến tài liệu hỗ trợ cho từng công cụ.

Flow

Quy trình phát triển Android bao gồm quy trình làm việc cơ bản sau:

  1. Bắt đầu một nhánh chủ đề mới bằng repo start.
  2. Chỉnh sửa tệp.
  3. Thay đổi giai đoạn bằng git add.
  4. Cam kết thay đổi bằng git commit.
  5. Tải các thay đổi lên máy chủ xem xét bằng repo upload.

Tasks

Khi làm việc với Git và Repo trong kho lưu trữ mã Android, bạn sẽ thực hiện các thao tác phổ biến sau.

Lệnh Mô tả
repo init Khởi chạy ứng dụng mới.
repo sync Đồng bộ hoá ứng dụng với kho lưu trữ.
repo start Bắt đầu một nhánh mới.
repo status Cho biết trạng thái của nhánh hiện tại.
repo upload Tải các thay đổi lên máy chủ xem xét.
git add Phân chia các tệp.
git commit Cam kết các tệp đã được đưa vào giai đoạn.
git branch Cho biết các nhánh hiện tại.
git branch [branch] Tạo một nhánh chủ đề mới.
git checkout [branch] Chuyển HEAD sang nhánh đã chỉ định.
git merge [branch] Hợp nhất [branch] vào nhánh hiện tại.
git diff Cho thấy sự khác biệt của các thay đổi chưa được đưa vào giai đoạn.
git diff --cached Cho thấy sự khác biệt của các thay đổi theo giai đoạn.
git log Cho biết nhật ký của nhánh hiện tại.
git log m/[codeline].. Cho biết các thay đổi chưa được đẩy.

Để biết thông tin về cách sử dụng Repo để tải nguồn xuống, hãy xem phần Tải nguồn xuốngTham khảo lệnh Repo.

Đồng bộ hoá ứng dụng

Cách đồng bộ hoá tệp cho tất cả dự án hiện có:

repo sync

Cách đồng bộ hoá tệp cho các dự án đã chọn:

repo sync PROJECT0 PROJECT1 ... PROJECTN

Tạo nhánh chủ đề

Bắt đầu một nhánh chủ đề trong môi trường làm việc cục bộ bất cứ khi nào bạn bắt đầu một thay đổi, chẳng hạn như khi bạn bắt đầu xử lý một lỗi hoặc tính năng mới. Nhánh chủ đề không phải là bản sao của các tệp gốc; đó là con trỏ đến một thay đổi cụ thể, giúp việc tạo các nhánh cục bộ và chuyển đổi giữa các nhánh đó trở thành một thao tác nhẹ. Bằng cách sử dụng các nhánh, bạn có thể tách biệt một khía cạnh của công việc với các khía cạnh khác. Để biết một bài viết thú vị về cách sử dụng nhánh chủ đề, hãy tham khảo bài viết Tách nhánh chủ đề.

Để bắt đầu một nhánh chủ đề bằng Repo, hãy chuyển đến dự án và chạy:

repo start BRANCH_NAME .

Dấu chấm ở cuối ( .) đại diện cho dự án trong thư mục đang hoạt động.

Cách xác minh rằng bạn đã tạo nhánh mới:

repo status .

Sử dụng nhánh chủ đề

Cách chỉ định nhánh cho một dự án cụ thể:

repo start BRANCH_NAME PROJECT_NAME

Để biết danh sách tất cả dự án, hãy tham khảo android.googlesource.com. Nếu bạn đã chuyển đến thư mục dự án, chỉ cần sử dụng dấu chấm để biểu thị dự án hiện tại.

Cách chuyển sang một nhánh khác trong môi trường làm việc cục bộ:

git checkout BRANCH_NAME

Cách xem danh sách các nhánh hiện có:

git branch

hoặc

repo branches

Cả hai lệnh đều trả về danh sách các nhánh hiện có, trong đó tên của nhánh hiện tại có dấu hoa thị (*) đứng trước.

Tệp Staging

Theo mặc định, Git sẽ nhận thấy nhưng không theo dõi các thay đổi mà bạn thực hiện trong một dự án. Để yêu cầu Git lưu giữ các thay đổi, bạn phải đánh dấu hoặc đưa vào giai đoạn các thay đổi đó để đưa vào một thay đổi.

Cách phân chia các thay đổi:

git add

Lệnh này chấp nhận các đối số cho tệp hoặc thư mục trong thư mục dự án. Mặc dù có tên như vậy, nhưng git add không chỉ thêm tệp vào kho lưu trữ Git; bạn cũng có thể dùng git add để lên lịch sửa đổi và xoá tệp.

Xem trạng thái ứng dụng

Cách liệt kê trạng thái của tệp:

repo status

Cách xem nội dung chỉnh sửa chưa được xác nhận (nội dung chỉnh sửa cục bộ không được đánh dấu để xác nhận):

repo diff

Để xem nội dung chỉnh sửa đã xác nhận (các nội dung chỉnh sửa được đánh dấu để xác nhận), hãy đảm bảo bạn đang ở thư mục dự án, sau đó chạy git diff với đối số cached:

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

Cam kết thay đổi

Ghi thay đổi là đơn vị cơ bản của tính năng kiểm soát bản sửa đổi trong Git và bao gồm một bản tổng quan nhanh về cấu trúc thư mục và nội dung tệp cho toàn bộ dự án. Sử dụng lệnh sau để tạo một thay đổi trong Git:

git commit

Khi được nhắc nhập thông báo cam kết, hãy cung cấp một thông báo ngắn (nhưng hữu ích) cho các thay đổi đã gửi đến AOSP. Nếu bạn không thêm thông báo cam kết, thì cam kết sẽ không thành công.

Tải các thay đổi lên Gerrit

Cập nhật lên bản sửa đổi mới nhất, sau đó tải nội dung thay đổi lên:

repo sync
repo upload

Các lệnh này sẽ trả về danh sách các thay đổi mà bạn đã cam kết và nhắc bạn chọn các nhánh để tải lên máy chủ xem xét. Nếu chỉ có một nhánh, bạn sẽ thấy một lời nhắc y/n đơn giản.

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

Nếu lệnh repo sync trả về xung đột đồng bộ hoá:

  1. Xem các tệp chưa hợp nhất (mã trạng thái = U).
  2. Chỉnh sửa các vùng xung đột nếu cần.
  3. Thay đổi sang thư mục dự án có liên quan. Thêm và xác nhận các tệp bị ảnh hưởng, sau đó đặt lại các thay đổi:
    git add .
    git commit
    git rebase --continue
    
  4. Sau khi quá trình căn chỉnh lại hoàn tất, hãy bắt đầu lại toàn bộ quá trình đồng bộ hoá:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

Dọn dẹp ứng dụng

Sau khi hợp nhất các thay đổi vào Gerrit, hãy cập nhật thư mục làm việc cục bộ, sau đó sử dụng repo prune để xoá các nhánh chủ đề cũ một cách an toàn:

repo sync
repo prune

Xoá ứng dụng

Vì tất cả thông tin trạng thái đều được lưu trữ trong ứng dụng, nên bạn chỉ cần xoá thư mục đó khỏi hệ thống tệp:

rm -rf WORKING_DIRECTORY

Việc xoá một khách hàng sẽ xoá vĩnh viễn mọi thay đổi mà bạn chưa tải lên để xem xét.