質問

を使用していGitの管理私のウェブサイトのイメージソースコードの展開についての試験およびライブサイトでの走行を同一ボックス。この資源 http://toroid.org/ams/git-website-howto もともと、私た、以下のポストを受けフックスクリプトを判別するためのプマイライブサイトに押し出しマ試験サイト:

while read ref
do
  #echo "Ref updated:"
  #echo $ref -- would print something like example at top of file
  result=`echo $ref | gawk -F' ' '{ print $3 }'`
  if [ $result != "" ]; then
    echo "Branch found: "
    echo $result
    case $result in
      refs/heads/master )
        git --work-tree=c:/temp/BLAH checkout -f master
        echo "Updated master"
        ;;
      refs/heads/testbranch )
        git --work-tree=c:/temp/BLAH2 checkout -f testbranch
        echo "Updated testbranch"
        ;;
      * )
        echo "No update known for $result"
        ;;
    esac
  fi
done
echo "Post-receive updates complete"

しかし、私は疑問がこうなってもよくないのでGitの専門家ではあるが、私は推測するGitれ、現在に予約-支払い可能支店頭にこのアプローチの可能性が混乱しない。

なので少数の質問:

  1. この安全ですか?

  2. ううためのより良いアプローチに位置するこの私のベースリポジトリの試験サイトのリポジトリに対応する作業ディレクトリ、そしてそのリポジトリにpushに変化した新しいライブサイトのリポジトリは、対応する作業ディレクトリのサイトのマネタリーベースとしたのかこれも初めてご連絡させて頂きの生産を別のサーバーのチェーン展開します。

  3. ものがあるのか、それは何なのか私が欠?が異なって、綺麗というレベルを判別するための試験や生産の主な利用時のGitの管理サイト?

として追加の注記を踏まViの答えは、いい方法はありませんかいこう扱いは削除せずにmuckingのファイルシステムの?

お -ウォルト

PS-スクリプトが浮かび上がった、複数のレポ(用していますが、なか良いのは以下のとおりです。

sitename=`basename \`pwd\``

while read ref
do
  #echo "Ref updated:"
  #echo $ref -- would print something like example at top of file
  result=`echo $ref | gawk -F' ' '{ print $3 }'`
  if [ $result != "" ]; then
    echo "Branch found: "
    echo $result
    case $result in
      refs/heads/master )
        git checkout -q -f master
        if [ $? -eq 0 ]; then
            echo "Test Site checked out properly"
        else
            echo "Failed to checkout test site!"
        fi
        ;;
      refs/heads/live-site )
        git push -q ../Live/$sitename live-site:master
        if [ $? -eq 0 ]; then
            echo "Live Site received updates properly"
        else
            echo "Failed to push updates to Live Site"
        fi
        ;;
      * )
        echo "No update known for $result"
        ;;
    esac
  fi
done
echo "Post-receive updates complete"

そのレポ-レートに../Live/$sitename(これらは"裸"レポ働木を追加したものinit)の基本的なポストを受け:

git checkout -f
if [ $? -eq 0 ]; then
    echo "Live site `basename \`pwd\`` checked out successfully"
else
    echo "Live site failed to checkout"
fi
役に立ちましたか?

解決

ううためのより良いアプローチをするといっ ベースのリポジトリの試験サイト リポジトリに対応する作業 ディレクトリ、そしてその リポジトリにpushに変化した新しいライブ サイトのリポジトリは、 対応する作業ディレクトリに ライブサイトになりますか?このことはありま 私の生産 異なるサーバーの チェーン展開します。

あります。とても珍しい機会にしたいテストサイト主催に生産サイトです。この危険専門外のほとんどの点で、話さなデータベースの腐敗、ウェブサーバのlockups。

いは通常のVMの設定のための試験。やってるっ自分のノートします。

Gitを使用して展ホームページの内容が、非常に良いアイデアは、多くの人にその例Rob Conery).せてもらう良い機会になりそうだして生活し、実験場とにかく、まずは別の店舗に向かっているとのことでサポート、セットアップとしてリモートラッキング支店に対応するサーバのリポジトリワークフローなど、仕事をお試支店、最後までしっかりと押し込みます試験、試験、合併によるライブを押します。

正直言を作成するのではありませんでくれました。

他のヒント

とは思いもします。

も利用できます"gitアーカイブマスター|tar-C c:/temp/BLAH -x"、"gitアーカイブのライブ-サイト|sshライブ-サイト"タール-C/var/www-x'".

を別々のリポジトリが役に立つのが"押しの中にプッシュ関連のフックの"見え難となることを期待しています。のような長鎖すると脆弱です。

するライブサイトの更新プログラムを手動で試験の後、"試験"のバージョンになっていますか?

また、同ガイドtoroid.orgしてしまいましたが、まず私が注意することがで始まった裸のリポジトリを追加する作業ディレクトリには、追加取り扱いが必要となります。することを見いだし,その次のフックがなければならないときに便利ですしているコンテンツに動的に変化する可能性がある又はその他というデータ利用の場合 git checkout -f

前受

#!/bin/sh
git add -A
git diff --quiet --cached
if [ $? -gt 0 ]; then
    git commit --quiet -m "autocommit"
    echo "Working Directory was out of sync. Pull to receive updated index."
    exit 1
fi

この停止押しの変更がある場合、リモート作業ディレクトリを設定します。それを考えた人物としてのウェブサーバー)の変更も忘れのコミットします。を使用 checkout-f ま破棄します。このフックはこの現象を避けるためには、そのようにコミュニケーションを取り合もありましたが、フック、リモートサーバーの前に引きないことによって得られるこれらの変化はお客様からのお問い合わせ先

ポストを受け

#!/bin/sh
git checkout -f
echo "Working directory synced."

に関する二つの支店では、と思った最初の溶液によりエレガントによる取引に複数のリポジトリなので、しばらく日本に行ってきた生産現場ではこれを使用できるrsync地域に類似しているデルタパッチングします。この試験は、安定した支店のリポジトリの試験サイトとしての作業ディレクトリを設定します。時をリリースの統合の試験を安定的に支店を押してフックを探ることを約束し、安定した支店の電話にはrsync.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top