Frage

Ich möchte mit einem Skript basierten Entwicklungssystem Subversion verwenden, und frage mich, was zu meiner üblichen Situation anders zu machen (C # /. NET).

Das normale Tag-zu-Tag-Update / commit Zyklus gut funktionieren wird, wie Tracking und der Vergleich von Revisionen ändern. Wo möchte ich einige Ratschläge ist um Umgang mit Einsatz.

Mit diesem Script-System, gibt es keinen eindeutigen Build-Schritt beteiligt - stattdessen beinhaltet Bereitstellung einen ausgewählten Skript Upload direkt in die Host-Anwendung.

Änderungen an einem Skript nicht unbedingt in der nächsten Version enthalten - sie für die Freilassung danach bestimmt sein kann, oder einen danach.

In einer idealen Welt, ich möchte in der Lage sein, ein Skript in einem bestimmten Release zuzuordnen, sagen die „September 2009“ Release, sobald es getestet worden ist, und dann ziehen alle Skripte für diese Version mit einem einzigen Befehl.

Aktualisieren

Soweit ich das beurteilen kann, werden weder Stichworte noch Änderungslisten die Antwort sein.

Änderungslisten sind nicht persistent (nicht existiert im Repository) und ich brauche eine Lösung, die später zu der Bewertung viel erlaubt.

Stichworte sind das Gleiche wie Zweige - sie enthalten alle Dateien standardmäßig aktiviert und Sie nur erhalten, auf die Revisionen zu wählen.

Ich hoffe auf einen Ansatz, der mit ein leerer Zweig in denen bestimmte Dateirevisionen als würde beginnen platziert werden konnten erforderlich.

Update 2

Zwei Beispiele, die zeigen, wie ich diese Situation mit featues in anderen Werkzeugen erfüllen. Beachten Sie, dass ich nicht diese Werkzeuge überhaupt zu fördern versuchen, wie ich Subversion verwenden möchte, ich bin einfach nur, wie man trainieren will.

Mit QVCS , kann ich meine gewünschte Ergebnis erzielen, indem ein Etikett auf eine bestimmte Revision Anwendung eine Datei. Das Etikett würde an ihrem Platz bleibt, zu dieser Revision dieser Datei angehängt. Zu jeder Zeit, konnte ich eine saubere Kasse tun, in ein leeres Verzeichnis, und angeben, dass nur Dateien mit dem angegebenen Label nach unten kopiert werden sollen.

In ähnlicher Weise mit Starteam , kann ich ein Label anwenden eine Dateirevision und Check-out nur Dateien mit diesem Label.

War es hilfreich?

Lösung

"In einer idealen Welt würde ich in der Lage sein mag, ein Skript in einem bestimmten Release zuzuordnen, sagen die‚September 2009‘Release, sobald es getestet wurde, und dann die Skripts alle für das herausziehen Release mit einem einzigen Befehl. "

Das ist genau das, was Tags ausgelegt sind.

Andere Tipps

Sie können Ihre „Zukunft“ Versionen mit Subversion Zweige verwalten. Wenn Sie eine Änderung vornehmen, die für eine zukünftige Version bestimmt ist, begehen sie an den entsprechenden Zweig. Wenn die Zeit, all die zukünftigen Funktionen in den Kofferraum zu ziehen, kommt, den Zweig zusammenführen.

Das ist nicht wirklich alles, was anders aus dem Workflow für Subversion mit einer kompilierten Sprache, oder in der Tat für einen anderen Zweck.

Siehe Gängige Muster Abschnitt der verzweigenden Subversion Buch für weitere Informationen. Insbesondere klingt der „Feature-Branches“ Abschnitt am besten geeignet für Ihre Situation.

Eine Lösung wäre, eine neue Niederlassung starten svn mkdir mit (statt svn copy) und dann das Kopieren selektiv die von Ihrem Hauptzweig benötigten Dateien anhand von svn copy

Ich sehe das Problem - die nichts mit SVN zu tun hat. Sie mögen einige Dateien in einem Release-Zweig speichern, andere aber nicht. Also entweder Zweig das gesamte Release-Verzeichnis und löschen Sie die Dateien, die Sie nicht wollen, dort zu zeigen; oder erstellen Sie ein neues leeres Verzeichnis und kopieren Sie einfach die Dateien, die Sie wollen.

Das ist so einfach. Sie müssen keine Änderungslisten oder Tags oder überhaupt etwas zu kompliziert, und kein Subversion-System erraten können, welche Dateien Sie wollen. Ich persönlich würde den Zweig tun + Option löschen, dann können Sie die Löschung zu einem späteren Zeitpunkt rückgängig machen, wenn Sie sich entscheiden, Sie die Dateien nicht möchten, zurück.

Ich glaube, dass mit SVN 1.6 Sie Externen Hinweis auf einzelne Dateien haben können. Also, wenn Sie wollen, können Sie eine leere Baumstruktur erstellen und eine Reihe von Externen auf sie, die in den Dateien, die Sie in die Struktur wollen bringen definieren. Dies würde Ihnen eine Art ‚Live-Ansicht‘ eines Zweiges.

Sie könnten vielleicht die Dateiversionen aus dem Stamm direkt Referenz - oder könnten Sie Ihren Ansatz Schicht und einen Release-Zweig verwenden insbesondere Revisionen zu verschmelzen, und dann in den Äußerlichkeiten Ihrer ‚Live-Ansicht‘, dass die Release-Zweig verweisen. Auf diese Weise lösen Sie Funktionen von Revisionen Zusammenführung - normale Revision Kontrolle zu halten und verschmelzen Geschichte, und dann ein SVN-Update auf dem Server würde diese Dateien in die Live-Struktur ziehen

.

Der Nachteil wäre, dass es schwierig wäre, zu einem diffrerent Zweig wechseln (zum Beispiel eines alter Tag, aufgrund eines Problems in der neuen Version) - Sie manuell alle Definitionen Ihrer Äußerlichkeiten haben würden bearbeiten. Dies kann kein Problem sein, wenn sie alle auf dem gleichen Verzeichnis sind, könnte aber ein Schmerz sein, wenn Sie für sie jagen um.

Ein wenig Informationen über die Datei Äußerlichkeiten sind in dem SVN 1.6 Release Notes

Es klingt wie Sie für Metadaten über bestimmte Skripte suchen. Somit ist eine Option, Ihre Skripte als separate Dateien zu speichern und verwenden svn Eigenschaften . Svn Eigenschaften können Sie mit einer Datei zugeordnet Schlüssel-Wert-Paare speichern.

Zum Beispiel Ihres „label“ Beispiel zu spiegeln, können Sie eine Eigenschaft für jede Datei erstellen Sie sich entscheiden, in einer bestimmten Version enthalten. In diesem Fall erstellen Sie eine "September 2009" Eigenschaft mit dem Wert "true".

Sie können dann nur die Dateien mit der „September 2009“ Eigenschaft, wenn das Bereitstellungspaket zu erzeugen.

Mit Tags und Zweige sind nützlich, wenn Sie die Änderungen an Ihrem Repository über die Zeit verfolgen möchten, und diffs zu erzeugen, um zu sehen, was diese Veränderungen sind - aber es ist eine Momentaufnahme des gesamten Repository ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top