Repo bổ sung cho Git bằng cách đơn giản hóa công việc trên nhiều kho. Xem Công cụ kiểm soát nguồn để biết giải thích về mối quan hệ giữa Repo và Git. Để biết thêm chi tiết về Repo, hãy xem Repo README .
Repo sử dụng có dạng sau:
repo command options
Các phần tử tùy chọn đượ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]
Cứu giúp
Trang này chỉ làm nổi bật các tùy chọn chính. Xem trợ giúp về dòng lệnh để biết đầy đủ chi tiết. Khi Repo được cài đặt, bạn có thể tìm thấy tài liệu mới nhất bắt đầu bằng bản tóm tắt tất cả các lệnh bằng cách chạy:
repo help
Bạn có thể xem thông tin chi tiết về bất kỳ lệnh nào bằng cách chạy lệnh này trong cây Repo:
repo help command
Ví dụ, lệnh sau đây đưa ra mô tả và danh sách các tùy chọn cho đối số init
của Repo, đối số này sẽ khởi tạo Repo trong thư mục hiện tại. (Xem init để biết chi tiết.)
repo help init
Hoặc để chỉ xem danh sách các tùy chọn có sẵn, hãy chạy:
repo command --helpVí dụ:
repo init --help
trong đó
repo init -u url [options]
Cài đặt Repo trong thư mục hiện tại. Điều này tạo ra một thư mục .repo/
với các kho lưu trữ Git cho mã nguồn Repo và các tệp kê khai Android tiêu chuẩn.
Tùy chọn:
-
-u
: Chỉ định một URL để truy xuất kho lưu trữ tệp kê khai. Tệp kê khai phổ biến được tìm thấy tạihttps://android.googlesource.com/platform/manifest
. -
-m
: Chọn 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, mặc định làdefault.xml
. -
-b
: Chỉ định một bản sửa đổi, tức là một manifest-branch cụ thể.
Lưu ý: Đối với tất cả các lệnh Repo còn lại, thư mục làm việc hiện tại phải là thư mục mẹ của .repo/
hoặc một thư mục con của thư mục mẹ.
đồng bộ hóa
repo sync [project-list]
Tải xuống các thay đổi mới 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 việc 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ố, nó sẽ đồng bộ hóa các tệp cho tất cả các dự án.
Khi bạn chạy repo sync
, đây là những gì sẽ xảy ra:
Nếu dự án chưa bao giờ được đồng bộ hóa, thì
repo sync
tương đương vớigit clone
. Tất cả các nhánh trong kho lưu trữ từ xa được sao chép vào thư mục dự án cục bộ.Nếu dự án đã được đồng bộ hóa trước đó, thì
repo sync
tương đương với:git remote update git rebase origin/branch
nơi
branch
là nhánh hiện đã đăng xuất trong thư mục dự án cục bộ. Nếu chi nhánh cục bộ không theo dõi một chi nhánh trong kho lưu trữ từ xa, thì dự án sẽ không xảy ra đồng bộ hóa.Nếu thao tác Git rebase dẫn đến xung đột hợp nhất, hãy sử dụng các lệnh Git thông thường (ví dụ:
git rebase --continue
) để giải quyết xung đột.
Sau khi chạy thành công repo sync
kho, mã trong các dự án được chỉ định sẽ được cập nhật và được đồng bộ hóa với mã trong kho lưu trữ từ xa.
Đây là các tùy chọn chính. Xem repo help sync
để biết thêm:
-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. Điều này hữu ích nếu dự án hiện đang ở một nhánh chủ đề, nhưng tạm thời cần sửa đổi tệp kê khai.-f
: Tiến hành đồng bộ các dự án khác ngay cả khi một dự án không đồng bộ được.-j threadcount
: Tách đồng bộ giữa các luồng để hoàn thành nhanh hơn. Đảm bảo bạn không làm cho máy của mình bị choáng ngợp - 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ạy:nproc --all
-q
: Chạy nhẹ nhàng bằng cách chặn các thông báo trạng thái.-s
: Đồng bộ hóa với một bản dựng tốt đã biết như được chỉ định bởi phần tử manifest-server tệp kê khai trong tệp kê khai hiện tại.
tải lên
repo upload [project-list]
Đố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ộ 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.
Tất cả các cam kết trên các nhánh đã chọn sau đó sẽ được truyền tới Gerrit qua kết nối HTTPS. Bạn cần định cấu hình mật khẩu HTTPS để kích hoạt tính năng ủy quyền tải lên. Truy cập Trình tạo mật khẩu để tạo cặp tên người dùng / mật khẩu mới để sử dụng qua HTTPS.
Khi Gerrit nhận được dữ liệu đối tượng qua máy chủ của nó, nó sẽ biến mỗi cam kết thành 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 điểm kiểm tra thành một cam kết duy nhất, hãy sử dụng git rebase -i
trước khi bạn chạy tải lên.
Nếu bạn chạy repo upload
mà không có đối số, nó sẽ tìm kiếm tất cả các dự án để tìm các thay đổi để tải lên.
Để chỉnh sửa các thay đổi sau khi chúng được 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 cam kết cục bộ của bạn. Sau khi các chỉnh sửa của bạn hoàn tất:
- Xác minh rằng chi nhánh đã cập nhật là chi nhánh hiện đã được kiểm tra.
- Đố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 replacments # 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 hoàn tất, các thay đổi 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 đã kiểm tra, hãy sử dụng cờ --current-branch
(hoặc --cbr
viết tắt).
khác biệt
repo diff [project-list]
Hiển thị những thay đổi nổi bật giữa cam kết và cây làm việc bằng cách sử dụng git diff
.
Tải xuống
repo download target change
Tải xuống thay đổi được chỉ định từ hệ thống đánh giá và làm cho nó có sẵn trong thư mục làm việc cục bộ của dự án của bạn.
Ví dụ: để tải xuống thay đổi 23823 vào thư mục nền tảng / xây dựng của bạn:
repo download platform/build 23823
Chạy repo sync
loại bỏ bất kỳ cam kết nào được truy xuất với repo download
. Hoặc bạn có thể kiểm tra chi nhánh từ xa bằng git checkout m/master
.
Lưu ý: Có sự chậm trễ sao chép đối với tất cả các máy chủ trên toàn thế giới, vì vậy sẽ có độ trễ sao chép nhỏ giữa thời điểm thay đổi hiển thị trên web trong Gerrit và khi repo download
có thể tìm thấy thay đổi cho tất cả người dùng.
cho tất cả
repo forall [project-list] -c command
Thực hiện lệnh shell đã cho trong mỗi dự án. Các biến môi trường bổ sung sau được tạo sẵn bởi repo forall
:
REPO_PROJECT
được đặt thành tên duy nhất của dự án.REPO_PATH
là đường dẫn liên quan đến gốc của máy khách.REPO_REMOTE
là tên của hệ thống từ xa từ 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 nhánh theo dõi cục bộ. Sử dụng điều này nếu bạn cần chuyển bản sửa đổi tệp kê khai sang lệnh Git được thực thi cục bộ.REPO_RREV
là tên của bản sửa đổi từ tệp kê khai, chính xác như được viết trong tệp kê khai.
Tùy chọn:
-c
: Lệnh và các đối số để thực thi. Lệnh được đánh giá thông qua/bin/sh
và bất kỳ đối số nào sau khi nó được chuyển qua dưới dạng các tham số vị trí của trình bao.-p
: Hiển thị tiêu đề dự án trước đầu ra của lệnh được chỉ định. Điều này đạt được 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, và chuyển tất cả đầu ra thành một luồng liên tục được hiển thị trong một phiên máy nhắn tin duy nhất.-v
: Hiển thị thông báo lệnh ghi vào stderr.
tỉa cành
repo prune [project-list]
Prunes (xóa) 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 mô tả ngắn gọ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 dự án nào tham gia vào nhánh chủ đề này.
Lưu ý: Dấu chấm (.) Là viết tắt của dự án trong thư mục làm việc hiện tại.
trạng thái
repo status [project-list]
So sánh cây làm việc với khu vực dàn dựng (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 nơi có sự khác biệt giữa ba trạng thái này.
Để xem trạng thái của chi 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ột mã gồm hai chữ cái được sử dụng.
Trong cột đầu tiên, một chữ cái viết hoa cho biết khu vực tổ chức khác với trạng thái cam kết cuối cùng như thế nào.
Bức thư | Nghĩa | Sự mô tả |
---|---|---|
- | Không thay đổi | Giống nhau ở HEAD và chỉ mục |
Một | Thêm | Không có trong HEAD, trong chỉ mục |
M | Đã sửa đổi | Trong HEAD, được sửa đổi trong chỉ mục |
D | Đã xóa | Trong 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ừ người khác trong chỉ mục |
T | 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; độ phân giải yêu cầu |
Trong cột thứ hai, một ký tự viết thường cho biết thư mục làm việc khác với chỉ mục như thế nào.
Bức thư | Nghĩa | Sự mô tả |
---|---|---|
- | Mới / chưa biết | Không có trong chỉ mục, trong cây công việc |
m | Đã sửa đổi | Trong chỉ mục, trong cây công việc, đã sửa đổi |
d | Đã xóa | Trong chỉ mục, không phải trong cây công việc |
Xử lý lỗi repo
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 được chạy khi bắt đầu phiên. Để khôi phục, bạn có thể kiểm tra id cam kết, bắt đầu một nhánh mới và sau đó hợp nhất nó.