Git na serwerze #tutorial

Posted by

W katalogu głównym (albo innym, najlepiej niepublicznym) inicjalizujemy puste repozytorium gita o nazwie test.git:

$ git init --bare test.git

Mamy już postawione repozytorium na serwerze. Jeśli chcemy procować z nim lokalnie to trzeba je sklonować. Jest na to kilka sposobów:

git clone ssh://user@host.xz:22/home/user/test.git/

Podajemy hasło i mamy sklonowane całe repozytorium. Możemy dowoli z nim pracować, commit`ować, pull`ować i push`ować, jak długo chcemy.

Dodatkowo możemy zauważyć potrzebę podglądu zmian bezpośrednio na serwerze. Co możemy wtedy zrobić?

Tworzymy plik w test.git/hooks/post-receive
A w nim:

#!/bin/sh
git --work-tree=/home/user/public_html/test --git-dir=/home/user/test.git checkout -f

Oczywiście ścieżki do git`a oraz katalogu publicznego są podane przykładowe. Trzeba sprawdzić jaka jest na naszym serwerze i wpisać odpowiednią: do git`a oraz do katalogu gdzie chcemy mieć pliki które trafiły na serwer.

Źródła i linki:

  1. http://krisjordan.com/essays/setting-up-push-to-deploy-with-git
  2. https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks
  3. https://tygertec.com/git-hooks-practical-uses-windows
print

2 komentarze

  1. Zrobiłem tak jak w Twoim poradniku, ale hook `post-receive` nie chce się wykonać
    Uprawnienia sprawdziłem (755), ścieżki work-tree i git-dir też sprawdziłem, wszystko jest poprawnie, a mimo to nie chce wykonać hooka. Czy są jakieś typowe przypadki, gdzie jest problem z wykonaniem hooka? Co jeszcze powinienem sprawdzić?

    1. Hmm.. nie przypominam niestety sobie żebym po ustawieniu odpowiednich uprawnien miał problemy z tym hookiem, ale spróbuje Ci pomoc.
      1) Upewniej sie czy skrypt jest prawidłowy i dziala wykonujac z go bezposrednio z konsoli: ./post-receive , bądź sh post-receive
      2) Upewnij się czy nie ma literówki w nazwie hook’a
      Jeśli skrypt dziala i literówki nie ma, to może sprobuj sprawdzić czy inne hooki działają, być moze to problem gdzieś wyżej..

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *