Acesso Git do Projeto

O Altium 365 pode hospedar um repositório Git para os arquivos-fonte do seu projeto. O Altium Designer funciona com esses repositórios como um cliente nativo, mas você também pode trabalhar com eles como qualquer outro remoto Git — clonepullpush, etc., com o cliente Git padrão.

Esta página mostra como:

  1. Descobrir a URL do repositório de um projeto por meio da API do Altium 365.

  2. Autenticar solicitações Git usando um token de acesso do Altium 365.

  3. Trabalhar com o repositório Git

Etapa 1: Obter a URL do repositório

Os detalhes do repositório são expostos por meio da API do Altium 365. Consulte seus projetos, leia o campo repositoryUrl e use-o como seu remoto Git. 

Trate repositoryUrl como um valor opaco. Solicite-o à API e use-o exatamente como retornado — a API é a única fonte da verdade sobre onde um repositório está localizado. Não construa, analise nem codifique URLs de repositório diretamente.

Veja Tokens para detalhes sobre como obter e usar tokens do Altium 365. Se você é novo na API, comece com o Guia de início rápido da API do Altium 365.

Projetos de hardware

Os projetos de hardware (PCB) expõem os campos do repositório por meio de desProjects:

query {
  desProjects {
    nodes {
      repositoryUrl
    }
  }
}

Projetos de software

Os projetos de software expõem os mesmos campos por meio de sftSoftwareProjects:

query {
  sftSoftwareProjects {
    repositoryUrl
  }
}

Campos da resposta

Ambas as consultas retornam os mesmos campos de repositório:

Seu aplicativo Descrição
repositoryUrl A URL remota Git do repositório. Trate-a como um valor opaco — solicite-a à API e use-a como está.

Por exemplo, uma resposta de projeto de hardware:

{
  "data": {
    "desProjects": {
      "nodes": [
        {
          "repositoryUrl": "{repositoryUrl}"
        }
      ]
    }
  }
}

This page covers projects backed by Altium-hosted Git repositories. Repositórios hospedados em outro lugar estão fora do escopo deste guia.

Etapa 2: Autenticação

Os repositórios Git do Altium 365 usam autenticação básica. Use seu token da API do Altium 365 access token como senha. O token deve ser emitido para o Workspace que possui o projeto.

username is ignored é ignorado pelo servidor, mas deve ser uma string não vazia. Qualquer valor de placeholder (por exemplo: token) funciona.

Cabeçalho Authorization

Para chamadas entre serviços, passe as credenciais no cabeçalho Authorization , codificadas em base64 como username:password:

Authorization: Basic base64("token:{access-token}")

Linha de comando Git

Faça o clone usando o repositoryUrl retornado pela API. Quando solicitado, informe qualquer nome de usuário não vazio e seu token de acesso como senha:

git clone {repositoryUrl}
# Username: "token" (any non-empty value)
# Password: {access-token}

Configure um auxiliar de credenciais do Git para que o token seja armazenado com segurança e você não seja solicitado a informá-lo em toda operação. Os auxiliares disponíveis variam por plataforma (por exemplo, osxkeychain no macOS, manager no Windows):

git config --global credential.helper osxkeychain

Credenciais na URL do repositório

Como alternativa ao prompt, o Altium 365 aceita credenciais no componente authority da URL — a sintaxe padrão de URI username:password@ . A API nunca retorna uma URL com credenciais já preenchidas, então você mesmo constrói esse formato: pegue o repositoryUrl retornado e insira {username}:{access-token}@ imediatamente após https://.

git clone https://token:{access-token}@<returned-url>
# <returned-url> is the repositoryUrl with the leading "https://" removed

O nome de usuário é ignorado (qualquer valor não vazio); a senha é o mesmo token de acesso (JWT) usado nos métodos acima.

De acordo com o padrão URI, quaisquer caracteres especiais no userinfo devem ser codificados por porcentagem — por exemplo, @ torna-se %40. Isso não tem efeito para token:{access-token}  exemplo acima, mas é importante se você usar outro valor (como um endereço de e-mail) como nome de usuário.

Etapa 3: Trabalhando com o repositório

Depois de clonado, o repositório se comporta como qualquer remoto Git padrão:

cd <your-repository>

# Make changes, then push as usual
git add .
git commit -m "Update firmware sources"
git push

A plataforma rastreia alterações no branch master do repositório do projeto. Envie para master as alterações que você deseja que o projeto incorpore. 

Um token de acesso inválido ou expirado faz com que as operações Git falhem com um erro de autenticação:

git clone {repositoryUrl}
# provide credentials when prompted

Cloning into '<your-repository>'...
bad input: 07KCg
fatal: Authentication failed for '{repositoryUrl}'

Segurança

  • Trate o token de acesso como uma senha. Não o envie para o controle de versão nem o incorpore em código do lado do cliente.

  • Prefira um auxiliar de credenciais em vez de incorporar o token na URL de clone, para que ele não seja gravado em .git/config ou no histórico do seu shell.

  • Use tokens de curta duração para automação. Para CI/CD e serviços em segundo plano, obtenha um token de acesso de curta duração a partir de um refresh token, para que a credencial transportada em cada solicitação tenha uma janela de exposição limitada. Veja Using a Refresh Token.

Limites

Mantenha binários grandes fora do repositório e confirme apenas os arquivos-fonte de que seu projeto precisa

Para manter o repositório do projeto rápido e confiável, o servidor Git rejeita arquivos compactados grandes: arquivos .zip, .7z e .rar maiores que 256 MB. Um push que inclua esse tipo de arquivo é rejeitado:

git push

Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 282.56 MiB | 1.09 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
error: RPC failed; HTTP 471 curl 22 The requested URL returned error: 471
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
Everything up-to-date

Veja KB: Cannot save project due to Git error with status code 471 para detalhes desse erro no contexto do Altium Designer.

Veja também

AI-LocalizedLocalizado por IA
Caso encontre um problema, selecione o texto/imagem e primaCtrl + Enterpara nos enviar o seu feedback.
Conteúdo