uVersion
Français
Télécharger →

Wiki

Distribution

Copier des fichiers (plugins, contenu partagé) d'un dépôt source vers un dépôt cible par patterns de chemin. Publication, remapping, verrous ignorés.

Introduction

La distribution copie des fichiers (un plugin, un pack de contenu partagé) d'un dépôt source vers un dépôt cible, en se limitant à des patterns de chemin. Elle crée de nouvelles révisions dans la cible, si bien que la synchronisation incrémentale habituelle propage le contenu aux clients. C'est le moyen de partager un même plugin entre plusieurs projets sans copier-coller manuel.

Accès et rôles

Modèle d'accès différent des autres onglets La distribution n'est pas gardée comme les autres onglets. Elle exige la capacité manage_rules, qui est détenue par admin et lead, à l'échelle du serveur entier. Un project_admin, qui ne détient aucune capacité, n'y a pas accès. Un lead, lui, peut relier n'importe quel dépôt à n'importe quel autre.

Créer un lien

1. Ouvrir l'onglet Distribution

L'onglet Distribution est dans la rangée SERVER : un lien relie deux dépôts, il ne dépend donc pas du dépôt choisi dans la rangée PROJECT. Cliquez sur + New Link, en haut à droite : la fenêtre New Distribution Link s'ouvre.

2. Choisir la source, la cible et les chemins

Source Repository est le dépôt d'où viennent les fichiers, Target Repository celui de destination : la source choisie disparaît de la liste des cibles, un lien ne peut pas revenir sur lui-même. Path Patterns prend un pattern par ligne (par exemple Plugins/MyPlugin/, Content/SharedAssets/), et au moins un est requis : sans pattern, rien ne serait copié.

La fenetre New Distribution Link : les menus Source Repository et Target Repository, la zone Path Patterns (one per line) remplie de deux patterns, et les boutons Cancel et Create Link.

3. Valider avec Create Link

Le lien apparaît aussitôt dans la liste. Un lien déjà existant entre les deux mêmes dépôts est refusé (conflit) : modifiez celui qui existe plutôt que d'en créer un second.

Patterns de chemin

Un pattern matche un chemin s'il apparaît quelque part dedans (recherche de type « contient »). Un pattern Plugins/uVersion matche donc DefaultProject/Plugins/uVersion/Source/Foo.cpp quel que soit le préfixe de projet. Le slash final ne change rien.

Publier

1. Repérer le lien et ses actions

Chaque lien occupe une ligne de la liste : source → cible, ses patterns en pastilles, qui l'a créé et la date de dernière publication. Les actions sont groupées à droite de la ligne : Show pending files (icône fichier), Publish history (horloge), Publish, l'interrupteur qui active ou désactive le lien, et la suppression.

2. Vérifier ce qui va partir

Show pending files déplie sous la ligne la liste des fichiers qui diffèrent, avec leur révision source et un total en titre (Pending Files (N)). Chacun porte son état : new, modified ou locked. Si tout est à jour, le panneau le dit.

Le panneau Pending Files deplie sous une ligne de lien : les chemins marques new, modified ou locked avec leur revision source, et au-dessus de la liste le bandeau vert laisse par la derniere publication.

3. Publier

Le bouton Publish exécute la copie. Un bandeau vert récapitule « Published: X source files found, Y updated, Z skipped (locked), W unchanged ». Le bouton est désactivé tant que le lien est inactif, et publier un lien inactif renvoie une erreur explicite.

Un fichier verrouillé dans la cible est ignoré, pas écrasé. Un fichier au contenu identique (même hash) est compté comme inchangé et ignoré. La publication est atomique (une seule transaction).

Publish history (horloge) donne ensuite les 50 dernières publications : combien de fichiers mis à jour et ignorés, par qui, et quand.

Remapping et révisions

Le chemin est réécrit pour la cible : uVersion retire ce qui précède le pattern qui a matché, puis ajoute le préfixe détecté sur la cible. Exemple : source DefaultProject/Plugins/uVersion/foo.cpp, pattern Plugins/uVersion, préfixe cible CineDroneStudio/CineDroneStudio/Plugins/uVersion/foo.cpp. Le préfixe cible est déduit d'un fichier existant de la cible (gestion des dépôts avec ou sans sous-dossier de projet).

Numérotation de révision Les révisions distribuées utilisent un compteur global au-dessus de la révision courante de la cible, pour que la sync incrémentale les récupère. L'historique par fichier peut donc « sauter » (ex. rev 1 puis rev 200) : c'est cosmétique. Les chunks sont partagés (pas de duplication de données, simple incrément de référence).

Pièges courants

« Publish » est grisé

Le lien est inactif. Activez-le d'abord. Publier un lien inactif renvoie une erreur explicite.

Un fichier n'est pas mis à jour dans la cible

Soit il est verrouillé côté cible (il est alors ignoré et compté comme « locked »), soit son contenu est déjà identique (compté comme « unchanged »). Regardez le récapitulatif de publication et la liste des pending files.

Un project_admin ne voit pas l'onglet

C'est voulu : la distribution exige manage_rules (admin ou lead). Un project_admin n'y a pas accès, même sur ses propres dépôts.