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:
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ć?
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..