2011-11-29 8 views
11

問題秘密をgitリポジトリから守るベストプラクティスは何ですか?

このファイルツリーを開発リポジトリと見なしてください。私はまだ他のユーザーが簡単に自分の資格情報を設定することができるようにリポジトリにのクリーンバージョンを維持する必要がありながら - 有効な資格情報を記入する必要がsupersecretstoragecredentials.ini開発については、

 
- foo/ 
    - .git/ 
    - [...] 
    - bar/ 
    - backupclient.py 
    - supersecretstoragecredentials.ini 

可能な解決策

  1. .gitignoresupersecretstoragecredentials.inisupersecretstoragecredentials.inisupersecretstoragecredentials.ini-exampleをコピーするために、ユーザに指示supersecretstoragecredentials.ini-example
    1. を作成します。
  2. backup.pyに上書きする設定ファイルの場所を追加します。これは、gitによって無視されます(など)。supersecretstoragecredentials_local.ini

kanが指摘したように、これらの二つのソリューションは似ているがない全く同じ、ワークフローワイズ。

その他の方法はありますか? gitには、この種の問題を解決するための機能がありますか?

+2

+1オプション1 – Thilo

答えて

11

超耐久性基準にチェックを入れてください。いくつかのプレースホルダ値を持つiniファイルを作成し、次に

git update-index --assume-unchanged supersecretstoragecredentials.ini 

このファイルの今後の変更を追跡しません。

はあなたが#2のオプションは、もっともシンプルでクリーンな証明している、あなたの質問に記載されているすべてのオプションを試した後、これまでの回答では、私の経験では

git update-index --no-assume-unchanged supersecretstoragecredentials.ini 
+1

この解決策の唯一の問題は、別のユーザーによる「git pull」がマージ競合を作成することです。それでも、あなたの消費者基盤が限られている限り、それは素晴らしい解決策です。 – joar

+0

@jwandborg注目すべきポイント!このファイルはローカルの資格情報を格納するために使用されているため、このソリューションを提案しただけです。 – dexter

5

オプション1で説明している内容は、基本的にコンテンツfilter driversmudgeステップでカバーされています。

filter driver

あなたは "How to work on a drop-in library?" の質問で提示2つのオプションがあります。

汚れスクリプトがかかるだろうあなたのsupersecretstoragecredentials.ini-example(バージョン管理)、supersecretstoragecredentials.ini(Gitのでは無視さバージョニングない、)として、それをコピーして、別のソースからその値を入力します。

しかし、あなたのポリシーをどのように実装するのかという技術的な側面のほかに、秘密の値がGitリポジトリには全く格納されていないことを確認することが重要です。

3

私はあなたのソリューションを使用しています(あなたの2つのソリューションは同じですが、ファイル名のみが異なります)。あなたはそれに問題がありますか?どのような機能を期待していますか?

はまた、より多くの興味深いソリューションは、うまくいけば、それはあなたが何をしたいのです

git update-index --assume-unchanged supersecretstoragecredentials.ini 

あります。しかし、もしアップストリームがファイルを変更し、あなたが変更を引っ張っているならば、それは失敗します(完全には良いか悪いかはわかりません)。

1

を使用して、これをリセットすることができます。それは問題を確実に解決しますが、最も魔法が少なく、理解しやすいものです。それは最善の方法で退屈です。

+0

それで、http://stackoverflow.com/a/8309450/202522に記載されている解決策は、最も簡単で最良の選択です。 – joar

+0

いいえ、 '_local.ini'ファイルに' .gitingore'を明示します。 –

0

私が現時点でトライアルしていることは、秘密です。

https://github.com/awslabs/git-secrets

それはでチェックすべきではありません資格情報のように見えるパターンのためのプロセスとチェックをコミットgitのにフック。

あなたはそれが各開発者のシステムにインストールされ、用に設定されていることを確認する必要があります各gitリポジトリこれは、ビルドプロセスにチェックを統合すると、簡単に実現できます。

関連する問題