まず、コードと構成を分けます。コード全体はMy_app
にあり、開発者だけがユーザーに触れてはいけませんが、構成はルートディレクトリに置くことができます。
あなたがデフォルトと実際の構成を分離する方法、複数のオプションがあります。
は、デフォルトの設定を持っており、ユーザーは自分のローカル設定を設定することができます。ユーザーはconfig.yaml
ファイルを作成する必要があります。たとえば、bash(および他の多くのプログラム)は、設定を/etc/bash.bashrc
から読み込み、~/.bashrc
から更新を取得します。このアプローチの欠点は、構成のマージメカニズムを実装する必要があることです。設定の一部がかなり静的/複雑(プログラム設定や変換ルールなど)しているが、別の部分を上書きする必要がある(ユーザ名/電子メールアドレス)場合は、これが良い考えです。
コピーconfig.default.yaml
〜config.yaml
をユーザに要求する。プログラムのインストール時またはconfig.yamlが存在しないときの実行時には、コピー方法の説明でエラーをスローするか、デフォルト設定に戻すか、またはデフォルト設定をconfig.yaml
にコピーしてから続行することができます。デフォルトの設定には多くの文書を入れることができますが、欠点は長い設定ファイルになります。たとえば、php's default configurationは2000行です。
最も重要な(またはすべての)設定オプションをユーザにプロンプトし、debianのdebconfのような小さな設定ファイルを作成します。プログラムにインタラクティブなUIがある場合は、これが良い考えです。
あなたは最も重要なオプションをユーザーに要求し、デフォルトの設定に依存している、またはユーザーを促すメッセージが表示されたあとわずかな変更で、長いデフォルトの設定をコピーたとえば、これらのオプションを混在させることができます。
これらのすべてのケースでは、gitignoreにconfig.yaml
を含める必要があります。チェックインしないでください。デフォルトの設定ファイルは、手動でコピーすると思われる場合はリポジトリの最上位に配置する必要があります。
答えをhttps://stackoverflow.com/a/45114943/7976758 – phd