Często początkujący programista w ogóle nie korzysta z czegoś takiego jak system kontroli wersji, bo myśli po co mi to, ja i tak tworze tylko sam, a ciągłe opisywanie i commitowanie do systemu kontroli wersji zabiera mi dodatkowy czas. Właśnie chodzi tu o czas, którego możena później żałować w przypadku niespodziewanej awarii. No dobra ten artukuł nie miał być o sensie używania systemu kontroli wersji do swoich projektów, ale o jego używaniu :).
Każdy z nas (programistów) prędzej czy później spotka się z problemem publikowania swoich projektów stron www czy innych systemów dedykowanych na hostingach które nie dają dostępu do SSH. No i tutaj pojawia się nam spory problem, bo jak z jednym razem używać GITa i FTP.
Częsty proces pracy nad takim projektem wygląda następująco:
- Commit do GITa,
- Połączenie z serwerem FTP,
- Sprawdzenie co się zmieniło (często jeszcze pamiętasz co zmieniałeś, ale jeśli nad projektem pracuje jeszcze więcej osób może być ciężko zapamiętać to wszystko, wiem moża użyć polecenia GITa, no ale po co),
- W końcu wysyłasz cały projekt na nowo,
- Wysłanie na serwer,
- Sprawdzenie czy wszystko działa.
Jeśli pracujesz według ww. wzorca to właśnie straciłeś dużo czasu! Pewnie zastanawiasz się czy może być łatwiej? Tak może być!
Z pomocą przychodzi nam GIT-FTP autorstwa René Moser oraz Maikela.
Co to jest ten GIT-FTP?
Program ten przesyła pliki na serwer w taki sam sposób, w jaki działa GIT, tworzy plik dziennika na serwerze i śledzi zmiany lub pliki, które zmieniłeś, a po przesłaniu używa GIT do określenia, które pliki są zmienione lub nowo utworzone i przesyła tylko te pliki. Zalety takiego rozwiązania:
- Nie musisz wybierać plików do przesłania,
- Oszczędzasz przepustowość i nie przesyłasz niepotrzebnych plików,
- Nie ma potrzeby przełączania się na klienta FTP,
- Zmniejsza zużycie czasu programisty,
- Możemy łatwo wrócić do dowolnej poprzedniej wersji,
- Łatwo scala pliki edytowane przez wielu programistów.
Jak zainstalować GIT-FTP?
Wszystko jest opisane w pliku INSTALL.md znajdującym się z repozytorium projektu ale po krótce opisze to dla instalacji w systemie Windows.
Windows
Krok 1 - Instalacja GIT
Najpierw musisz mieć zainstalowanego GITa, ale to chyba już masz, jeśli nie, to pobierz go z https://git-scm.com/downloads i zainstaluj!
Krok 2 - Instalacja GIT-FTP
Znajdź GIT Bash w menu start Windowsa (lub w katalogu C:\Program Files\Git) i kliknij w niego prawy klawiszem myszki, z menu wybierz "Uruchom jako administrator". Gdy otworzy się GIT Bash użyj poniższych komend:
curl https://raw.githubusercontent.com/git-ftp/git-ftp/master/git-ftp > /bin/git-ftp chmod 755 /bin/git-ftp
To jest pobranie i skopiowanie do odpowiedniego katalogu pliku git-ftp.
Krok 3 - Konfiguracja
Tutaj sprawa też jest prosta, ponieważ wystarczy dopisać do configa GITa parę ustawień, pamiętaj aby to zrobić w swoim repozytorium.
git config git-ftp.url ftp://ftp.yourdomain.com/public_html/whatever_path git config git-ftp.user ftp_username git config git-ftp.password ftp_password
Krok 4 - Co dalej?
Mamy skonfigurowanego GITa i GIT-FTP, to teraz pora wyjaśnić jak tego używać.
Otwórz w konsoli poleceń katalog projektu np. c:/wamp/www/mojprojekt.
Jak już wspomniałem powyżej, GIT-FTP tworzy plik dziennika na serwerze. Plik ten jest tworzony tylko raz i to podczas inicjacji repozytorium.
Do tego celu użyjemy poleceń (ale tylko jeśli mamy pusty folder):
git init git ftp init
Inaczej jest jeśli mamy już projekt w repozytorium, ale chcemy dodać do niego funkcjonalność GIT-FTP, w tedy polecenie jest następujące:
git ftp catchup
git ftp catchup tworzy tylko plik dziennika na serwerze, aby zapisać hash do śledzenia zmian i nie przesyłać żadnych plików. Po uruchomieniu tego polecenia będziemy mogli dokonać zmian i uruchomić git-ftp push, aby przesłać tylko zmienione pliki.
Jako że GIT-FTP używa GIT, więc musimy zatwierdzić nasze zmiany przed przesłaniem!
git add . git commit -m "files changes"
Teraz aby wysłać zmiany na serwer FTP wystarczy użyć polecenia
git ftp push
Dzięku temu na serwer FTP zostały wysłane tylko i wyłącznie pliki które zostały zmienione.
Pamiętaj, że GIT-FTP wypycha tylko pliki na serwer poprzez FTP ale nie do repozytorium GIT, jeśli chcesz przesłać do repozytorium musisz uruchomić git push! Można sobie stworzyć hooka dla ułatwienia sobie pracy.
Jeśli chcesz zapobiec przesyłaniu niektórych plików lub folderów, utwórz plik .gitignore i podaj w nim ścieżki do tych plików i folderów, tak jak to ma miejsce w normalej pracy z GIT.
Mam nadzieję, że choć trochę pomogłem. Zachęcam do napisania cennych opinii i doświadczeń na ten temat w komentarzach, aby podzielić się nimi z innymi programistami i przyjaciółmi.
PICTURE CREDITS