uVersion
Deutsch
Herunterladen →

Wiki

Verteilung

Dateien (Plugins, geteilte Inhalte) anhand von Pfadmustern aus einem Quell-Repository in ein Ziel-Repository kopieren. Veröffentlichung, Remapping, übersprungene Sperren.

Einführung

Die Verteilung kopiert Dateien (ein Plugin, ein Paket geteilter Inhalte) aus einem Quell-Repository in ein Ziel-Repository, beschränkt auf Pfadmuster. Sie erzeugt neue Revisionen im Ziel, sodass die übliche inkrementelle Synchronisierung den Inhalt an die Clients verteilt. So lässt sich dasselbe Plugin ohne manuelles Kopieren und Einfügen über mehrere Projekte hinweg teilen.

Zugriff und Rollen

Ein anderes Zugriffsmodell als bei den übrigen Tabs Die Verteilung ist nicht wie die anderen Tabs abgesichert. Sie erfordert die Fähigkeit manage_rules, die admin und lead serverweit besitzen. Ein project_admin, der keine Fähigkeit besitzt, hat keinen Zugriff. Ein lead hingegen kann jedes Repository mit jedem anderen verknüpfen.

Eine Verknüpfung erstellen

Das Formular New Link: Source Repository, Target Repository und der Bereich Path Patterns.
  1. Tab DistributionNew Link.
  2. Source Repository: das Repository, aus dem die Dateien stammen.
  3. Target Repository: das Ziel-Repository (die gewählte Quelle wird aus der Liste entfernt; Quelle und Ziel dürfen nicht identisch sein).
  4. Path Patterns: ein Muster pro Zeile (z. B. Plugins/MyPlugin/, Content/SharedAssets/). Mindestens eines ist erforderlich.
  5. Mit Create Link bestätigen.

Eine bereits zwischen denselben beiden Repositories bestehende Verknüpfung wird abgelehnt (Konflikt). Jede Zeile zeigt source → cible, ihre Muster, wer sie erstellt hat und das Datum der letzten Veröffentlichung.

Pfadmuster

Ein Muster passt zu einem Pfad, wenn es irgendwo darin auftaucht (Suche vom Typ „enthält“). Ein Muster Plugins/uVersion passt also zu DefaultProject/Plugins/uVersion/Source/Foo.cpp, unabhängig vom Projektpräfix. Der abschließende Schrägstrich ändert nichts.

Veröffentlichen

Die Liste der ausstehenden Dateien (new/modified/locked) und das Banner mit der Veröffentlichungszusammenfassung.

Drei Aktionen pro Verknüpfung:

  • Show pending files (Datei-Symbol): listet die Dateien auf, die sich unterscheiden, markiert als new, modified oder locked, mit ihrer Revision.
  • Publish history (Uhr): die letzten 50 Veröffentlichungen (wie viele aktualisiert / übersprungen, wer, wann).
  • Publish (Senden): führt das Kopieren aus. Ein Banner fasst zusammen: „X Quelldateien gefunden, Y aktualisiert, Z übersprungen (gesperrt), W unverändert“. Deaktiviert, wenn die Verknüpfung inaktiv ist.

Eine im Ziel gesperrte Datei wird übersprungen, nicht überschrieben. Eine Datei mit identischem Inhalt (gleicher Hash) wird als unverändert gezählt und übersprungen. Die Veröffentlichung ist atomar (eine einzige Transaktion).

Sie können eine Verknüpfung auch aktivieren / deaktivieren oder löschen.

Remapping und Revisionen

Der Pfad wird für das Ziel umgeschrieben: uVersion entfernt alles, was vor dem passenden Muster steht, und fügt dann das im Ziel erkannte Präfix hinzu. Beispiel: Quelle DefaultProject/Plugins/uVersion/foo.cpp, Muster Plugins/uVersion, Zielpräfix CineDroneStudio/CineDroneStudio/Plugins/uVersion/foo.cpp. Das Zielpräfix wird aus einer vorhandenen Datei im Ziel abgeleitet (Behandlung von Repositories mit oder ohne Projektunterordner).

Revisionsnummerierung Verteilte Revisionen verwenden einen globalen Zähler oberhalb der aktuellen Revision des Ziels, damit die inkrementelle Synchronisierung sie erfasst. Der Verlauf einer Datei kann daher „springen“ (z. B. rev 1, dann rev 200): das ist rein kosmetisch. Chunks werden geteilt (keine Datenverdopplung, nur ein Referenzinkrement).

Häufige Stolperfallen

„Publish“ ist ausgegraut

Die Verknüpfung ist inaktiv. Aktivieren Sie sie zuerst. Das Veröffentlichen einer inaktiven Verknüpfung gibt einen ausdrücklichen Fehler zurück.

Eine Datei wird im Ziel nicht aktualisiert

Entweder ist sie auf der Zielseite gesperrt (dann wird sie übersprungen und als „locked“ gezählt), oder ihr Inhalt ist bereits identisch (als „unchanged“ gezählt). Sehen Sie sich die Veröffentlichungszusammenfassung und die Liste der pending files an.

Ein project_admin sieht den Tab nicht

Das ist beabsichtigt: die Verteilung erfordert manage_rules (admin oder lead). Ein project_admin hat keinen Zugriff, auch nicht auf seine eigenen Repositories.