Ku pamięci – GIT nie zajmuje się pustymi katalogami

Piszę o tym, żeby wbić sobie to do głowy. Kiedyś o tym czytałem, ale oczywiście teraz spędziłem dobrą godzinę na wyciskaniu z google ostatnich soków zanim mi się przypomniało.

Szczególnie w wersji cake’a problemy stwarzają katalogi w app/tmp – za chiny ludowe nie mogłem ich dodać do reposytorium git. Wystarczy zrobić im

touch app/tmp/cache/models/.empty

a następnie

git add app/tmp/cache/models/

Ps. w ostatnim konkursie znów Krzychu został wylosowany. Gratuluję i zachęcam pozostałych do stanięcia w szranki przy kolejnej okazji!

Share Button

Podłączenie lokalnego repozytorium git do serwera vipserv

Jakiś czas temu pisałem, że zaczynam powoli bawić się z systemem zarządzania wersjami GIT. Przy odpalaniu samodzielnego projektu jest to fajne – nie muszę konfigurować żadnego serwera, po prostu commity są lokalne – czyli mam wszystkie korzyści płynące z SCMa przy minimum wysiłku.

Jednak czasem rzeczywistość uświadamia nam, że warto posiadać kopie zapasowe rzeczy, które kosztowały nas wiele pracy. Tym razem obeszło się na strachu, więc czym prędzej zabrałem się za umieszczenie kodu w głównym reozytorium (na serwerze vipserv.org oczywiście).

Założyłem nowe repo w panelu, dodałem użytkowników dla dostępu https i ssh (ten drugi jest zalecanym, autorskim rozwiązaniem fachmanów z vipserv).

Dostęp z konsoli (git clone) nie chciał mi w ogóle działać ale jako, że jest niezalecany, skupiłem się na ssh. Jednak na początku byłem nieco zdezorientowany, gdyż próbowałem się do niego dostać tak

git clone ssh://repos.domena/nazwaRepozytorium

Jednak okazało się, że dostęp przez ssh nie wymaga podania nazwy repozytorium, wystarczy dowolna domena, która jest podpięta pod nasz hosting (ich lista jest sprytnie ukryta pod zielonym napisem “domena” i pojawia się po najechaniu na nią kursorem).

No i tak w końcu dochodzimy do sedna – podpięcie lokalnego repozytorium pod repozytorium główne:

Przejdź do katalogu z kopią roboczą i dodaj informacje o repozytorium głównym:

xxx@linux-3hr8:~/srv/gitWorkingCopy> git remote add origin ssh://user@domain.vipserv.org/

a następnie pchnąć naszą wersję do głównego repozytorium:

xxx@linux-3hr8:~/srv/gitWorkingCopy> git push origin master
The authenticity of host 'domain.vipserv.org (188.40.80.172)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'domain.vipserv.org' (RSA) to the list of known hosts.
user@domain.vipserv.org's password:
Counting objects: 1039, done.
Compressing objects: 100% (904/904), done.
Writing objects: 100% (1039/1039), 1.08 MiB | 1584 KiB/s, done.
Total 1039 (delta 389), reused 0 (delta 0)
To ssh://user@domain.vipserv.org/
 * [new branch]      master -> master

Czyli jak widać łatwe i przyjemne. W całości pomógł mi ten wpis na blogu http://toolmantim.com/thoughts/setting_up_a_new_remote_git_repository

Share Button

Z każdym krokiem bliżej GIT a dalej SVN

Powoli przekonuję się go systemu zarządzania kodem źródłowym (scm) GIT. Pewnie zanim uda wprowadzić się go w firmie trochę minie czasu (przecież w zeszłym roku wdrożyliśmy SVN, które dał nam niezłego kopa przy pracy nad dużymi projektami).

Git jest mniej sławnym dzieckiem Linusa Torvaldsa (tak, tego samego od Linuksa), który zrozumiał, że SVN choć świetny – nie jest idealny.

Git-scm

Jeśli przeszukasz internet dowiesz się wiele o zaletach tego systemu wynikające z innej filozofii, która repozytorium nie traktuje jako zbioru kolejnych wersji, ale jako zbiór konkretnych zmian. Dzięki temu sytuacje, które w SVN wymagają rozwiązywania konfliktów w GIT najczęściej sprowadzają się do automatycznego scalania (merge) zmian. Podobno dzięki tej zmianie branchowanie z trudnego tricku zmienia się w wygodne i użyteczne narzędzie.

Sam postanowiłem delikatnie wejść w ten strumień. Są projekty, które robię samodzielnie. Nie wymagają one systemu zarządzania wersjami, skoro jestem jedyną osobą, która ma dostęp do kodu. Jednak jestem tak przyzwyczajony do udogodnień, które przynosi ze sobą scm, że i tak zakładam repozytorium.

W prywatnych projektach przesiadam się na GIT bo założenie repozytorium jest proste jak 1,2,3(4):

cd /sciezka/do/projektu
git init
git add .
git commit -m "zakładam repo ^_^"
Share Button