GIT
Z Kadu
GIT
Spis treści |
Pobranie najnowszego kodu Kadu przez GIT
Aby pobrać eksperymentalną, aktywnie rozwijaną wersję Kadu z GIT w konsoli piszemy:
git clone git://gitorious.org/kadu/kadu.git cd kadu git submodule init git submodule update
Proces instalacji Kadu ze źródeł opisany jest w odrębnym artykule: Instalacja ze źródeł.
Aby uaktualnić nasze lokalne repozytorium wykonujemy:
git pull git submodule update
Praca nad kodem Kadu z użyciem GITa
Rejestrujemy się na http://www.gitorious.org.
Klonujemy repozytorium Kadu (http://gitorious.org/kadu) poprzez "Clone this repositorium on Gitorious"
Gitorious identyfikuje użytkownika za pomocą kluczy kryptograficznych.
Musimy więc wkleić nasz publiczny klucz w opcjach naszego konta na stronie https://secure.gitorious.org/~UŻYTKOWNIK/keys.
Klucz znajduje się w pliku ~/.ssh/id_rsa.pub lub ~/.ssh/id_dsa.pub.
Jeśli nie mamy jeszcze wygenerowanej własnej pary kluczy, to robimy to poleceniem:
ssh-keygen -t rsa -C "twój@email.com"
Hasło do klucza można pominąć, inaczej będziemy musieli je wstukiwać przy każdym połączeniu z Gitoriousem.
Teraz możemy już pobrać naszego klona na dysk:
git clone git@gitorious.org:~UŻYTKOWNIK/kadu/NAZWA_NASZEGO_KLONA.git
Powyższy link dostępny jest także na stronie naszego klona.
cd NAZWA_NASZEGO_KLONA
Aby być na bieżąco ze zmianami w Kadu wywołujemy w katalogu z naszym klonem następujące komendy:
git remote add upstream git://gitorious.org/kadu/kadu.git
Kiedy wykonamy powyższe czynności mamy już gotowe pole do pracy.
System pracy polega na tym, że zmiany robimy w swoim klonie, a potem prosimy o ich połączenie z główną gałęzią Kadu.
Przed rozpoczęciem pracy zawsze uaktualniamy naszego klona poprzez:
git fetch --tags upstream git pull --rebase upstream master git push
Ostatnie polecenie wysyła zmiany do naszego klona na Gitoriousie.
Aby zachować porządek w głównej gałęzi wszelkie zmiany robimy w osobnych branchach. Nowego brancha tworzymy poprzez:
git branch NASZ_BRANCH
A następnie przenosimy się do danego brancha:
git checkout NASZ_BRANCH
Powyższe dwa polecenia można zastąpić jednym:
git checkout -b NASZ_BRANCH
W tym miejscu wprowadzamy zmiany w kodzie Kadu.
Następnie poprzez komendę
git status
oglądamy jakie pliki uległy zmianom i jeszcze nie są w żadnym commicie.
Dodajemy pliki do commita:
git commit -a -m "OPIS COMMITA"
Parametr "-a" dodaje wszystkie pliki. Pominięcie parametru "-m" spowoduje otwarcie zdefiniowanego edytora tekstowego, w którym będziemy mogli wygodnie wpisać opis commita. Możemy również podpisać commit cyfrowo poprzez dodanie przełącznika -s.
Po wprowadzeniu wszystkich zmian wysyłamy brancha na serwer Gitorious:
git push origin NASZ_BRANCH
A następnie wysyłamy Merge Request do repozytorium Kadu na Gitorious.
Pobranie i uaktualnienie repozytoriów potrzebnych do skompilowania i uruchomienia niektórych modułów wykonujemy poprzez:
git submodule init git submodule update
Inicjalizację ("init") wykonujemy tylko raz, a "update" zawsze, gdy chcemy zaktualizować zawartość.
Poradnik GIT
Łączenie wielu commitów w jeden
Jeśli w naszym branchu mamy wiele commitów, a chcielibyśmy utworzyć z nich jeden, możemy to zrobić następująco:
$ git checkout NASZ_BRANCH
$ git rebase -i HEAD~X
Za X podstawiamy liczbę większą lub równą ilości naszych commitów, np.:
$ git rebase -i HEAD~5
Pojawi się edytor nano, w którym przy każdym commicie będzie widniało słowo "pick", np.:
pick 01234567 Commit A pick 3456789a Commit B pick 56789abc Nasz commit 1 pick 789abcde Nasz commit 2 pick 9abcdef0 Nasz commit 3
Odnajdujemy nasz pierwszy commit i zostawiamy przy nim "pick", ale przy kolejnych naszych commitach zamieniamy "pick" na "s" lub "squash":
pick 01234567 Commit A pick 3456789a Commit B pick 56789abc Nasz commit 1 s 789abcde Nasz commit 2 s 9abcdef0 Nasz commit 3
Wychodzimy z edytora (Ctrl+X) i zapisujemy zmiany (y, Enter).
Pojawi się kolejny edytor, w którym będziemy mogli zdefiniować nowy komentarz dla nowego zbiorczego commita. Komentarzem będą wszystkie niezahashowane (#) linie. Usuwamy stare linie (Ctrl+K) i wpisujemy nowy komentarz. Następnie zamykamy edytor (Ctrl+X) i zapisujemy zmiany (y, Enter).
Teraz wystarczy wysłać zmiany do zdalnego repozytorium:
$ git push origin NASZ_BRANCH
Jeśli wysłaliśmy już nasze poprzednie commity na serwer, musimy wymusić zapis zmian:
$ git push -f origin NASZ_BRANCH
Teraz wszystkie nasze zmiany znajdują się w pojedynczym commicie i ładnie prezentują się w Merge Requeście ;)
Jeśli Merge Request zawierał poprzednie commity, TRZEBA go zedytować i wybrać nowy zbiorczy commit.
