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 — clone, pull, push, etc., com o cliente Git padrão.
Esta página mostra como:
-
Descobrir a URL do repositório de um projeto por meio da API do Altium 365.
-
Autenticar solicitações Git usando um token de acesso do Altium 365.
-
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.
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}"
}
]
}
}
}
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.
O 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.
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
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/configou 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
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.