ドキュメントルートにリモートリポジトリがあり、それをプッシュして、ライブサイトへの展開メカニズムとして使用しているようです。ドキュメント ルートに git リポジトリを配置するのは、良いデプロイ方法とは言えません。(コミット履歴全体と、潜在的に恥ずかしい未リリースのコードを含む、誰でもレポ全体を複製できます。) 設定が異なる可能性がありますが、私はあなたが書いたものに基づいてこの仮定に従います。
代わりに、post-receive フックを使用してドキュメント ルートに抽出master
し、git リポジトリを別の場所に置いておくと、圧縮された JS ソースと圧縮されていない JS ソースを恐れることなく保存できます。
ステージング サーバーのドキュメント ルートから git リポジトリを移動します。
.git/hooks/post-receive
ステージング Web サーバーで:
#!/bin/sh
GIT_WORK_TREE=/path/to/your/docroot git archive master --format tar | tar -x "*.min.js"
これにより、選択したディレクトリにブランチgit
のクリーン コピーがエクスポートされます。master
を介してパイプすることtar
でこれを行います。これを使用して、送信したいファイルと送信しないファイルを正確にフィルタリングできます。post-receive
はシェル スクリプトであるため、ここで実際に使用して、展開後に必要なハウスキーピングを行うために後続の行を追加できます。
そこで、おすすめしたいのが上記です。それでも先に進み、マスター ブランチにファイルのサブセットのみを保持したい場合は、リンク先の方法をシェル スクリプトで使用できます。
ローカル ブランチ名がlocal
であり、「デプロイ」したいものはすべてmaster
既にコミットされていると仮定して、次のようにしますdeploy.sh
(必要に応じて追加し.gitignore
ます):
#!/bin/sh
git checkout master
git diff-tree --name-only -r local | grep ".min.js$" > temp_file_list.txt
git checkout local `sed 'N;s/\n/ /' temp_file_list.txt`
git commit -m "Selective 'merge' of minified js from my local branch"
次にdeploy.sh
、変更された .min.js ファイルで master を更新するたびに実行します。Windows を使用していて、ローカル ファイルを DOS 形式のままにしている場合は、上記のコマンド\r\n
だけ\n
でなくsed
、bash ベースのコマンド ライン git ツールをインストールする必要があります。