2012-02-28 3 views
5

私はリポジトリ内のすべてのファイルをチェックアウトするには、次のコマンドを使用して、私のGitのリポジトリにポスト受信スクリプトを使用している:Gitは、プッシュで変更/追加されたファイルだけをチェックアウトに受信しますか?

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

私は似た何かをするだけとなっているファイルをチェックアウトしたいのですプッシュで修正または追加されます。ファイルがチェックアウトされると、受信後スクリプトはこれらのファイルに対して他のコマンドを実行し、最後にファイルを削除してディレクトリが空になるようにします。

これは可能ですか?

答えて

5

あなたはあなたにこのフックが標準でoldrevnewrevrefを受信すると、私は

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

を考えることでしょうpost-receiveフック内のファイル

git diff --name-only from..to 

のリストを与えるためにgit diffを使用することができます入力

+0

新しいファイルをディレクトリにチェックアウトするために必要なファイルのリストは必要ありません。私はおそらく、私はサーバー上でホストされている裸のリポジトリを使ってこれをやっていると言及するべきです。 – startupsmith

+0

どのファイルが適切であるか分かったら[必要な場所にファイルをダンプすることができます](https://github.com/AD7six/git-hooks/blob/develop/utils.php#L101)。しかし、最初に行動するファイルを知る必要があり、チェックアウトを一切やりません。 – AD7six

+0

それでは、git diff出力をpost-receiveフックスクリプト内のcopyFiles PHP関数フォームに渡すことはできますか? – startupsmith

関連する問題