Tài liệu tham khảo về lệnh repo

Repo bổ sung cho Git bằng cách đơn giản hoá công việc trên nhiều kho lưu trữ. Để biết nội dung giải thích về mối quan hệ giữa Repo và Git, vui lòng xem Công cụ kiểm soát nguồn. Để biết thêm thông tin chi tiết về Repo, vui lòng xem Repo README

Việc sử dụng kho lưu trữ có hình thức sau đây:

repo command options

Các phần tử không bắt buộc được hiển thị trong dấu ngoặc []. Ví dụ: nhiều lệnh lấy project-list làm đối số. Bạn có thể chỉ định project-list dưới dạng danh sách tên hoặc danh sách đường dẫn đến thư mục nguồn cục bộ cho các dự án:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

trợ giúp

repo help

Trợ giúp về lệnh repo. Bạn có thể xem thông tin chi tiết về một lệnh Repo cụ thể chỉ định một lệnh làm tuỳ chọn:

repo help command

Ví dụ: lệnh sau đây tạo ra nội dung mô tả và danh sách các tuỳ chọn cho lệnh init:

repo help init

Hoặc để chỉ xem danh sách tuỳ chọn có sẵn cho một lệnh, hãy chạy:

repo command --help

Ví dụ:

repo init --help

khởi tạo

repo init -u url [options]

Cài đặt Repo trong thư mục hiện tại. Lệnh này tạo một thư mục .repo/ có kho lưu trữ Git cho mã nguồn Repo và các tệp kê khai Android chuẩn.

Tuỳ chọn:

  • -u: Chỉ định một URL để truy xuất kho lưu trữ tệp kê khai. Bạn có thể tìm thấy tệp kê khai phổ biến tại https://android.googlesource.com/platform/manifest.

  • -m: Chọn một tệp kê khai trong kho lưu trữ. Nếu không có tên tệp kê khai nào được chọn, giá trị mặc định sẽ là default.xml.

  • -b: Chỉ định một bản sửa đổi, đó là một manifest-branch cụ thể.

đồng bộ hóa

repo sync [project-list]

Tải các thay đổi mới xuống và cập nhật các tệp đang hoạt động trong môi trường cục bộ của bạn, về cơ bản là hoàn thành git fetch trên tất cả kho lưu trữ Git. Nếu bạn chạy repo sync mà không có đối số, thao tác này sẽ đồng bộ hoá các tệp cho mọi dự án.

Khi bạn chạy repo sync, dưới đây là những gì sẽ xảy ra:

  • Nếu dự án chưa từng được đồng bộ hoá, thì repo sync sẽ tương đương với git clone; tất cả các nhánh trong kho lưu trữ từ xa sẽ được sao chép vào thư mục dự án cục bộ.

  • Nếu dự án đã được đồng bộ hoá trước đó, thì repo sync sẽ tương đương với:

    git remote update
    git rebase origin/branch
    

    Trong đó branch là nhánh được thanh toán hiện tại trong thư mục dự án cục bộ. Nếu nhánh cục bộ không theo dõi một nhánh trong kho lưu trữ từ xa, thì sẽ không có quá trình đồng bộ hoá nào diễn ra cho dự án.

Sau khi chạy repo sync thành công, mã trong các dự án được chỉ định sẽ được cập nhật và đồng bộ hoá với mã trong kho lưu trữ từ xa.

Các lựa chọn quan trọng:

  • -c: Chỉ tìm nạp nhánh tệp kê khai hiện tại từ máy chủ.
  • -d: Chuyển các dự án đã chỉ định trở lại bản sửa đổi tệp kê khai. Tuỳ chọn này sẽ hữu ích nếu dự án thuộc một nhánh chủ đề, nhưng tạm thời cần sửa đổi tệp kê khai.
  • -f: Tiếp tục đồng bộ hoá các dự án khác ngay cả khi một dự án không đồng bộ hoá được.
  • threadcount: Chia nhỏ hoạt động đồng bộ hoá giữa các luồng để hoàn tất nhanh hơn. Đảm bảo bạn không làm máy bị quá tải – hãy để lại một lượng CPU dành riêng cho các tác vụ khác. Để xem số lượng CPU hiện có, trước tiên, hãy chạy nproc --all.
  • -q: Chạy yên tĩnh bằng cách chặn các thông báo trạng thái.
  • -s: Đồng bộ hoá với một bản dựng ổn định đã biết theo chỉ định của phần tử manifest-server trong tệp kê khai hiện tại.

Để có thêm tuỳ chọn, hãy chạy repo help sync.

upload

repo upload [project-list]

Tải các thay đổi lên máy chủ đánh giá. Đối với các dự án được chỉ định, Repo so sánh các nhánh cục bộ với các nhánh từ xa được cập nhật trong lần đồng bộ hoá Repo gần đây nhất. Repo sẽ nhắc bạn chọn một hoặc nhiều nhánh chưa được tải lên để xem xét.

Sau đó, tất cả các thay đổi trên các nhánh đã chọn sẽ được truyền đến Gerrit qua kết nối HTTPS. Bạn cần định cấu hình mật khẩu HTTPS để bật tính năng uỷ quyền tải lên. Để tạo một cặp tên người dùng/mật khẩu mới nhằm sử dụng qua HTTPS, hãy truy cập phần Trình tạo mật khẩu.

Khi nhận được dữ liệu đối tượng qua máy chủ của mình, Gerrit sẽ biến từng cam kết thành một thay đổi để nhân viên đánh giá có thể nhận xét về một cam kết cụ thể. Để kết hợp một số cam kết của điểm kiểm tra thành một lệnh xác nhận duy nhất, hãy sử dụng git rebase -i trước khi chạy quá trình tải lên.

Nếu bạn chạy repo upload mà không có đối số, thì lệnh này sẽ tìm kiếm các thay đổi cần tải lên trong mọi dự án.

Để chỉnh sửa các thay đổi sau khi tải lên, hãy sử dụng một công cụ như git rebase -i hoặc git commit --amend để cập nhật các thay đổi cục bộ. Sau khi bạn chỉnh sửa xong:

  • Xác minh rằng nhánh được cập nhật là nhánh hiện đã được kiểm tra.
  • Sử dụng repo upload --replace PROJECT để mở trình chỉnh sửa so khớp thay đổi.
  • Đối với mỗi cam kết trong chuỗi, hãy nhập ID thay đổi Gerrit bên trong dấu ngoặc:

    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacements
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

Sau khi quá trình tải lên hoàn tất, các thay đổi sẽ có một bộ bản vá bổ sung.

Nếu bạn chỉ muốn tải lên nhánh Git hiện đã được kiểm tra, hãy sử dụng cờ --current-branch (hoặc viết tắt là --cbr).

khác biệt

repo diff [project-list]

Cho thấy những thay đổi nổi bật giữa cam kết và cây hoạt động bằng git diff.

tải xuống

repo download target change

Tải thay đổi được chỉ định xuống từ hệ thống xem xét và đưa thay đổi đó vào thư mục đang làm việc trên máy của dự án.

Ví dụ: để tải thay đổi 23823 xuống thư mục platform/build của bạn:

repo download platform/build 23823

Việc chạy repo sync sẽ xoá mọi thay đổi được truy xuất bằng repo download. Hoặc bạn có thể xem nhánh từ xa bằng cách sử dụng git checkout m/main.

tất cả

repo forall [project-list] -c command

Thực thi lệnh shell đã cho trong mỗi dự án. Các biến môi trường bổ sung sau đây do repo forall cung cấp:

  • REPO_PROJECT được đặt thành tên duy nhất của dự án.
  • REPO_PATH là đường dẫn tương ứng với gốc của ứng dụng.
  • REPO_REMOTE là tên của hệ thống từ xa trong tệp kê khai.
  • REPO_LREV là tên của bản sửa đổi từ tệp kê khai, được dịch sang một nhánh theo dõi cục bộ. Hãy sử dụng biến này nếu bạn cần truyền bản sửa đổi tệp kê khai đến một lệnh Git được thực thi cục bộ.
  • REPO_RREV là tên của bản sửa đổi trong tệp kê khai, chính xác như được ghi trong tệp kê khai.

Tuỳ chọn:

  • -c: Lệnh và đối số cần thực thi. Lệnh này được đánh giá thông qua /bin/sh và mọi đối số sau khi được truyền dưới dạng tham số vị trí shell.
  • -p: Hiện tiêu đề dự án trước kết quả của lệnh được chỉ định. Điều này được thực hiện bằng cách liên kết các đường ống với các luồng stdin, stdout và sterr của lệnh, đồng thời chuyển tất cả đầu ra vào một luồng liên tục được hiển thị trong một phiên phân trang.
  • -v: Hiện các thông báo mà lệnh ghi vào stderr.

cắt tỉa

repo prune [project-list]

Mận (xoá) các chủ đề đã được hợp nhất.

bắt đầu

repo start branch-name [project-list]

Bắt đầu một nhánh mới để phát triển, bắt đầu từ bản sửa đổi được chỉ định trong tệp kê khai.

Đối số BRANCH_NAME cung cấp nội dung mô tả ngắn về thay đổi mà bạn đang cố gắng thực hiện đối với các dự án. Nếu bạn không biết, hãy cân nhắc dùng tên default.

Đối số project-list chỉ định những dự án nào tham gia vào nhánh chủ đề này.

status

repo status [project-list]

So sánh cây hoạt động với vùng thử nghiệm (chỉ mục) và cam kết gần đây nhất trên nhánh này (HEAD) trong mỗi dự án được chỉ định. Hiển thị dòng tóm tắt cho từng tệp có sự khác biệt giữa 3 trạng thái này.

Để chỉ xem trạng thái của nhánh hiện tại, hãy chạy repo status .. Thông tin trạng thái được liệt kê theo dự án. Đối với mỗi tệp trong dự án, mã gồm 2 chữ cái sẽ được sử dụng.

Trong cột đầu tiên, một chữ cái viết hoa cho biết khu vực sử dụng thử nghiệm khác với trạng thái đã cam kết gần đây nhất như thế nào.

Letter Ý nghĩa Nội dung mô tả
- Không có thay đổi Giống nhau trong HEAD và chỉ mục
Đáp Đã thêm Không nằm trong HEAD, trong chỉ mục
T2 Lần sửa đổi gần đây nhất Trong HEAD, đã sửa đổi trong chỉ mục
D Đã xoá Trong HEAD, không có trong chỉ mục
(phải) Đã đổi tên Không nằm trong phần tử HEAD, đường dẫn đã thay đổi trong chỉ mục
C Đã sao chép Không nằm trong phần tử HEAD, đã được sao chép từ một tệp khác trong chỉ mục
T5 Đã thay đổi chế độ Cùng một nội dung trong phần đầu và chỉ mục, chế độ đã thay đổi
U Chưa hợp nhất Xung đột giữa HEAD và chỉ mục; cần phải giải quyết

Ở cột thứ hai, một chữ cái viết thường cho biết sự khác biệt giữa thư mục đang hoạt động và chỉ mục.

Letter Ý nghĩa Nội dung mô tả
- Mới/không xác định Không có trong chỉ mục, trong cây công việc
m Lần sửa đổi gần đây nhất Trong chỉ mục, trong cây công việc, đã sửa đổi
ngày Đã xoá Trong chỉ mục, không phải trong cây công việc

Xử lý lỗi kho lưu trữ

git commit -a # Commit local changes first so they aren't lost.
repo start branch-name # Start the branch
git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start
repo upload .

Lỗi repo: error: no branches ready for upload xuất hiện khi lệnh repo start không chạy khi bắt đầu phiên. Để khôi phục, bạn có thể kiểm tra mã nhận dạng cam kết, bắt đầu một nhánh mới rồi hợp nhất nhánh đó.