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ữ. Để có một giải thích về mối quan hệ giữa Repo và Git, xem Công cụ kiểm soát nguồn. Để biết thêm chi tiết về Repo, hãy xem README của Repo
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 vuông []. Ví dụ: nhiều lệnh sẽ 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 các thư mục nguồn trên máy cho 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ề
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
đối với 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 .repo/
thư mục có kho lưu trữ Git cho mã nguồn Repo và
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. Thông tin chung tệp kê khai được tìm thấy tạihttps://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 là đã chọn, giá trị mặc định 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 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
không có đối số nên sẽ đồng bộ hoá các tệp của 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
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.Nếu dự án đã được đồng bộ hoá trước đó, thì
repo sync
sẽ tương đương thành:git remote update git rebase origin/branch
Trong đó branch là nhánh thanh toán hiện tại trong thư mục dự án. Nếu chi nhánh địa phương không theo dõi một nhánh trên điều khiển từ xa kho lưu trữ thì quá trình đồng bộ hoá sẽ không diễn ra đối với dự án.
Sau khi chạy thành công repo sync
, mã trong các dự án được chỉ định sẽ là
đượ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. Lựa chọn này là hữu ích nếu dự án thuộc một nhánh chủ đề, nhưng bản sửa đổi tệp kê khai là cần thiết tạm thời.-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ỏ quá trình đồng bộ hoá giữa các chuỗi cho hoàn thành nhanh hơn. Đảm bảo bạn không làm máy bị quá tải (hãy để lại CPU) dành riêng cho các tác vụ khác. Để xem số CPU hiện có, trước tiên, hãy chạynproc --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
.
tải lên
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ộ thành các nhánh từ xa được cập nhật trong lần đồng bộ hoá Repo gần đây nhất. Repo 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 cam kết 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 để cho phép tải lên uỷ quyền. Cách 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ủ của mình, Gerrit sẽ xoay từng
thực hiện một thay đổi để người đánh giá có thể nhận xét về một cam kết cụ thể.
Để kết hợp nhiều 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 bạn chạy quy trình tải lên.
Nếu bạn chạy repo upload
mà không có đối số, hàm này sẽ tìm kiếm trong tất cả dự án
các thay đổi cần tải lên.
Để chỉnh sửa nội dung thay đổi sau khi tải lên, hãy 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
hoàn thành:
- 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 --cbr
gọi tắt).
khác biệt
repo diff [project-list]
Cho thấy những thay đổi nổi bật giữa chế độ xác nhận 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 được chỉ định xuống từ hệ thống xem xét và cung cấp thay đổi đó trong thư mục đang làm việc trên máy của dự án.
Ví dụ: để tải xuống
thay đổi 23823 thành
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
.
tất cả
repo forall [project-list] -c command
Thực thi lệnh shell đã cho trong mỗi dự án. Các tính năng bổ sung sau
các biến môi trường 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 trong tệp kê khai, được dịch sang nhánh theo dõi cục bộ. Dùng biến này nếu bạn cần truyền tệp kê khai bản sửa đổi cho 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 viết ra 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 vị trí shell tham số.-p
: Hiện tiêu đề dự án trước kết quả của lệnh được chỉ định. Đây là đạt được bằng cách liên kết các đường ống với các dòng stdin, stdout và sterr của lệnh, và dẫn tất cả đầu ra vào một luồng liên tục được hiển thị trong một trang đơn phiên hoạt động.-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.
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 bạn đang thực hiện
đang cố gắng thực hiện các dự án. Nếu bạn không biết, hãy cân nhắc việc sử dụng tên đó
default
.
Đối số project-list
chỉ định những dự án tham gia chủ đề này
nhánh.
trạng thái
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 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 .
. Trạng thái
được liệt kê theo dự án. Đối với mỗi tệp trong dự án, ký tự gồm hai chữ cái
mã được sử dụng.
Trong cột đầu tiên, một chữ cái viết hoa cho biết sự khác biệt giữa vùng sử dụng thử nghiệm từ 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 nằm trong HEAD, trong chỉ mục |
M | Ngày sửa đổi | Trong HEAD, đã sửa đổi trong chỉ mục |
D | Đã xoá | Trong HEAD, không có trong chỉ mục |
R | Đã đổ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; yêu cầu độ phân giải |
Ở 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 | 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 dùng 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ã cam kết, bắt đầu một nhánh mới rồi hợp nhất nhánh đó.