2012-02-28 9 views
5

Używam po otrzymywać skrypty w moim repozytorium git z poniższych poleceń do kasy wszystkich plików w repozytorium:Git post-receive do kasowania tylko tych plików, które zostały zmodyfikowane/dodane w push?

#!/bin/sh 
GIT_WORK_TREE=/var/www/www.example.org git checkout -f 

Ja chce zrobić coś podobnego, ale tylko kasa pliki, które zostały zmodyfikowane lub dodane w push. Po wyewidencjonowaniu plików skrypt po odebraniu uruchomi inne polecenia na tych plikach i usunie pliki na końcu, aby katalog był pusty.

Czy to możliwe?

Odpowiedz

5

można użyć git diff dać listę plików

git diff --name-only from..to 

w haku post-receive że będę myślę

git diff --name-only $1..$2 

jak ten hak odbiera oldrev, newrev i ref na standardowy input

+0

Nie potrzebuję listy plików potrzebnych do pobrania nowych plików do katalogu. Prawdopodobnie powinienem wspomnieć, że robię to za pomocą nagiego repozytorium hostowanego na serwerze. – startupsmith

+0

Gdy już wiesz, które pliki są odpowiednie [można je następnie zrzucić, gdziekolwiek chcesz] (https://github.com/AD7six/git-hooks/blob/develop/utils.php#L101). Ale najpierw musisz wiedzieć, które pliki należy wykonać, a nie zamierzasz w ogóle robić kasy. – AD7six

+0

OK, czy mogę przekazać dane wyjściowe pliku git diff do funkcji php funkcji copyFiles w skrypcie przechwytującym po odebraniu? – startupsmith

Powiązane problemy