Praca z kodem Androida wymaga użycia Gita (systemu kontroli wersji typu open source) i Repo (narzędzia do zarządzania repozytorium opracowanego przez Google, które działa na podstawie Gita). Aby dowiedzieć się więcej o zależnościach między repozytorium a Git oraz uzyskać linki do dokumentacji dotyczącej poszczególnych narzędzi, zapoznaj się z artykułem Narzędzia kontroli wersji.
Płynięcie
Programowanie aplikacji na Androida obejmuje następujący podstawowy proces:
- Utwórz nową gałąź tematu za pomocą
repo start
. - edytować pliki;
- Etapy zmieniają się za pomocą
git add
. - Zatwierdź zmiany za pomocą
git commit
. - Prześlij zmiany na serwer sprawdzania za pomocą
repo upload
.
Lista zadań
Praca z Git 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 |
tworzy nową gałąź. |
repo status |
Pokazuje stan bieżącej gałęzi. |
repo upload |
Przesyła zmiany na serwer sprawdzania. |
git add |
Przesyła pliki. |
git commit |
zatwierdza etapowane pliki. |
git branch |
Wyświetla bieżące gałęzie. |
git branch [branch] |
Tworzy nową gałąź tematu. |
git checkout [branch] |
Przełącza HEAD na wskazaną gałąź. |
git merge [branch] |
Łączy [branch] z bieżącą gałęzią. |
git diff |
Pokazuje różnice między zmianami niescenowanymi. |
git diff --cached |
Wyświetla różnice między wersjami. |
git log |
Pokazuje historię bieżącej gałęzi. |
git log m/[codeline].. |
Wyświetla commity, które nie zostały przesłane. |
Informacje o pobieraniu kodu źródłowego za pomocą repozytorium znajdziesz w artykule Pobieranie kodu źródłowego i w dokumentacji dotyczącej poleceń Repo.
Synchronizacja klientów
Aby zsynchronizować pliki we wszystkich dostępnych projektach:
repo sync
Aby zsynchronizować pliki w wybranych projektach:
repo syncPROJECT0 PROJECT1 ... PROJECTN
Tworzenie gałęzi tematu
Zacznij temat w swoim lokalnym środowisku roboczym, gdy zamierzasz wprowadzić zmianę, np. gdy zaczniesz pracować nad błędem lub nową funkcją. Gałąź tematu nie jest kopią oryginalnych plików. Jest to wskaźnik do konkretnego zatwierdzenia, dzięki czemu tworzenie lokalnych gałęzi i przełączanie się między nimi jest prostą operacją. Dzięki gałęziom możesz oddzielić jeden aspekt swojej pracy od pozostałych. Interesujący artykuł na temat korzystania z gałęzi tematu znajdziesz w sekcji Oddzielanie gałęzi tematu.
Aby utworzyć gałąź tematu za pomocą Repo, przejdź do projektu i uruchom:
repo startBRANCH_NAME .
Ostatni okres ( .
) reprezentuje 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 startBRANCH_NAME PROJECT_NAME
Listę wszystkich projektów znajdziesz na stronie android.googlesource.com. Jeśli katalog projektu został już otwarty, użyj kropki, aby wskazać bieżący projekt.
Aby przełączyć się na inną gałąź w lokalnym środowisku pracy:
git checkoutBRANCH_NAME
Aby wyświetlić listę istniejących gałęzi:
git branch
lub
repo branches
Oba polecenia zwracają listę istniejących gałęzi z nazwą bieżącej gałęzi poprzedzoną gwiazdką (*).
Pliki na etapie przejściowym
Domyślnie Git zauważa, ale nie śledzi zmian wprowadzonych w projekcie. Aby powiedzieć Gitowi, że zmiany mają zostać zachowane, musisz je oznaczyć jako etapy i umieścić w komicie.
Aby zmienić etap:
git add
To polecenie akceptuje argumenty dotyczące plików lub katalogów w katalogu projektu. Pomimo nazwy polecenie git add
nie tylko dodaje pliki do repozytorium Git, ale może też służyć do modyfikowania i usuwania plików.
Wyświetlanie stanu 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 potem uruchom git
diff
z argumentem cached
:
cd
~/WORKING_DIRECTORY/PROJECT git diff --cached
zatwierdzanie zmian,
Komitowanie to podstawowa jednostka kontroli wersji w Git. Polega ona na tworzeniu migawki struktury katalogu i zawartości plików w całym projekcie. Aby utworzyć zatwierdzanie w Git, użyj tego polecenia:
git commit
Gdy pojawi się prośba o komunikat zatwierdzenia, podaj krótki (ale pomocny) komunikat dotyczący zmian przesłanych do AOSP. Jeśli nie dodasz komunikatu zatwierdzenia, zatwierdzanie zakończy się niepowodzeniem.
.Przesyłanie zmian do Gerrit
Zaktualizuj do najnowszej wersji, a następnie prześlij zmiany:
repo sync
repo upload
Te polecenia zwracają listę zatwierdzonych zmian i wyświetlają prośbę o wybranie gałęzi do przesłania 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świetlanie plików, które nie zostały scalone (kod stanu = U).
- W razie potrzeby zmień regiony konfliktowe.
- Przejdź do odpowiedniego katalogu projektu. Dodaj i zatwierdź odpowiednie pliki, a następnie ponownie utwórz bazę zmian:
git add .
git commit
git rebase --continue
- Po zakończeniu przebazowania ponownie uruchom całą synchronizację:
repo sync
PROJECT0 PROJECT1 ... PROJECTN
Czyszczenie danych klientów
Po scaleniu zmian w Gerrecie zaktualizuj lokalny katalog roboczy, a potem użyj opcji
repo prune
, aby bezpiecznie usunąć nieaktualne gałęzie tematu:
repo sync
repo prune
Usuwanie klientów
Wszystkie informacje o stanie są przechowywane na kliencie, więc wystarczy usunąć katalog z systemu plików:
rm -rfWORKING_DIRECTORY
Usunięcie klienta trwale usuwa wszystkie zmiany, które nie zostały przesłane do sprawdzenia.