2009-04-07 8 views
11

Ich bin auf der Suche nach Feedback zu den Vor- und Nachteilen der Methoden, die für die Erstellung einzelner Entwicklungszweige in einem Perforce-Depot zur Verfügung stehen. Wenn ich richtig verstehe, gibt es zwei Möglichkeiten, dies zu handhaben. Die erste besteht darin, eine private Zweigstelle zu erstellen, bei der es sich um eine vollständige Kopie der Zweigstelle handelt, an der Sie gerade arbeiten. Die Filiale würde komplett alleine stehen und Ihre Änderungen vollständig vom Zielzweig isolieren.Perforce Dev Branches - Sparse Branching vs. Private Branching

Die andere Methode, die ich gehört habe, ist Sparse Branching. Es ist beschrieben in Practical Perforce (Kapitel 9, S.242). Dies erstellt eine Verzweigung, aber nur mit den Dateien, die Sie bearbeiten müssen. Sie überlappen dann die Ziel-Zweig-Client-Ansicht mit dieser Spar-Zweig-Zweig-Client-Sicht.

Beide Methoden würden erfordern, dass der Programmierer einige Integrationsarbeiten ausführt, um ihre Änderungen im Zielzweig zu erhalten. Die Private-Branch-Methode scheint viel mehr zusätzlichen Speicher zu benötigen, um eine Kopie der gesamten Verzweigung zu erstellen. Die Perforce-Dokumentation besagt jedoch, dass es in dieser Situation eine "Lazy Copy" ausführt.

Integration ermöglicht Perforce auch eine "Lazy Copy" der Dateien durchzuführen. Wenn Sie Dateien abzweigen, enthält der Server nicht wirklich zwei Kopien der Dateien - es enthält lediglich die Quelldatei und ein Zeiger in der Datenbank zeichnet die Tatsache auf, dass die Verzweigung zu der Zieldatei aufgetreten ist. Lazy-Kopien machen die Verzweigung zu einer Operation mit geringem Overhead; Der Server muss keine doppelten Kopien von Dateien verfolgen.

Dies es wie der Sparse Zweig Verfahren scheinen macht, ist nur das Hinzufügen der Möglichkeit menschlicher Fehler zu dem Prozess, wie zum Beispiel kann der Entwickler beginnt an einer Datei arbeiten, die sie nicht auf den Sparse Zweig hinzugefügt haben und Aktualisieren Sie dann versehentlich eine Änderung in dem Zielzweig, der den Build unterbricht. Aber die Sparse-Verzweigungsfunktionalität existiert aus einem bestimmten Grund. Jede Rückmeldung darüber, warum sie existiert und warum ich sie über eine komplette Privatniederlassung (oder umgekehrt) verwenden sollte, wäre sehr willkommen.

Antwort

3

Wie Sie von der Dokumentationsfläche bemerkt haben, ist nicht wirklich ein Problem. Geschwindigkeit ist jedoch. Das Synchronisieren des gesamten Entwicklungsbaums kann lange dauern. Die Integration zurück wird auch eine Weile dauern. Wenn Sie nur eine Verzweigung der Struktur benötigen, sind beide Operationen viel schneller.

Menschlicher Fehler, wie Sie bereits gesagt haben, kann auftreten, aber wenn Sie eine Branchspec machen, kann es helfen, einige der möglichen Fehler zu verringern.

3

Synchronisierungsgeschwindigkeit und Client-Speicherplatz sind die Probleme beim Erstellen vollständiger Zweige (Lazy Copy hilft auf dem Server, aber nicht das Netzwerk oder Client). Ich fand es jedoch einfacher einzurichten und zu verstehen, als zu versuchen, einen Sparse-Zweig zu erstellen, sodass wir am Ende volle Zweige verwenden.

+0

Guter Punkt auf dem Client-Speicherplatz. Ich habe vergessen, darauf hinzuweisen, da ich TB Speicherplatz auf meiner Maschine habe, aber es ist in den meisten Fällen immer noch gültig. – Fostah

3

Eine gute Situation, für die spärliche Verzweigungen geeignet sind, ist, wenn Sie ein kompliziertes Produkt haben, das möglicherweise aus vielen Modulen besteht. Nehmen wir an, der Build benötigt viel Zeit für das gesamte System, und vielleicht dauert die Synchronisierung auch eine Weile - viele Datendateien. Aber Ihre Entwicklung muss nur eine kleine Teilmenge der gesamten Quellbasis modifizieren - vielleicht ein oder zwei Module, möglicherweise mit einem Verbindungscode "höher".

In diesem Fall kann eine spärliche Verzweigung sehr sinnvoll sein. Es bedeutet, dass Sie bereits mit dem Großteil des Materials synchronisiert und wahrscheinlich auch bereits gebaut haben. Aber Sie müssen darauf achten, dass alle Dateien, die Sie ändern, zuerst verzweigt werden - andernfalls riskieren Sie, die Hauptlinie zu brechen. Sicherlich erfordert es mehr Sorgfalt durch den Programmierer.

Ein weiterer Fall, in dem spärliche Verzweigungen der einzige praktische Weg für verzweigte Entwicklung sein können, ist, wenn es schwierig ist, mehr als eine Version Ihrer App auf einem Entwicklungscomputer zu haben. In diesem Fall wäre es schwierig, sowohl einen Hauptbau als auch einen Entwicklungsbau nebeneinander aufzubauen. Offensichtlich nicht ideal, aber einige Produkte sind entweder aus Notwendigkeit oder aus Geschichte.

Verwandte Themen