Opis poleceń repozytorium

Repo uzupełnia Git, upraszczając pracę w wielu repozytoriach. Zobacz Narzędzia kontroli źródła , aby uzyskać wyjaśnienie związku między Repo i Git. Więcej informacji na temat Repo można znaleźć w README Repo .

Wykorzystanie repo przybiera następującą formę:

repo command options

Elementy opcjonalne są pokazane 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 projektów:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

Wsparcie

Ta strona przedstawia jedynie kluczowe opcje. Zobacz pomoc wiersza poleceń, aby uzyskać szczegółowe informacje. Po zainstalowaniu Repo możesz znaleźć najnowszą dokumentację, zaczynając od podsumowania wszystkich poleceń, uruchamiając:

repo help

Możesz zobaczyć szczegółowe informacje o dowolnym poleceniu, uruchamiając to w drzewie Repo:

repo help command

Na przykład poniższe polecenie daje opis i listę opcji dla argumentu init Repo, który inicjuje Repo w bieżącym katalogu. (Szczegóły w init .)

repo help init

Lub, aby zobaczyć tylko listę dostępnych opcji, uruchom:

repo command --help
Na przykład:
repo init --help

w tym

repo init -u url [options]

Instaluje repozytorium w bieżącym katalogu. Spowoduje to utworzenie 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 chcesz pobrać repozytorium manifestu. Wspólny plik manifestu można znaleźć pod https://android.googlesource.com/platform/manifest .
  • -m : Wybierz plik manifestu w repozytorium. Jeśli nie wybrano żadnej nazwy manifestu, wartością domyślną jest default.xml .
  • -b : Określ wersję, czyli konkretną manifest-branch .

Uwaga: W przypadku wszystkich pozostałych poleceń Repo bieżący katalog roboczy musi być albo katalogiem nadrzędnym .repo/ , albo podkatalogiem katalogu nadrzędnego.

synchronizacja

repo sync [project-list]

Pobiera nowe zmiany i aktualizuje pliki robocze w Twoim lokalnym środowisku, zasadniczo wykonując git fetch we wszystkich repozytoriach Git. Jeśli uruchomisz repo sync bez argumentów, zsynchronizuje ona pliki dla wszystkich projektów.

Po uruchomieniu repo sync dzieje się tak:

  • Jeśli projekt nigdy nie był synchronizowany, synchronizacja repo sync jest odpowiednikiem git clone . Wszystkie gałęzie w zdalnym repozytorium są kopiowane do lokalnego katalogu projektu.

  • Jeśli projekt był wcześniej synchronizowany, repo sync jest równoważna:

    git remote update
    git rebase origin/branch
    

    gdzie branch to aktualnie wyewidencjonowana gałąź w lokalnym katalogu projektu. Jeśli oddział lokalny nie śledzi oddziału w repozytorium zdalnym, dla projektu nie nastąpi synchronizacja.

  • Jeśli operacja rebase Git 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 zsynchronizowany z kodem w zdalnym repozytorium.

Oto kluczowe opcje. Zobacz repo help sync , aby uzyskać więcej informacji:

  • -c : pobierz 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 wersja manifestu jest tymczasowo potrzebna.

  • -f : Kontynuuj synchronizację innych projektów, nawet jeśli projekt się nie zsynchronizuje.

  • -j threadcount : Podziel synchronizację na wątki w celu szybszego zakończenia. Upewnij się, że nie przeciążysz swojej maszyny - zostaw trochę procesora zarezerwowanego dla innych zadań. Aby zobaczyć liczbę dostępnych procesorów, najpierw uruchom: nproc --all

  • -q : Uruchom 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 Repo porównuje oddziały lokalne z oddziałami zdalnymi zaktualizowanymi podczas ostatniej synchronizacji repozytorium. Repo prosi o wybranie jednej lub więcej gałęzi, które nie zostały przesłane do przeglądu.

Wszystkie zatwierdzenia w wybranych gałęziach są następnie przesyłane do Gerrita przez połączenie HTTPS. Aby włączyć autoryzację przesyłania, musisz skonfigurować hasło HTTPS. Odwiedź Generator haseł , aby wygenerować nową parę nazwa użytkownika/hasło do użycia przez HTTPS.

Kiedy Gerrit otrzymuje dane obiektu na swoim serwerze, zamienia każde zatwierdzenie w zmianę, dzięki czemu recenzenci mogą komentować określone zatwierdzenie. Aby połączyć kilka zatwierdzeń w punktach kontrolnych w jedno zatwierdzenie, użyj git rebase -i przed uruchomieniem przesyłania.

Jeśli uruchomisz repo upload bez argumentów, przeszuka 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 aktualnie wyrejestrowaną 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 pobraną gałąź Git, użyj flagi --current-branch (lub w skrócie --cbr ).

różnica

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 platform/build:

repo download platform/build 23823

Uruchomienie repo sync usuwa wszelkie zatwierdzenia pobrane podczas pobierania repo download . Możesz też sprawdzić gałąź zdalną za pomocą git checkout m/master .

Uwaga: istnieją opóźnienia w replikacji na wszystkich serwerach na całym świecie, więc istnieje niewielkie opóźnienie w tworzeniu kopii lustrzanych między momentem, gdy zmiana jest widoczna w sieci w Gerrit , a momentem, w którym repo download może znaleźć zmianę dla wszystkich użytkowników.

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 ustawiona na unikalną nazwę projektu.

  • REPO_PATH to ścieżka względna do katalogu głównego klienta.

  • REPO_REMOTE to nazwa systemu zdalnego 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 zmiany z manifestu, dokładnie taka, jak zapisano w manifeście.

Opcje:

  • -c : Polecenie i argumenty do wykonania. Polecenie jest oceniane przez /bin/sh i wszelkie argumenty po nim są przekazywane 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 potokowanie wszystkich danych wyjściowych w ciągły strumień, który jest wyświetlany w pojedynczej sesji pagera.

  • -v : Pokaż komunikaty, które polecenie zapisuje na stderr.

suszona śliwka

repo prune [project-list]

Przycina (usuwa) tematy, które są już połączone.

początek

repo start
branch-name [project-list]

Rozpoczyna nową gałąź do rozwoju, zaczynając 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 należą do tej gałęzi tematu.

Uwaga: Kropka ( . ) jest skrótem nazwy projektu w bieżącym katalogu roboczym.

status

repo status [project-list]

Porównuje drzewo robocze z obszarem pomostowym (indeks) i najnowszym zatwierdzeniem w tej gałęzi (HEAD) w każdym określonym projekcie. Wyświetla wiersz podsumowania dla każdego pliku, w którym występuje różnica między tymi trzema stanami.

Aby zobaczyć status tylko bieżącego oddziału, uruchom repo status . . Informacje o stanie są wyświetlane według projektu. Dla każdego pliku w projekcie używany jest dwuliterowy kod.

W pierwszej kolumnie wielka litera wskazuje, jak obszar przemieszczania różni się od ostatniego zatwierdzonego stanu.

List Oznaczający Opis
- Brak zmiany To samo w HEAD i indeksie
A Dodany Nie w HEAD, w indeksie
M Zmodyfikowany W HEAD, zmodyfikowany w indeksie
D Usunięto W HEAD, nie w indeksie
R Zmieniono nazwę Nie w HEAD, ścieżka zmieniona w indeksie
C Skopiowane Nie w HEAD, skopiowane z innego w indeksie
T Zmieniono tryb Ta sama treść w HEAD i index, zmieniony tryb
U Niescalone Konflikt między HEAD a indeksem; wymagana rozdzielczość

W drugiej kolumnie mała litera wskazuje, jak katalog roboczy różni się od indeksu.

List Oznaczający Opis
- Nowy/nieznany Nie w indeksie, w drzewie pracy
m Zmodyfikowany W indeksie, w drzewie roboczym, zmodyfikowany
d Usunięto W indeksie, a nie w drzewie pracy

Obsługa błędów 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 .

Błąd repo: error: no branches ready for upload pojawia się, gdy komenda repo start nie została uruchomiona na początku sesji. Aby odzyskać, możesz sprawdzić identyfikator zatwierdzenia, uruchomić nową gałąź, a następnie ją scalić.