2009-02-23 8 views
10

Ist es möglich, Dateien zu Subversion hinzuzufügen, die nicht versioniert werden sollen? F.ex. Konfigurationsdateien, die bearbeitet werden müssen, um zu jeder einzelnen Umgebung zu passen. Wenn ein neuer Programmierer mit dem Projekt verbunden ist, sollte er die originale Datei von subversion erhalten, aber es wird nicht nach der Bearbeitung commited, und es wird nicht überschrieben, wenn er aktualisiert wird.Hinzufügen nicht versionierter Dateien zu Subversion

Vielleicht ist das Erstellen eines Tags für das gesamte Originalprojekt die Lösung? Zuerst das Tag herunterladen und dann vom Stamm aktualisieren?

Irgendwelche Ideen?


Klarstellung zu folgenden Erläuterungen: Das Projekt (Sitecore) besteht aus etwa 30k Anzahl verschiedener Dateien. Wir müssen ungefähr 100 davon veröffentlichen. Wenn wir alle Dateien in die Versionierung aufnehmen sollten, dauert jedes Commit für immer (da Tortoise alle Ordner durchsucht). Heute erstellen wir eine Zip-Datei, die alle unversionierten Ordner enthält, legt die Ordner als ignor in svn fest und fügt dann die Zip-Datei hinzu. Problem ist, wenn wir eine oder mehrere der Dateien in der Zip ändern müssen, dann müssen wir eine neue ~ 1GB-Zip für den Repo festschreiben.

+0

Nur eine Vermutung: Sind diese unversionierten Dateien Daten, und die versionierten Dateien sind die eigentliche Software? –

+0

Nein, es sind nicht nur Daten. Es ist hauptsächlich das Sitecore CMS. Konfigurationsdateien, Binärdateien, Bilder, Dokumente und so weiter. – Zooking

Antwort

14

ich die unversionierte Dateien auf einem Web- oder Dateiserver für jedermann zugänglich mit dem Projekt hochlegen würde, und fügen Sie einen Skript automatisch (wget/scp/etc.), Um die Dateien herunterladen (gezippt, wenn nötig) und extrahieren sie zu svnignored Ordnern, so dass sie nicht von Subversion abgeholt werden.

Wenn Sie besorgt sind, dass sich diese Dateien ändern, dann sollten sie nicht versioniert werden?

svn:externals kann auch in dieser Situation nützlich sein. I denken können sie eingerichtet werden, um leicht ignoriert werden, wie die Umstände es zulassen.

+0

Habe noch nie mit Vorlagen in SVN gearbeitet. Würde diese Methode funktionieren, wenn die Datei eine Binärdatei ist? – Zooking

+0

Mit Vorlage wollte ich nur eine generische Version der Datei erstellen, die in Subversion ist, aber ein Skript die generische Version automatisch auf die spezifischen Versionen kopieren –

+0

Welche Art von Binärdatei haben Sie, die auf einige lokale Umgebung verlassen würde? Chancen sind, was auch immer es ist, Sie könnten es wahrscheinlich aus der Binärdatei trennen. – drby

4

Ich würde ein Skript erstellen, das beim Ausführen die Konfigurationsdateien generiert. Auf diese Weise müssen Sie sich keine Sorgen machen, dass Ihr SCM in die Quere kommt.

2

Verwenden Sie einfach eine Templatefile dafür. Angenommen, Ihre Datei heißt config.txt. Sehen Sie sich die Datei an und fügen Sie einige Markierungen ein, in denen die lokalen Einstellungen angezeigt werden sollen. Benennen Sie sie in configTemplate.txt um und übernehmen Sie sie. Dann sollte jeder Entwickler die Datei auschecken, eine Kopie davon erstellen, den Vorlagenteil des Dateinamens entfernen (damit jeder die korrekte Datei config.txt erhält) und die neue Datei der Ignorierliste hinzufügen. Dann lassen Sie entweder einfach jeden manuell in den lokalen Einstellungen bearbeiten, wo die Markierungen in der Vorlagendatei sind, oder verwenden Sie ein Skript, um es für sie zu tun (wenn möglich).

Die Vorlagendatei wird nie geändert (es sei denn, es gibt natürlich einen Unterschied im Format der Konfigurationsdatei).

In Antwort auf Ihre bearbeiten (und schreiben):

Bilder, Dokumente und binäre Dateien, die nicht automatisch generiert werden sollten wahrscheinlich alle unter Versionskontrolle gestellt werden. Oder zumindest sehe ich keinen guten Grund, sie unversioniert zu halten.

5

In einigen Fällen ist es nicht einmal notwendig, eine web.config pro Entwickler zu erstellen, da das .Net-Konfigurationsformat das Überschreiben bestimmter Abschnitte Ihrer Konfigurationsdatei über das Attribut configSource erlaubt.

Das Attribut configSource gibt einen Dateinamen an, der (wenn die Datei vorhanden ist) den angegebenen Block überschreibt und wenn der Block nicht vorhanden ist, wird er unverändert verwendet.

<?xml version="1.0"?> 
<configuration> 
    <connectionStrings configSource="connections.config"> 
     <add name="LocalSqlServer" 
      connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
      providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 

Auf dem Entwickler-System kann man einfach ein connections.config mit den Anschlüssen für ihn hinzufügen, während der Rest der Einstellungen gemeinsam genutzt werden kann.

(So ist das das Problem der Vorlagen nicht lösen, aber es kann Ihnen helfen, eine große Vorlage als viele kleine verwalten)

3

Sie zu überdenken müssen, wie Sie subverion verwenden. Subversion speichert Versionsinformationen über Dateien; nicht mehr und nicht weniger. Sie können nicht versionierte Dateien nicht in Subversion speichern. macht keinen Sinn. Einen 1GB-Zip in Subversion zu speichern wird auch nichts Gutes tun.

Sie sollten auf eine Art und Weise schauen, wie die Entwickler Einstellungen in diesen Dateien über personalisierte Konfigurationsdateien im Home-Verzeichnis des Benutzers oder möglicherweise Umgebungsvariablen überschreiben können.

0

Lassen Sie jeden Programmierer an seinem eigenen Zweig arbeiten und lassen Sie ihn ihre Änderungen wieder in den Hauptzweig/-stamm zusammenführen. Natürlich müssen Ihre Teamkollegen die Versionskontrolle nutzen und mehr als nur Checkout, Update und Commit nutzen können.