2017-01-29 8 views
-2

実際にGitを使用する方法に関する質問。2つの異なる環境からファイルを保存するためのベストプラクティス

2台のサーバー(ステージング用に1台、プロダクション用に1台)に展開されたコードがあります。それは同じコードですが、いくつかのファイル(設定ファイルの異なるパス)に対してです。

注 - 私は通常、開発用ラップトップからコミット/プッシュし、それらの2台のサーバーからプルするだけです。

Gitマスターブランチを、現在実行中の本番ファイルセットと完全にコピーしたいとします。私はそれが理にかなっていると思う - それは?

けれども、私はどこステージングサーバー用の差分を置くことを正確に知っていない:

  • はステージングブランチを使用する方が良いですか?しかし、その後、私はマスターブランチに変更を加えるたびにリマージュすると思います。

  • ステージングサーバ上でローカルにコミットし、パスの変更を行い、そのたびにコミットを(HEADの上に)リベースする方が良いですか?しかし、その後、私はそこに滞在unpushedコミットをして - それは少し混乱になることができ、そして、私は誤ってそれらをプッシュする必要はありません...

は別の、シンプルな、シナリオIドンはあります思う?

+0

。 –

+0

ファイルは両方ともenv(stg、prd)で99%同一です。 1%の差分ではどうすればよいですか? stg環境のバージョンを別のブランチに置きますか? stgサーバー上にローカルに保持されているコミットとしてください(また、リポジトリから新しい変更を加えるたびにrebasedされます)。あるいは、別の「モデル」をうまく使うことができますか? – user3341592

+0

これは現在より明確ですか? – user3341592

答えて

2

これには環境変数を使用する必要があります。ステージングとプロダクションを選択する環境変数を定義することができます。定義されていない場合は、デフォルトにすることができます。

設定ファイルは、環境変数を読み込んで、ステージング環境または本番環境に適した構成を選択できます。

この方法では、gitは常にproductionとMasterを指すことができ、ステージングサーバーは特定の構成をステージングします。

gitの観点から、私はマスターが2つの異なることを行うことができるとは思いません。枝を作成し、それらをマージすることは、別々のファイルとして、これらの設定ファイルを管理するのが最善であるので、これを管理するための最良の方法は、環境変数

+0

たとえば、シェルenv変数について正しく理解していますか?私の違いはそれ以上のことではないので、ASPページやREADMEドキュメントのパスや機能は少し劣っているので、ホスト名によってはすべてを条件として要約することはできません。 – user3341592

+0

@destrifによって与えられたコメントは当然のことだと思います。 http://stackoverflow.com/questions/9636492/branching-different-config-files-for-release-development。このリンクに記載されているように.gitattributesと汚れフィルタを追加することができます – manishg

+0

これはこれを処理するより良い方法です。私には全く知られていません。私は何か新しいことを学びましたことをうれしく思います。もう一度... – user3341592

0

を用いることであろうも痛みです:

  • myconfig.master
  • myconfig.dev
  • ...

私は "Ignore files when merging branches" で説明したようにその後、あなたはを宣言することができますcontent filter driver.gitattributes declarationを使用)チェックアウト時に自動的に正しいファイルがmyconfigとしてコピーされます。
実際に生成されたファイルmyconfigは無視され、非公開です。

smudge

あなたsmudgeスクリプトがでチェックアウトしたブランチの名前を確認することができます:あなたが求めているものを完全には明らかではないが

branch=$(git rev-parse --symbolic --abbrev-ref HEAD) 
関連する問題