ソース管理された環境でのコード署名の処理


8

簡単な質問ですが、うまくいけば:

私のチームは、ClickOnce配置を使用し、証明書で署名されたソフトウェアを管理しています。署名のみに使用される別のマシンで実際に使用される公開証明書を保持します。それはうまくいきます。

ただし、問題が時折発生するのは、誰かがソリューションを構築してテストできるように、誰かが新しいテスト証明書でローカルに署名する必要がある場合です。必然的に、この新しい証明書のフィンガープリントは、プロジェクト設定ファイルの一部としてバージョン管理にプッシュされます。独自の証明書設定がGitサーバーにプッシュされることはないため、署名ボックスで問題が発生することはなく、そのマシンからのプルによってローカルの変更が上書きされることはありません。ただし、ローカルマシンで使用される独自のテスト証明書を持っているため、他のすべての人に問題が発生します。

この状況を処理する正しい方法はありますか?おそらく、Gitで変更を全体ではなく構成ファイルの特定の部分のみから除外する方法があるでしょうか?

回答:


9

Gitには、ファイルの一部への変更を除外する方法はありません。ただし、通常できることは、ファイルのその部分を別の構成ファイルに外部化し、他の構成ファイルを.gitignoreファイルに追加することです。これにより、各開発者は必要に応じて構成をカスタマイズできますが、誤って変更をチェックインして他のユーザーに影響を与えるのを防ぎます。

これを行う方法は、言語/フレームワークによって明らかに異なります。ClickOnceについて言及しているように、この場合は.Netソリューションであると想定します。次の内容のweb.configがあるとします

<signingInfo>
  <certificate path="C:\test\whatever.cert">
</signingInfo>

これを次のように置き換えることができます

<signingInfo configSource="signing.config">

「signing.config」が.gitignoreファイルに追加されます。次に、各開発者はローカルでの必要に応じてsigning.configを設定します。変更をコミットしないことを明示的に覚えておく必要はありません。


私はこのアイデアが本当に好きです。シンプルでエレガントです。構成データがプロジェクトファイル自体(.csprojや.vbprojなど)にあるときにこれを行う方法があるかどうかを知っていますか。私は現在それをググっていますが、部分的な設定ファイルではなく部分的なクラスで結果を得続けています。
Locke

1
私は個人的には試していませんが、メインプロジェクトファイルで<Import Project = "">要素を使用して、開発者固有の構成を含む別のプロジェクトファイルを指定できるはずです。
Ruaidhríプリムローズ

いいね。.NETを使って4年間作業しましたが、それが可能であるとは知りませんでした。やってみます。ありがとう!
Locke
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.