Unterschied zwischen Zweigen und Streams in ClearCase?

8

Was ist der Unterschied zwischen Zweigen und Streams in ClearCase?

    
Raman 12.04.2011, 14:17
quelle

1 Antwort

8

Eine Verzweigung ist eine klassische versionierende Möglichkeit, die Versionsgeschichte für eine bestimmte Datei zu parallelisieren: Siehe " Wann sollten Sie verzweigen "

Ein Stream ist nicht ein Zweig : Es sind nur Metadaten, die in der Lage sind, sich zu merken, welche Grundlinie jede Ansicht, auf die der Stream verweist, enthält.
Wenn Sie einen Stream erstellen, passiert nichts (kein Zweig wird erstellt).
Ein Stream Name wird jedoch verwendet, wenn eine Datei ausgecheckt wird: Jede Ansicht legt ihre Konfigurationsspezifikation fest, um einen nach dem Stream benannten Zweig zu erstellen, um die Entwicklungsaufwand in diesem Zweig .
(Siehe " Wie erstelle ich eine Snapshot-Ansicht eines Projekts oder Streams in ClearCase? ")

Deshalb ist es wichtig, einen Stream angemessen zu benennen: Wenn ich einen Stream mit dem Namen " VonC " erstelle, wird (in der Versionsbaumstruktur für jede modifizierte Datei) eventuell ein Zweig namens " VonC " angezeigt: Was ist der Zweck eines Zweigs " VonC "?
Wenn ich einen Stream mit dem Namen " REL2.2_FIX " erstelle, werden Zweige mit dem Namen " REL2.2_FIX " angezeigt und daraus abgeleitet, dass alle auf diesen Stream verweisen, um Fixes auf dem Release 2.2 zu erzeugen: ein viel nützlicherer Name. (Deshalb mag ich nicht den " einen Stream pro Entwicklermodell ")

Wenn Sie also eine beschreibbare Komponente haben, könnte ein Stream als Vorlage für Zweige betrachtet werden:

  • Sie deklarieren, was Sie in einem Stream benötigen (welche Baseline Sie sehen möchten)
  • Sie erstellen eine Ansicht für diesen Stream
  • Bei jedem Checkout wird nach dem Stream ein Zweig namens erstellt.

(Und deshalb mischen oder setzen so viele UCM-Benutzer "Stream" mit "branch")

Wenn Sie jedoch nur nicht beschreibbare Komponenten in Ihrem Projekt haben, dann ist ein Stream nur die Liste der Baselines (Labels auf Komponenten), die Sie in jeder Ansicht sehen wollen, die Sie in diesem Stream erstellen.
Dies wird zu einem Visualisierungsmechanismus, der für Testumgebungen nützlich ist, in denen Sie nur auf präzise Versionen einer Reihe von Komponenten zugreifen müssen, um Ihr System zu testen.
In diesem Fall werden niemals Zweige erstellt, da in keiner Datei ein Checkout durchgeführt wird: Die Komponente wird im UCM-Projekt als nicht schreibbar deklariert.

Der andere Hauptunterschied zwischen einem Stream und einem Zweig ist die Organisation von Stream in einer Hierarchie (übergeordnete Stream / Sub-Streams) .
Diese Hierarchie existiert einfach nicht für Zweige: Wenn Sie 3 Zweige A , B , C :

haben
  • Sie wissen nicht, wo Sie vom Zweig A fusionieren sollen, wenn Sie Ihre Arbeit daran abgeschlossen haben.
  • jede Zusammenführung, die Sie ausführen, hat dieselbe Bedeutung: A->B oder C->A oder B->C oder ...

Mit Stream hätten Sie:

%Vor%

Die Hierarchie der Streams ist da:

  • führt einen möglichen Workflow von Zusammenführungen ein (Sie wissen, wo Sie von einem Stream zu einem anderen verschmelzen sollten: nämlich seinen Eltern. Es ist nicht obligatorisch, aber Sie haben zumindest eine visuelle Möglichkeit zu wissen, dass:
    • Feature1 , sobald es voll entwickelt ist, wird zurückkommen (mit verschmolzen sein) MyProject_Dev (sein Elternstrom) und das:
    • MyProject_Dev , sobald ein stabiler Zustand erreicht ist, kann in den übergeordneten Stream MyProject_Int eingefügt werden, wo Integrationstests durchgeführt werden können während Entwicklung in MyProject_Dev fortgesetzt wird.
  • Fügen Sie diesen Zusammenführungen eine Bedeutung hinzu :
    • das Zusammenführen von einem Teilstrom zu seinem übergeordneten oder einem anderen übergeordneten Stream (z. B. können Sie direkt von MyProject_Feature1 zu MyProject_Int zusammenführen, wenn Sie müssen) wird als deliver .
    • das Mischen von einem übergeordneten Stream (wie MyProject_Dev ) zu einem unmittelbaren Sub-Stream (wie ( MyProject_Feature1 ) wird als rebase bezeichnet.
      Ziel ist es, sicherzustellen, dass Feature1 mit den letzten Änderungen von Dev entwickelt wird, um die endgültige Auslieferung so schmerzfrei wie möglich zu gestalten: Mit regelmäßigen Rabatten wäre der gemeinsame Code nicht zu sehr auseinander gegangen parallelisierte Geschichten dieser beiden Zweige, die von diesen beiden Strömen abgeleitet sind.

Beachten Sie, dass diese beiden UCM-Operationen deliver und rebase in ihrem Kern nicht mehr sind als einfache Zusammenführungen zwischen den beiden Zweigen A und B .
Aufgrund ihrer Namen wissen Sie jedoch, dass Sie nicht nur zwischen zwei beliebigen Zweigen, sondern zwischen einem Unterstream und einem übergeordneten Stream ( deliver ) oder zwischen einem übergeordneten Stream und ein Sub-Stream ( rebase ).

    
VonC 12.04.2011, 14:32
quelle

Tags und Links