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
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é.
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.
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).
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.