Przepływ pracy kontroli źródła

Praca z kodem Androida wymaga użycia Git (system kontroli wersji o otwartym kodzie źródłowym) i Repo (narzędzie do zarządzania repozytorium stworzone przez Google, które działa na Git). Zobacz Narzędzia kontroli źródła , aby uzyskać wyjaśnienie relacji między Repo i Git oraz linki do dokumentacji pomocniczej dla każdego narzędzia.

Pływ

Rozwój Androida obejmuje następujący podstawowy przepływ pracy:

  1. Rozpocznij nową gałąź tematu za pomocą repo start .
  2. Edytuj pliki.
  3. Zmiany etapu za pomocą git add .
  4. Zatwierdź zmiany za pomocą git commit .
  5. Prześlij zmiany na serwer recenzji za pomocą repo upload .

Zadania

Praca z Git i Repo w repozytoriach kodu systemu Android obejmuje wykonywanie następujących typowych zadań.

Komenda Opis
repo init Inicjuje nowego klienta.
repo sync Synchronizuje klienta z repozytoriami.
repo start Rozpoczyna nowy oddział.
repo status Pokazuje status aktualnego oddziału.
repo upload Przesyła zmiany do serwera recenzji.
git add Ustawia pliki.
git commit Zatwierdza pliki postawione.
git branch Pokazuje aktualne gałęzie.
git branch [branch] Tworzy nową gałąź tematu.
git checkout [branch] Przełącza HEAD do określonej gałęzi.
git merge [branch] Łączy [branch] z bieżącą gałęzią.
git diff Pokazuje różnice niestopniowanych zmian.
git diff --cached Pokazuje różnicę wprowadzonych zmian.
git log Pokazuje historię aktualnej gałęzi.
git log m/[codeline].. Pokazuje zatwierdzenia, które nie zostały wypchnięte.

Aby uzyskać informacje na temat używania repozytorium do pobierania źródła, zobacz Pobieranie źródła i Opis poleceń repozytorium .

Synchronizacja klientów

Aby zsynchronizować pliki dla wszystkich dostępnych projektów:

repo sync

Aby zsynchronizować pliki dla wybranych projektów:

repo sync PROJECT0 PROJECT1 ... PROJECTN

Tworzenie gałęzi tematycznych

Rozpocznij gałąź tematu w lokalnym środowisku pracy za każdym razem, gdy zaczynasz zmianę, na przykład gdy zaczynasz pracę nad błędem lub nową funkcją. Gałąź tematu nie jest kopią oryginalnych plików; jest to wskaźnik do konkretnego zatwierdzenia, co sprawia, że ​​tworzenie lokalnych gałęzi i przełączanie się między nimi jest lekką operacją. Używając gałęzi, możesz odizolować jeden aspekt swojej pracy od innych. Aby zapoznać się z interesującym artykułem na temat korzystania z gałęzi tematycznych, zapoznaj się z rozdziałem Rozdzielanie gałęzi tematycznych .

Aby rozpocząć gałąź tematu za pomocą Repo, przejdź do projektu i uruchom:

repo start BRANCH_NAME .

Końcowa kropka ( . ) reprezentuje projekt w bieżącym katalogu roboczym.

Aby sprawdzić, czy utworzono nowy oddział:

repo status .

Korzystanie z gałęzi tematycznych

Aby przypisać oddział do konkretnego projektu:

repo start BRANCH_NAME PROJECT_NAME

Lista wszystkich projektów znajduje się na stronie android.googlesource.com . Jeśli już przeszedłeś do katalogu projektu, po prostu użyj kropki, aby przedstawić bieżący projekt.

Aby przejść do innego oddziału w lokalnym środowisku pracy:

git checkout BRANCH_NAME

Aby wyświetlić listę istniejących oddziałów:

git branch

lub

repo branches

Oba polecenia zwracają listę istniejących gałęzi z nazwą bieżącej gałęzi poprzedzoną gwiazdką (*).

Pliki inscenizacji

Domyślnie Git zauważa, ale nie śledzi zmian wprowadzanych w projekcie. Aby poinformować Git, aby zachował Twoje zmiany, musisz oznaczyć lub przygotować te zmiany do włączenia do zatwierdzenia.

Aby dokonać zmian etapowych:

git add

To polecenie akceptuje argumenty dla plików lub katalogów w katalogu projektu. Pomimo nazwy, git add nie tylko dodaje pliki do repozytorium Git; może być również używany do etapowania modyfikacji i usuwania plików.

Przeglądanie statusu klienta

Aby wyświetlić stan plików:

repo status

Aby wyświetlić niezatwierdzone zmiany (zmiany lokalne, które nie są oznaczone do zatwierdzenia):

repo diff

Aby wyświetlić zatwierdzone zmiany (zlokalizowane zmiany, które są oznaczone do zatwierdzenia), upewnij się, że jesteś w katalogu projektu, a następnie uruchom git diff z argumentem z cached :

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

Zatwierdzanie zmian

Zatwierdzenie jest podstawową jednostką kontroli wersji w Git i składa się z migawki struktury katalogów i zawartości plików dla całego projektu. Użyj tego polecenia, aby utworzyć zatwierdzenie w Git:

git commit

Po wyświetleniu monitu o komunikat o zatwierdzeniu podaj krótki (ale pomocny) komunikat dotyczący zmian przesłanych do AOSP. Jeśli nie dodasz komunikatu o zatwierdzeniu, zatwierdzenie się nie powiedzie.

Przesyłanie zmian do Gerrit

Zaktualizuj do najnowszej wersji, a następnie prześlij zmianę:

repo sync
repo upload

Te polecenia zwracają listę wprowadzonych zmian i monitują o wybranie gałęzi do przesłania na serwer recenzji. Jeśli jest tylko jedna gałąź, zobaczysz prosty monit y/n .

Rozwiązywanie konfliktów synchronizacji

Jeśli polecenie repo sync zwraca konflikty synchronizacji:

  1. Wyświetl pliki, które nie są scalone (kod stanu = U).
  2. W razie potrzeby edytuj regiony konfliktu.
  3. Przejdź do odpowiedniego katalogu projektu. Dodaj i zatwierdź pliki, których dotyczy problem, a następnie zmień bazę zmian:
    git add .
    git commit
    git rebase --continue
    
  4. Po zakończeniu rebase ponownie rozpocznij całą synchronizację:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

Sprzątanie klientów

Po scaleniu zmian w Gerrit, zaktualizuj swój lokalny katalog roboczy, a następnie użyj repo prune , aby bezpiecznie usunąć nieaktualne gałęzie tematów:

repo sync
repo prune

Usuwanie klientów

Ponieważ wszystkie informacje o stanie są przechowywane w kliencie, wystarczy usunąć katalog z systemu plików:

rm -rf WORKING_DIRECTORY

Usunięcie klienta trwale usuwa wszelkie zmiany, które nie zostały przesłane do sprawdzenia.