Praca z kodem Androida wymaga użycia Git (systemu kontroli wersji typu open source) i Repo (narzędzia do zarządzania repozytorium stworzonego przez Google, które działa na platformie 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.
Przepływ
Rozwój Androida obejmuje następujący podstawowy przepływ pracy:
- Rozpocznij nową gałąź tematu za pomocą
repo start
. - Edytuj pliki.
- Zmiany etapowe za pomocą
git add
. - Zatwierdź zmiany za pomocą
git commit
. - Prześlij zmiany na serwer recenzji, korzystając z
repo upload
.
Zadania
Praca z Git i Repo w repozytoriach kodu Androida polega na wykonywaniu następujących typowych zadań.
Komenda | Opis |
---|---|
repo init | Inicjuje nowego klienta. |
repo sync | Synchronizuje klienta z repozytoriami. |
repo start | Otwiera nowy oddział. |
repo status | Pokazuje status bieżącego oddziału. |
repo upload | Przesyła zmiany na serwer recenzji. |
git add | Etapuje pliki. |
git commit | Zatwierdza przygotowane pliki. |
git branch | Pokazuje aktualne gałęzie. |
git branch [branch] | Tworzy nową gałąź tematyczną. |
git checkout [branch] | Przełącza HEAD do określonej gałęzi. |
git merge [branch] | Łączy [branch] z bieżącym oddziałem. |
git diff | Pokazuje różnicę niestacjonarnych zmian. |
git diff --cached | Pokazuje różnicę między etapowymi zmianami. |
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 Repo do pobierania źródła, zobacz Pobieranie źródła i Opis poleceń Repo .
Synchronizowanie klientów
Aby zsynchronizować pliki wszystkich dostępnych projektów:
repo sync
Aby zsynchronizować pliki wybranych projektów:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Tworzenie gałęzi tematycznych
Rozpocznij gałąź tematyczną w lokalnym środowisku pracy za każdym razem, gdy rozpoczynasz zmianę, na przykład gdy zaczynasz pracę nad błędem lub nową funkcją. Gałąź tematyczna 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 pozostałych. Ciekawy artykuł na temat używania gałęzi tematycznych można znaleźć w artykule Oddzielanie gałęzi tematycznych .
Aby rozpocząć gałąź tematyczną za pomocą Repo, przejdź do projektu i uruchom:
repo start BRANCH_NAME .
Kropka końcowa ( .
) reprezentuje projekt w bieżącym katalogu roboczym.
Aby sprawdzić, czy nowy oddział został utworzony:
repo status .
Korzystanie z gałęzi tematycznych
Aby przypisać gałąź do konkretnego projektu:
repo start BRANCH_NAME PROJECT_NAME
Listę wszystkich projektów można znaleźć 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
Obydwa polecenia zwracają listę istniejących oddziałów z nazwą bieżącego oddziału poprzedzoną gwiazdką (*).
Pliki pośrednie
Domyślnie Git zauważa zmiany wprowadzane w projekcie, ale ich nie śledzi. Aby powiedzieć Gitowi, aby zachował Twoje zmiany, musisz oznaczyć lub przygotować te zmiany w celu włączenia ich do zatwierdzenia.
Aby wprowadzić zmiany etapowe:
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żna go również używać do modyfikowania i usuwania plików.
Przeglądanie statusu klienta
Aby wyświetlić stan plików:
repo status
Aby wyświetlić niezatwierdzone zmiany (edycje lokalne, które nie są oznaczone do zatwierdzenia):
repo diff
Aby wyświetlić zatwierdzone zmiany (zlokalizowane zmiany oznaczone do zatwierdzenia), upewnij się, że jesteś w katalogu projektu, a następnie uruchom git diff
z argumentem 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
Gdy pojawi się monit o komunikat zatwierdzenia, podaj krótki (ale pomocny) komunikat dotyczący zmian przesłanych do AOSP. Jeśli nie dodasz komunikatu zatwierdzenia, zatwierdzenie nie powiedzie się.
Przesyłanie zmian do Gerrita
Zaktualizuj do najnowszej wersji, a następnie prześlij zmianę:
repo sync
repo upload
Polecenia te zwracają listę zatwierdzonych 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
zwróci konflikty synchronizacji:
- Wyświetl pliki, które nie są scalone (kod stanu = U).
- W razie potrzeby dokonaj edycji regionów konfliktu.
- Przejdź do odpowiedniego katalogu projektu. Dodaj i zatwierdź odpowiednie pliki, a następnie zmień bazę zmian:
git add .
git commit
git rebase --continue
- Po zakończeniu zmiany bazy rozpocznij całą synchronizację od nowa:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Sprzątanie klientów
Po połączeniu zmian w Gerrit zaktualizuj swój lokalny katalog roboczy, a następnie użyj repo prune
, aby bezpiecznie usunąć nieaktualne gałęzie tematyczne:
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 powoduje trwałe usunięcie wszelkich zmian, które nie zostały przesłane do sprawdzenia.