uVersion
Português
Baixar →

Wiki

Distribuição

Copiar arquivos (plugins, conteúdo compartilhado) de um repositório de origem para um repositório de destino por padrões de caminho. Publicação, remapeamento, bloqueios ignorados.

Introdução

A distribuição copia arquivos (um plugin, um pacote de conteúdo compartilhado) de um repositório de origem para um repositório de destino, limitando-se a padrões de caminho. Ela cria novas revisões no destino, de modo que a sincronização incremental habitual propaga o conteúdo aos clientes. É a forma de compartilhar um mesmo plugin entre vários projetos sem copiar e colar manualmente.

Acesso e papéis

Um modelo de acesso diferente das outras abas A distribuição não é protegida como as outras abas. Ela exige a capacidade manage_rules, detida por admin e lead em todo o servidor. Um project_admin, que não detém nenhuma capacidade, não tem acesso. Um lead, por sua vez, pode vincular qualquer repositório a qualquer outro.

Criar um vínculo

O formulário New Link: Source Repository, Target Repository e a área Path Patterns.
  1. Aba DistributionNew Link.
  2. Source Repository: o repositório de onde vêm os arquivos.
  3. Target Repository: o repositório de destino (a origem escolhida é removida da lista; origem e destino não podem ser idênticos).
  4. Path Patterns: um padrão por linha (ex. Plugins/MyPlugin/, Content/SharedAssets/). Pelo menos um é obrigatório.
  5. Confirme com Create Link.

Um vínculo que já existe entre os mesmos dois repositórios é recusado (conflito). Cada linha exibe source → cible, seus padrões, quem o criou e a data da última publicação.

Padrões de caminho

Um padrão corresponde a um caminho se aparecer em algum lugar dele (busca do tipo «contém»). Assim, um padrão Plugins/uVersion corresponde a DefaultProject/Plugins/uVersion/Source/Foo.cpp qualquer que seja o prefixo do projeto. A barra final não muda nada.

Publicar

A lista de arquivos pendentes (new/modified/locked) e o aviso de resumo da publicação.

Três ações em cada vínculo:

  • Show pending files (ícone de arquivo): lista os arquivos que diferem, marcados como new, modified ou locked, com sua revisão.
  • Publish history (relógio): as 50 últimas publicações (quantos atualizados / ignorados, quem, quando).
  • Publish (enviar): executa a cópia. Um aviso resume «X arquivos de origem encontrados, Y atualizados, Z ignorados (bloqueados), W inalterados». Desativado se o vínculo estiver inativo.

Um arquivo bloqueado no destino é ignorado, não sobrescrito. Um arquivo com conteúdo idêntico (mesmo hash) é contado como inalterado e ignorado. A publicação é atômica (uma única transação).

Você também pode ativar / desativar ou excluir um vínculo.

Remapeamento e revisões

O caminho é reescrito para o destino: o uVersion remove o que precede o padrão correspondente e depois adiciona o prefixo detectado no destino. Exemplo: origem DefaultProject/Plugins/uVersion/foo.cpp, padrão Plugins/uVersion, prefixo de destino CineDroneStudio/CineDroneStudio/Plugins/uVersion/foo.cpp. O prefixo de destino é deduzido de um arquivo existente no destino (lida com repositórios com ou sem subpasta de projeto).

Numeração de revisão As revisões distribuídas usam um contador global acima da revisão atual do destino, para que a sincronização incremental as recupere. O histórico por arquivo pode, portanto, «pular» (ex. rev 1 e depois rev 200): isso é cosmético. Os chunks são compartilhados (sem duplicação de dados, apenas um incremento de referência).

Armadilhas comuns

«Publish» está esmaecido

O vínculo está inativo. Ative-o primeiro. Publicar um vínculo inativo retorna um erro explícito.

Um arquivo não é atualizado no destino

Ou ele está bloqueado no lado do destino (então é ignorado e contado como «locked»), ou seu conteúdo já é idêntico (contado como «unchanged»). Veja o resumo de publicação e a lista de pending files.

Um project_admin não vê a aba

É intencional: a distribuição exige manage_rules (admin ou lead). Um project_admin não tem acesso, mesmo em seus próprios repositórios.