Repo uzupełnia Git, upraszczając pracę w wielu repozytoriach. Aby uzyskać wyjaśnienie związku między repozytorium a Git, zobacz Narzędzia kontroli źródła . Aby uzyskać więcej informacji na temat repozytorium, zobacz plik README dotyczący repozytorium .
Wykorzystanie repo przyjmuje następującą formę:
repo command options
Elementy opcjonalne przedstawiono w nawiasach []. Na przykład wiele poleceń przyjmuje project-list jako argument. Możesz określić project-list jako listę nazw lub listę ścieżek do lokalnych katalogów źródłowych dla projektów:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
Wsparcie
Ta strona przedstawia jedynie kluczowe opcje. Szczegółowe informacje można znaleźć w pomocy wiersza poleceń. Po zainstalowaniu Repo najnowszą dokumentację można znaleźć, zaczynając od podsumowania wszystkich poleceń, uruchamiając:
repo help
Możesz zobaczyć szczegółowe informacje o dowolnym poleceniu, uruchamiając to w drzewie repozytoriów:
repo help command
Na przykład następujące polecenie daje opis i listę opcji dla argumentu init
Repo, który inicjuje Repo w bieżącym katalogu. (Zobacz init, aby uzyskać szczegółowe informacje).
repo help init
Lub aby zobaczyć tylko listę dostępnych opcji, uruchom:
repo command --helpNa przykład:
repo init --help
w tym
repo init -u url [options]
Instaluje repozytorium w bieżącym katalogu. Spowoduje to .repo/
katalogu .repo/
z repozytoriami Git dla kodu źródłowego Repo i standardowych plików manifestu systemu Android.
Opcje:
-
-u
: Określ adres URL, z którego należy pobrać repozytorium manifestu. Wspólny manifest można znaleźć podhttps://android.googlesource.com/platform/manifest
. -
-m
: Wybierz plik manifestu w repozytorium. Jeśli nie wybrano nazwy manifestu, domyślną nazwą jestdefault.xml
. -
-b
: Określ wersję, czyli określoną manifest-branch .
Uwaga: dla wszystkich pozostałych poleceń Repo bieżący katalog roboczy musi być katalogiem nadrzędnym .repo/
lub podkatalogiem katalogu nadrzędnego.
synchronizacja
repo sync [project-list]
Pobiera nowe zmiany i aktualizuje pliki robocze w środowisku lokalnym, zasadniczo wykonując git fetch
we wszystkich repozytoriach Git. Jeśli uruchomisz repo sync
bez argumentów, zsynchronizuje pliki dla wszystkich projektów.
Po uruchomieniu repo sync
dzieje się tak:
Jeśli projekt nigdy nie był synchronizowany, synchronizacja
repo sync
jest równoważna zgit clone
. Wszystkie gałęzie w repozytorium zdalnym są kopiowane do lokalnego katalogu projektu.Jeśli projekt został wcześniej zsynchronizowany,
repo sync
jest równoważna z:git remote update git rebase origin/branch
gdzie
branch
to aktualnie wyewidencjonowana gałąź w lokalnym katalogu projektu. Jeśli lokalna gałąź nie śledzi gałęzi w repozytorium zdalnym, wówczas dla projektu nie następuje synchronizacja.Jeśli operacja Git rebase powoduje konflikty scalania, użyj normalnych poleceń Git (na przykład
git rebase --continue
), aby rozwiązać konflikty.
Po pomyślnym uruchomieniu repo sync
kod w określonych projektach jest aktualny i synchronizowany z kodem w repozytorium zdalnym.
Oto kluczowe opcje. Zobacz repo help sync
dotyczącą repo help sync
uzyskać więcej informacji:
-c
: Pobiera tylko bieżącą gałąź manifestu z serwera.-d
: Przełącz określone projekty z powrotem do wersji manifestu. Jest to przydatne, jeśli projekt znajduje się obecnie w gałęzi tematu, ale zmiana manifestu jest tymczasowo potrzebna.-f
: kontynuuj synchronizację innych projektów, nawet jeśli projekt nie zostanie zsynchronizowany.-j threadcount
: Podziel synchronizację między wątkami, aby przyspieszyć ukończenie. Upewnij się, że nie przeciążasz swojej maszyny, pozostawiając trochę procesora zarezerwowanego dla innych zadań. Aby zobaczyć liczbę dostępnych procesorów, najpierw uruchom:nproc --all
-q
: Działa cicho, pomijając komunikaty o stanie.-s
: Synchronizuj ze znaną dobrą kompilacją określoną przez element manifest-server w bieżącym manifeście.
Przekazać plik
repo upload [project-list]
W przypadku określonych projektów usługa Repo porównuje oddziały lokalne z oddziałami zdalnymi zaktualizowanymi podczas ostatniej synchronizacji repozytorium. Repo wyświetla monit o wybranie jednej lub więcej gałęzi, które nie zostały przesłane do przeglądu.
Wszystkie zatwierdzenia wybranych gałęzi są następnie przesyłane do Gerrit za pośrednictwem połączenia HTTPS. Aby umożliwić autoryzację przesyłania, musisz skonfigurować hasło HTTPS. Odwiedź Generator haseł, aby wygenerować nową parę nazwa użytkownika / hasło do użytku przez HTTPS.
Kiedy Gerrit otrzymuje dane obiektu przez swój serwer, zmienia każde zatwierdzenie w zmianę, aby recenzenci mogli skomentować określone zatwierdzenie. Aby połączyć kilka zatwierdzeń punktów kontrolnych w jedno zatwierdzenie, użyj git rebase -i
przed uruchomieniem przesyłania.
Jeśli uruchomisz repo upload
bez argumentów, przeszukuje wszystkie projekty pod kątem zmian do przesłania.
Aby edytować zmiany po ich przesłaniu, użyj narzędzia takiego jak git rebase -i
lub git commit --amend
aby zaktualizować lokalne zatwierdzenia. Po zakończeniu edycji:
- Sprawdź, czy zaktualizowana gałąź jest obecnie wyewidencjonowaną gałęzią.
- Dla każdego zatwierdzenia w serii wprowadź identyfikator zmiany Gerrit w nawiasach:
# 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.
Po zakończeniu przesyłania zmiany mają dodatkowy zestaw poprawek.
Jeśli chcesz przesłać tylko aktualnie --current-branch
Git, użyj flagi --current-branch
(lub w skrócie --cbr
).
różn
repo diff [project-list]
Pokazuje zaległe zmiany między zatwierdzeniem a drzewem roboczym za pomocą git diff
.
Ściągnij
repo download target change
Pobiera określoną zmianę z systemu recenzji i udostępnia ją w lokalnym katalogu roboczym projektu.
Na przykład, aby pobrać zmianę 23823 do katalogu platforma / kompilacja:
repo download platform/build 23823
Uruchomienie repo sync
usuwa wszelkie zatwierdzenia pobrane podczas pobierania repo download
. Lub możesz sprawdzić zdalną gałąź za pomocą git checkout m/master
.
Uwaga: występują opóźnienia w replikacji na wszystkich serwerach na całym świecie, więc między momentem, w którym zmiana jest widoczna w Internecie w Gerrit, a momentem, w którym repo download
może znaleźć zmianę dla wszystkich użytkowników, występuje niewielkie opóźnienie w tworzeniu kopii lustrzanej.
dla wszystkich
repo forall [project-list] -c command
Wykonuje podane polecenie powłoki w każdym projekcie. Następujące dodatkowe zmienne środowiskowe są udostępniane przez repo forall
:
REPO_PROJECT
jest ustawiony na unikalną nazwę projektu.REPO_PATH
to ścieżka względem katalogu głównego klienta.REPO_REMOTE
to nazwa zdalnego systemu z manifestu.REPO_LREV
to nazwa wersji z manifestu przetłumaczona na lokalną gałąź śledzenia. Użyj tego, jeśli chcesz przekazać wersję manifestu do lokalnie wykonywanego polecenia Git.REPO_RREV
to nazwa wersji z manifestu, dokładnie taka, jak zapisana w manifeście.
Opcje:
-c
: Polecenie i argumenty do wykonania. Polecenie jest oceniane przez/bin/sh
i wszelkie argumenty po jego przekazaniu jako parametry pozycyjne powłoki.-p
: Pokaż nagłówki projektu przed wyjściem określonego polecenia. Osiąga się to poprzez powiązanie potoków ze strumieniami stdin, stdout i sterr polecenia oraz przekierowanie wszystkich danych wyjściowych do ciągłego strumienia wyświetlanego w jednej sesji pagera.-v
: Pokazuje komunikaty, które polecenie zapisuje na stderr.
suszona śliwka
repo prune [project-list]
Przycina (usuwa) tematy, które zostały już scalone.
początek
repo start branch-name [project-list]
Rozpoczyna nową gałąź do programowania, począwszy od wersji określonej w manifeście.
Argument BRANCH_NAME
zawiera krótki opis zmiany, którą próbujesz wprowadzić w projektach. Jeśli nie wiesz, rozważ użycie nazwy default
.
Argument project-list
projektów określa, które projekty uczestniczą w tej gałęzi tematu.
Uwaga: kropka (.) To skrót nazwy projektu w bieżącym katalogu roboczym.
status
repo status [project-list]
Porównuje drzewo robocze z obszarem przemieszczania (indeksem) i najnowszym zatwierdzeniem w tej gałęzi (HEAD) w każdym określonym projekcie. Wyświetla wiersz podsumowania dla każdego pliku, w przypadku którego istnieje różnica między tymi trzema stanami.
Aby zobaczyć status tylko bieżącej gałęzi, uruchom repo status
. Informacje o statusie są wyświetlane według projektu. Dla każdego pliku w projekcie używany jest dwuliterowy kod.
W pierwszej kolumnie duża litera wskazuje, w jaki sposób obszar przemieszczania różni się od ostatniego zatwierdzonego stanu.
List | Znaczenie | Opis |
---|---|---|
- | Brak zmiany | To samo w HEAD i indeksie |
ZA | Dodany | Nie w HEAD, w indeksie |
M | Zmodyfikowano | W HEAD, zmodyfikowany w index |
re | Usunięto | W HEAD, nie w indeksie |
R | Zmieniona nazwa | Nie w HEAD, zmieniono ścieżkę w indeksie |
do | Skopiowano | Nie w HEAD, skopiowane z innego w indeksie |
T | Tryb zmieniony | Ta sama treść w HEAD i indeksie, zmieniono tryb |
U | Rozłączone | Konflikt między HEAD a indeksem; wymagana rozdzielczość |
W drugiej kolumnie mała litera wskazuje, czym różni się katalog roboczy od indeksu.
List | Znaczenie | Opis |
---|---|---|
- | Nowy / nieznany | Nie w indeksie, w drzewie roboczym |
m | Zmodyfikowano | W indeksie, w drzewie roboczym, zmodyfikowano |
re | Usunięto | W indeksie, a nie w drzewie roboczym |