2010-05-06 19 views
6

Hey, stellen Sie sich eine einfache Webapp mit einer log4j.properties, die unter Versionskontrolle ist. Ich kann es nicht zu svn:ignore hinzufügen, weil es eine obligatorische Datei ist. Wenn ich benutzerdefinierte Änderungen für die Entwicklung mache und ich sie nicht binden will, muss ich auf unbeabsichtigte Commits achten. Für eine Datei ist es einfach zu handhaben, mit 3 oder mehr Dateien wird es gruselig.Schützen Sie Dateien vor SVN commit

Gibt es eine Möglichkeit, diese Dateien vorübergehend von svn commit zu deaktivieren? Also ist es einfach zu begehen? Ich arbeite mit svn und subclipse.

Antwort

10

Die typische Art und Weise Situationen wie diese zu behandeln ist folgendes zu tun:

  1. Erstellen Sie eine Kopie der Datei unter einem Namen, dass es zu einem Repository ist eine Vorlage
  2. Commit die Vorlage zeigt
  3. Ignorieren Sie die Originaldatei

auf diese Weise werden Sie eine neue Kopie herumliegen haben, und während der Bereitstellung können Sie die Datei wieder aus der Vorlage in der realen Datei kopieren.

Auf diese Weise riskieren Sie keine schlechten Änderungen an dieser Datei, und zumindest für andere Versionskontrollsysteme riskieren Sie nicht, dass jemand die Datei überprüft und die Sperre vergisst.

Es gibt keine Möglichkeit in Subversion anzugeben, dass es sich bei einer Datei nur um einen erstmaligen Commit handelt. Wenn Sie es Ihrem Repository hinzugefügt haben, haben Sie Subversion mitgeteilt, dass Änderungen in dieser Datei protokolliert werden. Sofern Sie nicht manuell sicherstellen (oder ein Werkzeug schreiben oder Ihre Werkzeuge ändern), niemals Änderungen an dieser Datei zu bestätigen, wird Subversion Ihnen nicht helfen.

+0

+1: Ich benutze genau die gleiche Technik und es funktioniert gut. – ereOn

+0

Ok, aber ist das nicht sehr unwichtig für neue Arbeiter, das Projekt zu checken und alle diese Dateien umzubenennen, um booten zu können (zum Beispiel an wtp, wo ist kein Build-Skript, das die Dateien automatisch umbenennen kann)? – codevour

+1

Lassen Sie mich meine Antwort umformulieren. Es gibt keine Möglichkeit, Subversion dazu zu bringen, das zu tun, was Sie wollen. Sie müssen im Grunde wählen, welche Art von Unannehmlichkeiten Sie verwenden möchten. Ich habe keine Erfahrung mit "wtp". –

1

Die Art, wie ich das mache, ist zum Beispiel Dateien namens log4j.properties.server, und dann habe ich mein Deployment-Skript eingerichtet, um die .server-Dateien anstelle der normalen zu kopieren.

7

Meine Lösung für dieses Problem war, einen neuen (irgendwie virtuellen) Benutzer auf unserem SVN-Server zu schaffen und ihn zu allen Projekten hinzuzufügen, nennen wir ihn Locker. Also habe ich als Benutzer Locker eine Sperre für die Konfigurationsdateien gesetzt, die nicht in der Codebasis geändert werden sollen.

Et voilà! Die Dateien werden nicht mehr versehentlich gespeichert. Wenn das Produktivsystem jedoch eine Aktualisierung der Konfigurationsdateien benötigt, kann die Sperre von jedem Teammitglied erzwungen werden. Die Dateien können dann von den Benutzern aktualisiert und erneut gesperrt werden.

Vielleicht ist es keine Lösung für alle, einige Unternehmensrichtlinien können die Verwendung von Proxy-Benutzern verbieten.