Przepływ pracy kontroli źródła

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:

  1. Rozpocznij nową gałąź tematu za pomocą repo start .
  2. Edytuj pliki.
  3. Zmiany etapowe za pomocą git add .
  4. Zatwierdź zmiany za pomocą git commit .
  5. 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 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:

  1. Wyświetl pliki, które nie są scalone (kod stanu = U).
  2. W razie potrzeby dokonaj edycji regionów konfliktu.
  3. Przejdź do odpowiedniego katalogu projektu. Dodaj i zatwierdź odpowiednie pliki, a następnie zmień bazę zmian:
    git add .
    git commit
    git rebase --continue
    
  4. 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.