Tham chiếu lệnh Repo

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 --help
Ví 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ại https://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ới git 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ó.