Proces kontroli źródła

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:

  1. Utwórz nową gałąź tematu za pomocą polecenia repo start.
  2. Edytuj pliki.
  3. Przygotuj zmiany za pomocą polecenia git add.
  4. Zatwierdź zmiany za pomocą polecenia git commit.
  5. 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/PROJECT
git 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 sync
repo 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:

  1. Wyświetl pliki, które nie zostały scalone (kod stanu = U).
  2. W razie potrzeby edytuj obszary konfliktu.
  3. 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
    
  4. 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 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 wszystkie zmiany, które nie zostały przesłane do sprawdzenia.