Umgang mit der Codesignatur in einer quellengesteuerten Umgebung

8

Nur eine kurze Frage, hoffentlich:

Mein Team verwaltet eine Software, die die ClickOnce-Bereitstellung verwendet und mit einem Zertifikat signiert ist. Wir behalten das öffentliche Zertifikat, das tatsächlich auf einem separaten Computer verwendet wird, der nur zum Signieren verwendet wird. Das funktioniert gut.

Gelegentlich treten jedoch Probleme auf, wenn jemand es lokal mit einem neuen Testzertifikat signieren muss, damit er die Lösung erstellen und testen kann. Dieser neue Zertifikatfingerabdruck wird zwangsläufig als Teil der Projekteinstellungsdatei zur Versionskontrolle hochgeschoben. Es verursacht kein Problem in der Signaturbox, da die eigenen Zertifikateinstellungen niemals auf den Git-Server übertragen werden. Daher werden die lokalen Änderungen durch Pulls von diesem Computer nicht überschrieben. Dies führt jedoch zu Problemen für alle anderen, da sie über ein eigenes Testzertifikat verfügen, das auf ihrem lokalen Computer verwendet wird.

Gibt es einen richtigen Weg, um mit dieser Situation umzugehen? Vielleicht eine Möglichkeit in Git, Änderungen nur von einem bestimmten Teil einer Konfigurationsdatei auszuschließen, anstatt von der gesamten Sache?

Locke
quelle

Antworten:

9

In Git gibt es keine Möglichkeit, Änderungen nur an einem Teil einer Datei auszuschließen. Normalerweise können Sie diesen Teil der Datei jedoch in eine andere Konfigurationsdatei auslagern und dann diese andere Konfigurationsdatei zur Gitignore-Datei hinzufügen. Auf diese Weise kann jeder Entwickler die Konfiguration nach Bedarf anpassen, verhindert jedoch, dass er versehentlich seine Änderungen eincheckt und andere beeinflusst.

Wie Sie dies tun, hängt natürlich von der Sprache / dem Framework ab. Wie Sie ClickOnce erwähnen, gehe ich davon aus, dass es sich in diesem Fall um eine .NET-Lösung handelt. Angenommen, Sie haben eine web.config mit dem folgenden Inhalt

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

Sie können dies durch ersetzen

<signingInfo configSource="signing.config">

"signieren.konfig" wird der .gitignore-Datei hinzugefügt. Jeder Entwickler richtet signing.config dann so ein, wie es lokal benötigt wird, und es ist nicht erforderlich, explizit daran zu denken, keine Änderungen daran zu übernehmen.

Ruaidhrí Primel
quelle
Diese Idee gefällt mir sehr gut. Es ist einfach und elegant. Wissen Sie, ob es eine Möglichkeit gibt, dies zu tun, wenn sich die Konfigurationsdaten in der Projektdatei selbst befinden (z. B. .csproj oder .vbproj)? Ich google es derzeit, erhalte jedoch weiterhin Ergebnisse für Teilklassen und nicht für Teilkonfigurationsdateien.
Locke
1
Ich habe es nicht persönlich ausprobiert, aber Sie sollten in der Lage sein, ein <Import Project = ""> -Element in Ihrer Hauptprojektdatei zu verwenden und es auf eine andere Projektdatei zu verweisen, die Ihre entwicklerspezifische Konfiguration enthält.
Ruaidhrí Primrose
Nett. Vier Jahre Arbeit mit .NET und ich wusste nie, dass das möglich ist. Ich werde es ausprobieren. Vielen Dank!
Locke