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

1. Abrir a aba Distribution

A aba Distribution está na linha SERVER: um vínculo conecta dois repositórios, portanto não depende do repositório escolhido na linha PROJECT. Clique em + New Link, no canto superior direito: a janela New Distribution Link se abre.

2. Escolher a origem, o destino e os caminhos

Source Repository é o repositório de onde vêm os arquivos, Target Repository o de destino: a origem escolhida desaparece da lista de destinos, um vínculo não pode voltar sobre si mesmo. Path Patterns recebe um padrão por linha (por exemplo Plugins/MyPlugin/, Content/SharedAssets/), e pelo menos um é obrigatório: sem padrão, nada seria copiado.

A janela New Distribution Link: os menus Source Repository e Target Repository, a área Path Patterns (one per line) preenchida com dois padrões, e os botões Cancel e Create Link.

3. Confirmar com Create Link

O vínculo aparece imediatamente na lista. Um vínculo que já existe entre os mesmos dois repositórios é recusado (conflito): edite o existente em vez de criar um segundo.

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

1. Localizar o vínculo e suas ações

Cada vínculo ocupa uma linha da lista: source → cible, seus padrões em forma de pílulas, quem o criou e a data da última publicação. As ações ficam agrupadas à direita da linha: Show pending files (ícone de arquivo), Publish history (relógio), Publish, o interruptor que ativa ou desativa o vínculo, e a exclusão.

2. Verificar o que vai sair

Show pending files expande, sob a linha, a lista dos arquivos que diferem, com sua revisão de origem e um total no título (Pending Files (N)). Cada um traz seu estado: new, modified ou locked. Se tudo estiver em dia, o painel o diz.

O painel Pending Files expandido sob uma linha de vínculo: os caminhos marcados como new, modified ou locked com sua revisão de origem, e acima da lista o aviso verde deixado pela última publicação.

3. Publicar

O botão Publish executa a cópia. Um aviso verde resume «Published: X source files found, Y updated, Z skipped (locked), W unchanged». O botão fica desativado enquanto o vínculo estiver inativo, e publicar um vínculo inativo retorna um erro explícito.

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

Publish history (relógio) fornece em seguida as 50 últimas publicações: quantos arquivos atualizados e ignorados, por quem, e quando.

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.