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:
- Rozpocznij nową gałąź tematu za pomocą
repo start
. - Edytuj pliki.
- Zmiany etapu za pomocą
git add
. - Zatwierdź zmiany za pomocą
git commit
. - 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:
- Wyświetl pliki, które nie są scalone (kod stanu = U).
- W razie potrzeby edytuj regiony konfliktu.
- 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
- 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.