12

ベア リモート リポジトリを使用して Web サイトの更新を自動的に展開するための 2 つの一般的な方法を見つけました。

1 つ目は、レポを Web サーバーのドキュメント ルートに複製し、更新後のフックでgit pullを使用する必要があります。

cd /srv/www/siteA/ || exit
unset GIT_DIR
git pull hub master

2 番目のアプローチは、「切り離された作業ツリー」をベア リポジトリに追加します。post-receive フックはgit checkout -fを使用して、リポジトリの HEAD を Web サーバーのドキュメント ルートである作業ディレクトリに複製します。

GIT_WORK_TREE=/srv/www/siteA/ git checkout -f

最初のアプローチには、Web サイトの作業ディレクトリで行われた変更をコミットしてベア リポジトリにプッシュできるという利点があります (ただし、ライブ サーバーではファイルを更新しないでください)。2 番目のアプローチには、git ディレクトリがドキュメント ルート内にないという利点がありますが、これは htaccess を使用して簡単に解決できます。

ベスト プラクティスに関して、ある方法が他の方法よりも客観的に優れているか? 私が見逃している他の利点と欠点は何ですか?

4

1 に答える 1

4

リリース管理(ここではデプロイメント)の観点から、リリースメカニズムから独立したターゲット環境を用意するのが最善です。
言い換えると、2番目の解決策(checkout -f)は、その一部であってはならない他のサブディレクトリ(.gitフォルダなど)なしで、プレーンなWebディレクトリ構造を変更します。
たとえば、「gitを使用してnode.jsアプリを本番サーバーにデプロイする」で使用します。

これにより、副作用が最小限に抑えられ、本番環境が干渉することなく、実行に必要なものだけで動作できるようになります。

于 2012-10-07T12:04:20.887 に答える