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
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
- Aba Distribution → New Link.
- Source Repository: o repositório de onde vêm os arquivos.
- Target Repository: o repositório de destino (a origem escolhida é removida da lista; origem e destino não podem ser idênticos).
- Path Patterns: um padrão por linha (ex.
Plugins/MyPlugin/,Content/SharedAssets/). Pelo menos um é obrigatório. - 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
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).
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.