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, hãy xem phần Công cụ quản lý nguồn. Để biết thêm thông tin chi tiết về Repo, hãy xem README về Repo
Cách sử dụng Repo có dạng như sau:
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
Cung cấp 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ể, trong đó chỉ định một lệnh làm tuỳ chọn:
repo help command
Ví dụ: lệnh sau đây sẽ trả về 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 các 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 tiêu chuẩn.
Tuỳ chọn:
-u
: Chỉ định URL để truy xuất kho lưu trữ tệp kê khai. Tệp kê khai chung nằm ởhttps://android.googlesource.com/platform/manifest
.-m
: Chọn một tệp kê khai trong kho lưu trữ. Nếu bạn không chọn tên tệp kê khai, tên mặc định sẽ làdefault.xml
.-b
: Chỉ định một bản sửa đổi, tức 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ả các kho lưu trữ Git. Nếu bạn chạy repo sync
mà không có đối số, thì lệnh này sẽ đồng bộ hoá các tệp cho tất cả dự án.
Khi bạn chạy repo sync
, điều này sẽ xảy ra:
Nếu dự án chưa bao giờ được đồng bộ hoá, thì
repo sync
tương đương vớigit 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
tương đương với:git remote update git rebase origin/branch
Trong đó, branch là nhánh đã kiểm tra 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ì dự án sẽ không đồng bộ hoá.
Sau khi chạy thành công repo sync
, 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 tuỳ chọn chính:
-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 đang ở một nhánh chủ đề, nhưng bạn cần tạm thời 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
: Phân tách quá trình đồng bộ hoá trên các luồng để hoàn tất nhanh hơn. Đảm bảo bạn không làm quá tải máy – hãy để một số CPU dành riêng cho các tác vụ khác. Để xem số lượng CPU có sẵn, trước tiên, hãy chạynproc --all
.-q
: Chạy thầm bằng cách ngăn chặn thông báo trạng thái.-s
: Đồng bộ hoá với một bản dựng đã biết là tốt như được chỉ định bởi phần tửmanifest-server
trong tệp kê khai hiện tại.
Để biết thêm tuỳ chọn, hãy chạy repo help sync
.
tải lên
repo upload [project-list]
Tải các thay đổi lên máy chủ xem xét. Đố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 một 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 để sử dụng qua HTTPS, hãy truy cập vào Trình tạo mật khẩu.
Khi nhận được dữ liệu đối tượng qua máy chủ, Gerrit sẽ biến mỗi thay đổi thành một thay đổi để người đánh giá có thể nhận xét về một thay đổi cụ thể.
Để kết hợp nhiều thay đổi tại điểm kiểm tra thành một thay đổi 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 tất cả các dự án để tìm thay đổi cần tải lê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ập nhật là nhánh đã được kiểm tra hiện tại.
- Sử dụng
repo upload --replace PROJECT
để mở trình chỉnh sửa so khớp thay đổi. Đối với mỗi thay đổi trong chuỗi thay đổi, hãy nhập mã thay đổi Gerrit vào 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 tải lên xong, các thay đổi sẽ có thêm một bộ bản vá.
Nếu bạn chỉ muốn tải nhánh Git hiện đang được kiểm tra lên, hãy sử dụng cờ --current-branch
(viết tắt là --cbr
).
Đối với các thay đổi có liên quan, bạn nên giữ tất cả các CL trong cùng một chủ đề. Bạn có thể thêm tên chủ đề trong khi tải lên bằng --topic=TOPIC
. Hoặc bạn chỉ cần truyền -t
để đặt tên chủ đề giống với tên nhánh cục bộ.
diff
repo diff [project-list]
Cho thấy các thay đổi nổi bật giữa thay đổi và cây hoạt động bằng cách sử dụng git diff
.
tải xuống
repo download target change
Tải thay đổi đã chỉ định xuống từ hệ thống xem xét và cung cấp thay đổi đó trong thư mục làm việc cục bộ của dự án.
Ví dụ: để tải xuống
thay đổi 23823 vào
thư mục platform/build
:
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 git checkout m/main
.
forall
repo forall [project-list] -c command
Thực thi lệnh shell đã cho trong mỗi dự án. repo forall
cung cấp các biến môi trường bổ sung sau:
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 thư mục 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 trong tệp kê khai, được dịch sang một nhánh theo dõi cục bộ. Sử dụng biến này nếu bạn cần chuyể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, giống hệt như tên được viết trong tệp kê khai.
Tuỳ chọn:
-c
: Lệnh và đối số để thực thi. Lệnh được đánh giá thông qua/bin/sh
và mọi đối số sau lệnh này được truyền dưới dạng tham số vị trí của shell.-p
: Hiển thị tiêu đề dự án trước khi xuất lệnh đã chỉ định. Điều này được thực hiện bằng cách liên kết các ống với 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 hiển thị trong một phiên trình chuyển trang.-v
: Hiển thị thông báo mà lệnh ghi vào stderr.
mận khô
repo prune [project-list]
Xoá bỏ (xoá) các chủ đề đã được hợp nhất.
start
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 sử dụng tên default
.
Đối số project-list
chỉ định những dự án tham gia vào nhánh chủ đề này.
trạng thái
repo status [project-list]
So sánh cây đang hoạt động với vùng lưu trữ tạm thời (chỉ mục) và thay đổi gần đây nhất trên nhánh này (HEAD) trong mỗi dự án được chỉ định. Hiển thị một dòng tóm tắt cho mỗi tệp có sự khác biệt giữa ba 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 về trạng thái được liệt kê theo dự án. Đối với mỗi tệp trong dự án, một mã gồm hai chữ cái sẽ được sử dụng.
Trong cột đầu tiên, chữ cái viết hoa cho biết sự khác biệt giữa vùng lưu trữ trung gian với trạng thái đã cam kết gần đây nhất.
Letter | Ý nghĩa | Mô tả |
---|---|---|
- | Không có thay đổi | Giống nhau trong HEAD và chỉ mục |
A | Đã thêm | Không có trong phần tử HEAD, trong chỉ mục |
T2 | Ngày sửa đổi | Trong HEAD, đã sửa đổi trong chỉ mục |
D | Đã xoá | Trong phần tử HEAD, không phải trong chỉ mục |
R | Đã đổi tên | Không có trong HEAD, đường dẫn đã thay đổi trong chỉ mục |
C | Đã sao chép | Không có trong HEAD, được sao chép từ một phần tử khác trong chỉ mục |
T5 | Chế độ đã thay đổi | Nội dung giống nhau trong HEAD 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 có giải pháp |
Trong cột thứ hai, chữ 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 | Mô tả |
---|---|---|
- | Mới/không xác định | Không có trong chỉ mục, trong cây công việc |
m | Ngày sửa đổi | 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 ở đầu phiên. Để khôi phục, bạn có thể kiểm tra mã nhận dạng thay đổi, bắt đầu một nhánh mới rồi hợp nhất nhánh đó.