裸のリモートレポを使ってウェブサイトのアップデートを自動的に展開する方法は2つあります。ウェブサイトのデプロイメントのために 'git pull'と 'git checkout -f'を使用する
最初にリポジトリがWebサーバーのドキュメントルートに複製され、更新後のフックでgit pullが使用されている必要があります。
cd /srv/www/siteA/ || exit
unset GIT_DIR
git pull hub master
2番目のアプローチでは、「デタッチされた作業ツリー」がベアリポジトリに追加されます。ポスト受けるフックは最初のアプローチは、ディレクトリをすることができます作業のウェブサイトで行われた変更という利点があり
GIT_WORK_TREE=/srv/www/siteA/ git checkout -f
すなわち、Webサーバのドキュメントルートである作業用ディレクトリにリポジトリのHEADを複製する -f Gitのチェックアウトを使用していますコミットされ、裸のレポにプッシュバックされます(ただし、ファイルはライブサーバー上で更新されません)。 2番目の方法は、gitディレクトリがドキュメントルート内にないという利点がありますが、これはhtaccessを使って簡単に解決できます。
ベストプラクティスという点で、ある方法は他の方法よりも客観的に優れていますか?他にどのような利点と欠点がありますか?
リリースメカニズムとは独立した「ターゲット環境」を持たないというリスク/短所は何ですか?私が考えることができるのはあなたが言及したものです。必要な.htaccessルールを使って簡単に緩和できる.gitフォルダです。私は何が欠けていますか?どんなアドバイスも感謝しています。 – Michelle
@Michelleリリース管理の面では、プロダクションプラットフォームに置かれている/配備されている/管理されているものを厳密に管理しようとしています。アプリを実行するために必要なものだけでなく、余分なツール(git)ではありません。つまり、これは絶対的なルールではなく、 "一般的なベストプラクティス"であり、あなたの状況では、あなたは完全にあなたのprodプラットフォームにgit repoをそのまま保つことができます。 – VonC