Proces kontroli źródła

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:

  1. Utwórz nową gałąź tematu za pomocą repo start.
  2. edytować pliki;
  3. Etapy zmieniają się za pomocą git add.
  4. Zatwierdź zmiany za pomocą git commit.
  5. 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 sync PROJECT0 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 start BRANCH_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 start BRANCH_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 checkout BRANCH_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:

  1. Wyświetlanie plików, które nie zostały scalone (kod stanu = U).
  2. W razie potrzeby zmień regiony konfliktowe.
  3. 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
    
  4. 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 -rf WORKING_DIRECTORY

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