2011-01-31 19 views
3

私はこのファイルを持っています。この例の場合、xというフォルダ内にyとします。私はディレクトリにスタブを置いておきたいです(P.S:実際にはthis github projectは私がやりたいことを信じていますが)。この例では、それは次のようになります。はgitリポジトリに1回だけファイルをインクルードします

module.exports.id = ""; 
module.exports.secret = ""; 
module.exports.callback = ""; 

これらの値は、私は一度だけ、リポジトリ内のファイル(スタブ/空を)入れたい理由です、共有すべきではありません。

xを再度変更すると、変更内容はgitリポジトリに格納されず、ディレクトリy内に保存されます。

私は意味があり、これも重複する質問ではないことを願っています。その場合、私はこのトピックを閉じることができるように、これを説明するstackoverflowトピックを知りたいです。

+0

シンボリックリンクを試しましたか? – Amber

+0

あなたは実際にはどういう意味ですか?あなたは例を挙げてください。多分それを答えとして投稿してください。 – Alfred

答えて

5

私はそれを次のように解決:私は(例えば、DIR y.gitignoreによる。)x-defaultにファイルxの名前を変更し、ファイルxを無視するようにgitを設定します。レポをチェックアウトするすべてのユーザーは、チェックアウトされたファイルx-defaultxにコピーし、その値を設定する必要があります。

これは、ファイルx-defaultを問題なく(ユーザーの設定を上書きしないで)新しい値で更新でき、xが無視されるため、ユーザーの値が他のユーザーのreposと同期されないという利点があります)。

あなたのプログラムは、xの存在をチェックし、そこになければ、x-defaultからxをコピーして(またはこれを自動的に行う)ヒントを与える必要があります。


編集

これは動作しますが、私はそれをきれいに行うことができると信じています。

あなたが望むものによって異なります。また、あなたの地元のレポにこれを使用することができます:

git update-index --assume-unchanged x 

ですから、一度ファイルをコミットした後、あなたはさらに変更をコミットしたくない場合は、ファイル上でコマンドを実行します。ここで問題となるのは、他のユーザーがあなたのようなものを望む場合には、一度同じことをしなければならないということです。そうしないと、変更がコミットされます(あなたのものを上書きするか、マージ競合で終了します)。これを元に戻すには

、私は他のソリューションを認識してないんだけど、多分他の誰か

git update-index --no-assume-unchanged x 

を行きます。


編集

P.S:私はこのgithubのプロジェクトは、私は私の最初の答えのような

これ以上のルックスに欲しいものを実際に行います信じています!それらはファイルexample_keys_file.jsを持ち、ファイル.gitignoreにはkeys_file.jsを無視します。

+0

これはうまくいきますが、もっときれいにできると思います。私はgithubへの参照を表示するために私の質問を更新し、なぜこれを使うのでしょうか。たぶん私は電子メールを送信して彼に尋ねます。 – Alfred

+0

私はあなたがあなたのボトムスの部分(oops:$)について正しいと信じています。 'examples/app.js'の中では代わりに' var example_keys = require( './ keys_file'); 'を使います。あなたが気にしないなら、私はあなたの答えを数時間で受け入れるでしょう。他の誰かがより良い解決策を持っているかどうかを確認する時間をもう少し与えたいと思います。 – Alfred

+1

よく、どんな答えも受け入れることを急いでいる必要はありません。もし私がそれを知りたがっているよりよい解決策があれば!しかし、私は別のものを考えることはできません。なぜなら、それは物事が本当に複雑になるからです(レポに半分のファイルしか持たない)。 – Markus

2

この問題に対する標準的なアプローチは次のとおりです。

  1. があなたのリポジトリにtemplate.ext.inを入れ
  2. は、手動で値をtemplate.exttemplate.ext.inをコピーして、変更/メイクファイル/スクリプトが
  3. にtemplate.extを追加する持っているあなた.gitignoreがコミットされないようにします。
+0

これでもうまくいくかもしれませんが、私はconnect-authにこのスタブが含まれているので、よりクリーンにできると思います。 P.S:遅くまでこれを参照するように質問を更新しました:$。 – Alfred

+0

'connect-auth'で参照されているそのファイルはバージョン管理されています。これは、あなたが変更した後で誤ってコミットする危険性があることを意味します。テンプレートをコピーする作業をするか、偶発的にコミットする危険性があります。 '.gitignore'はすでにバージョン管理下にあるファイルを無視しません。 –

関連する問題