startupsmith startupsmith - 4 months ago 16
Git Question

Git post-receive to checkout only those files that have been modified/added in the push?

I have been using post-receive scripts in my git repositories with the following commands to checkout all of the files in the repository:

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


I am wanting to do something similar but only checkout the files that have been modified or added in the push. Once the files have been checked out the post-receive script will then run some other commands on these files and remove the files at the end so that the directory will be empty.

Is this possible?

Answer

you can use git diff to give you a list of files

git diff --name-only from..to

in a post-receive hook that'll be I think

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

as this hook receives oldrev, newrev and ref on standard input