5

gitを使用してライブWebサイトへのデプロイメントを管理しようとしています。私が抱えている問題は、本番環境にプッシュするときに更新したくない設定ファイルがいくつかあることです。

私が見ているのは、フックまたはスマッジ/クリーンを使用して、ファイルの内容を次のように変更することです。

<?php
define('DB_NAME', 'live');
define('DB_HOST', '127.0.0.1');
define('DB_USER', 'live_user');
define('DB_PASS', 'livePass');

<?php
define('DB_NAME', 'local');
define('DB_HOST', '127.0.0.1');
define('DB_USER', 'local_user');
define('DB_PASS', 'localPass');

プロセスを通して私に話すことができる人はいますか?

ポストレシーブフックとシェルスクリプトを使用してコンテンツを置き換えることを考えましたが、理想的には、git checkout -fを実行する前に、リポジトリのコンテンツを変更して、ライブコピーで変更しないようにします。

4

2 に答える 2

6

理想的には、git checkout -fを実行する前に、リポジトリの内容を変更したいのですが、その後のライブコピーでは変更されません。

最も近いのは、の値を置き換えるフィルターコンテンツドライバーですgit checkout

汚れ

Git属性に関するScottSchaconのProGitブックページから:セクション「キーワード拡張」)

.gitattributesしたがって、あなたの場合:ファイルで宣言されたスマッジフィルター。

「 gitはスペースとタブを自動的に切り替えることができますか? 」を参照してください。ただし、sedを使用してローカルをライブに置き換えます(この例のように)

于 2013-01-11T16:16:51.923 に答える
0

全体像を把握するには、トピック「Gitのカスタマイズ-GitブックのGit属性」を最初から最後まで読む必要があると思いますが、特に「キーワード拡張」の部分を注意深く調べてください。作業ディレクトリ(およびその後ろ)の最終テキスト。これらは、.gitattributesファイルから参照される、WorkingDirectoryを使用してホスト上で実行できる任意のコードです。

注:(ローカルとライブで)異なるclean-filter出力が必要なため、共通のファイル名でローカルとライブのWorkingDirに2つのわずかに異なる(コンテンツの)クリーンスクリプトがある場合があります(本のサンプルのクリーン結果では、すべての場所で同じです) -使用される単一のスクリプト)。

于 2013-01-11T17:28:19.240 に答える