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 ") < p>
Wenn Sie also eine beschreibbare Komponente haben, könnte ein Stream als Vorlage für Zweige betrachtet werden:
(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
:
A
fusionieren sollen, wenn Sie Ihre Arbeit daran abgeschlossen haben. A->B
oder C->A
oder B->C
oder ... Mit Stream hätten Sie:
%Vor%Die Hierarchie der Streams ist da:
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. MyProject_Feature1
zu MyProject_Int
zusammenführen, wenn Sie müssen) wird als deliver
. MyProject_Dev
) zu einem unmittelbaren Sub-Stream (wie ( MyProject_Feature1
) wird als rebase
bezeichnet. 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
).
Tags und Links clearcase clearcase-ucm