4

たとえば、Web サイトの複数の場所から作業したいと考えています。すべての PC には、プロジェクトの独自のリポジトリ (できれば Mercurial、それ以外の場合は Git) がありますが、各コンピューターには、base_url など、ローカルでテストするための独自の構成設定が必要です。グローバル構成設定も含むこの構成ファイルをバージョン管理する最良の方法は何ですか?

リポジトリの詳細:

  1. config.php を使用した BitBucket のレポ: グローバル構成 + ライブ サーバーの構成
  2. config.php を使用した PC A のレポ: グローバル構成 + PC A に固有の構成
  3. config.php を使用した PC B のレポ: グローバル構成 + PC B 固有の構成

BitBucket リポジトリをチェックアウトすると、完全なライブ サーバー構成が取得されます。調整を行ってローカルでテストする必要がある場合は、ライブ設定を PC 固有の設定に変更します。次に、バグなどを修正し、コミットして BitBucket にプッシュします。この時点で、PC 固有の設定がグローバルな BitBucket リポジトリにプッシュされます。これは私が望むものではありません。

では、これを適切に行うための最良の方法は何ですか?

4

3 に答える 3

3

必要なのは、使用しているマシンに応じて構成を変更するスマッジ クリーン スクリプトです。

https://git-scm.com/docs/gitattributes

https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#_keyword_expansion

各 PC の構成を個別のブランチで追跡する場合は、構成を変更してから、共通のリモートで公開したブランチに変更をマージしますが、変更は無視します。

git merge --no-ff -s ours yourbranch

今後はブランチからマージできますが、DAG に従って既にマージされていると見なされるため、構成の変更はマージされません。

お役に立てれば。

于 2011-04-25T18:18:13.873 に答える
1

私はphpにあまり詳しくありませんが、(必須?)config.<hostname>.phpファイルを含めることができるグローバルなconfig.phpファイルを作成できると思います。このようにして、すべての構成ファイルがバージョン管理下に置かれますが、競合は発生しません。PHPには、現在のマシンのホスト名を判別してから、適切な構成ファイルをロードする何らかの方法が必要です。

結果のリポジトリレイアウトは次のようになります

/
/config.php
/config.web_server.php
/config.pc_A.php
/config.pc_B.php
于 2011-04-25T17:15:54.563 に答える
0

config.phpを透過的に設計します。リポジトリ自体は、それが実行されている環境を気にする必要はありません。あなたのケースでこれを起動して実行するために何を変更する必要があるのか​​わかりませんが、おそらくconfig.phpからいくつかの設定に機能を持ち上げて、config.phpによって読み取られます。

于 2011-04-25T17:16:21.913 に答える