Praca z kodem Androida wymaga użycia Gita, czyli systemu kontroli wersji typu open source , oraz Repo, czyli narzędzia do zarządzania repozytoriami opracowanego przez Google , które działa na platformie Git. Wyjaśnienie zależności między Repo a Gitem oraz linki do dokumentacji każdego z tych narzędzi znajdziesz w artykule Narzędzia do kontroli kodu źródłowego.
Flow
Tworzenie aplikacji na Androida obejmuje ten podstawowy proces:
- Utwórz nową gałąź tematu za pomocą polecenia
repo start. - Edytuj pliki.
- Przygotuj zmiany za pomocą polecenia
git add. - Zatwierdź zmiany za pomocą polecenia
git commit. - Prześlij zmiany na serwer sprawdzania za pomocą polecenia
repo upload.
Lista zadań
Praca z Gitem i Repo w repozytoriach kodu Androida obejmuje wykonywanie tych typowych zadań.
| Polecenie | Opis |
|---|---|
repo init |
Inicjuje nowego klienta. |
repo sync |
Synchronizuje klienta z repozytoriami. |
repo start |
Uruchamia nową gałąź. |
repo status |
Wyświetla stan bieżącej gałęzi. |
repo upload |
Przesyła zmiany na serwer sprawdzania. |
git add |
Przygotowuje pliki. |
git commit |
Zatwierdza przygotowane pliki. |
git branch |
Wyświetla bieżące gałęzie. |
git branch [branch] |
Tworzy nową gałąź tematu. |
git checkout [branch] |
Przełącza HEAD na określoną gałąź. |
git merge [branch] |
Scala [branch] z bieżącą gałęzią. |
git diff |
Wyświetla różnice między nieprzygotowanymi zmianami. |
git diff --cached |
Wyświetla różnice między przygotowanymi zmianami. |
git log |
Wyświetla historię bieżącej gałęzi. |
git log m/[codeline].. |
Wyświetla zatwierdzenia, które nie zostały wypchnięte. |
Informacje o pobieraniu kodu źródłowego za pomocą Repo znajdziesz w artykułach Pobieranie kodu źródłowego i Dokumentacja 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 tematu
Gdy zaczynasz wprowadzać zmiany, np. pracować nad błędem lub nową funkcją, utwórz gałąź tematu w lokalnym środowisku pracy. Gałąź tematu nie jest kopią oryginalnych plików. Jest to wskaźnik do konkretnego zatwierdzenia, dzięki czemu tworzenie gałęzi lokalnych i przełączanie się między nimi jest szybkie. Dzięki gałęziom możesz odizolować jeden aspekt pracy od innych. Ciekawy artykuł o korzystaniu z gałęzi tematu znajdziesz w sekcji Separating topic branches (Oddzielanie gałęzi tematu).
Aby utworzyć gałąź tematu za pomocą Repo, przejdź do projektu i uruchom to polecenie:
repo start BRANCH_NAME .
Kropka na końcu ( .) oznacza projekt w bieżącym katalogu roboczym.
Aby sprawdzić, czy nowa gałąź została utworzona:
repo status .
Korzystanie z gałęzi tematu
Aby przypisać gałąź do konkretnego projektu:
repo start BRANCH_NAME PROJECT_NAME
Listę wszystkich projektów znajdziesz na stronie android.googlesource.com. Jeśli masz już otwarty katalog projektu, użyj kropki, aby odwołać się do bieżącego projektu.
Aby przełączyć się na inną gałąź w lokalnym środowisku pracy:
git checkout BRANCH_NAME
Aby wyświetlić listę istniejących gałęzi:
git branch
lub
repo branches
Oba polecenia zwracają listę istniejących gałęzi, a nazwa bieżącej gałęzi jest poprzedzona gwiazdką (*).
Przygotowywanie plików
Domyślnie Git zauważa zmiany wprowadzone w projekcie, ale ich nie śledzi. Aby Git zachował zmiany, musisz je oznaczyć lub przygotować te zmiany do uwzględnienia w zatwierdzeniu.
Aby przygotować zmiany:
git add
To polecenie akceptuje argumenty dotyczące plików lub katalogów w katalogu projektu
directory. Pomimo nazwy polecenie git add nie tylko dodaje pliki do
repozytorium Git, ale też może służyć do przygotowywania modyfikacji i
usunięć plików.
Wyświetlanie stanu klienta
Aby wyświetlić stan plików:
repo status
Aby wyświetlić niezatwierdzone zmiany (lokalne zmiany, które nie są oznaczone do zatwierdzenia):
repo diff
Aby wyświetlić zatwierdzone zmiany (lokalne zmiany, które są oznaczone do
zatwierdzenia), upewnij się, że jesteś w katalogu projektu, a następnie uruchom polecenie git
diff z argumentem cached:
cd ~/WORKING_DIRECTORY/PROJECTgit diff --cached
Zatwierdzanie zmian
Zatwierdzenie to podstawowa jednostka kontroli wersji w Gicie, która zawiera migawkę struktury katalogów i zawartości plików całego projektu. Aby utworzyć zatwierdzenie w Gicie, użyj tego polecenia:
git commit
Gdy pojawi się prośba o podanie komunikatu zatwierdzenia, wpisz krótki (ale przydatny) komunikat o zmianach przesłanych do AOSP. Jeśli nie dodasz komunikatu zatwierdzenia, zatwierdzenie się nie powiedzie.
.Przesyłanie zmian do Gerrit
Zaktualizuj do najnowszej wersji, a następnie prześlij zmianę:
repo syncrepo upload
Te polecenia zwracają listę zatwierdzonych zmian i wyświetlają prośbę o wybranie gałęzi, które mają zostać przesłane na serwer sprawdzania. Jeśli jest tylko jedna
gałąź, zobaczysz prosty komunikat y/n.
Rozwiązywanie konfliktów synchronizacji
Jeśli polecenie repo sync zwróci konflikty synchronizacji:
- Wyświetl pliki, które nie zostały scalone (kod stanu = U).
- W razie potrzeby edytuj obszary konfliktu.
- Przejdź do odpowiedniego katalogu projektu. Dodaj i zatwierdź pliki, których dotyczy problem
, a następnie zmień bazę zmian:
git add .git commitgit rebase --continue - Po zakończeniu zmiany bazy uruchom ponownie całą synchronizację:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Czyszczenie klientów
Po scaleniu zmian w Gerrit zaktualizuj lokalny katalog roboczy, a następnie użyj
repo prune aby bezpiecznie usunąć nieaktualne gałęzie tematu:
repo syncrepo 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 wszystkie zmiany, które nie zostały przesłane do sprawdzenia.