2011-10-03 6 views
17

Chciałbym automatycznie skopiować zatwierdzone pliki do określonego folderu, aby można je było przeglądać w przeglądarce, ale chciałbym to zrobić bez konieczności tworzenia puste repozytorium, które odzwierciedla główne repozytorium (jak pokazano here) i chciałbym, aby tak się stało podczas zatwierdzania.Proste git po zatwierdzeniu przechwytywania, aby skopiować zatwierdzone pliki do określonego folderu

Czy istnieje prosty sposób utworzenia haka, który odczytuje, które pliki zostały zatwierdzone i kopiuje je/aktualizuje je na serwerze WWW?

Na przykład: Mam folder o nazwie /example.com i repozytorium git. Chcę, aby po zatwierdzeniu pliku index.html w repozytorium odpowiedni plik index.html z /example.com był aktualizowany o treść zatwierdzonego pliku

Odpowiedz

23

Dobrym sposobem na zrobienie tego jest utworzenie post-commit, które uruchamia git checkout -f z drzewem roboczym ustawionym na katalog, który jest widoczny przez twój serwer sieciowy i katalog git ustawiony na katalog .git w repozytorium programisty. Na przykład, można utworzyć plik, który zrobił .git/hooks/post-commit:

#!/bin/sh 
unset GIT_INDEX_FILE 
export GIT_WORK_TREE=/example.com/ 
export GIT_DIR=/home/whoever/development/web-project/.git/ 
git checkout -f 

być ostrożnym z tego jednak - w -f oznacza, że ​​git można usunąć lub nadpisać pliki, aby /example.com/ mecz drzewa w swoim najnowszym popełnić.

(Pamiętaj, aby plik wykonywalny .git/hooks/post-commit jak dobrze).

+0

ta spełnia swoje zadanie doskonale. Dziękujemy – viorel

+0

W systemie Windows skrypt oczekuje pełnej ścieżki i jaka jest składnia? Dzięki! – andli

+0

@andli Używam msysgit i działa on przy użyciu tych samych ścieżek, które używałbyś w oknie bitu git. – Shlomo

Powiązane problemy