Project Git Access

Altium 365 can host a Git repository for your project's source files. Altium Designer works with these repositories as a native client, but you can also work with them like any other Git remote — clonepullpush, etc. with the standard Git client.

This page shows how to:

  1. Discover a project's repository URL through the Altium 365 API.

  2. Authenticate Git requests using an Altium 365 access token.

  3. Work with Git repository

Step 1: Get the Repository URL

Repository details are exposed through the Altium 365 API. Query your projects, read the repositoryUrl field, and use it as your Git remote. 

Treat repositoryUrl as an opaque value. Request it from the API and use it exactly as returned — the API is the single source of truth for where a repository lives. Do not construct, parse, or hard-code repository URLs.

See Tokens for details on acquiring and using Altium 365 tokens. If you are new to the API, start with the Altium 365 API Quick Start Guide.

Hardware projects

Hardware (PCB) projects expose the repository fields through desProjects:

query {
  desProjects {
    nodes {
      repositoryUrl
    }
  }
}

Software projects

Software projects expose the same fields through sftSoftwareProjects:

query {
  sftSoftwareProjects {
    repositoryUrl
  }
}

Response fields

Both queries return the same repository fields:

Your application Description
repositoryUrl The Git remote URL for the repository. Treat it as an opaque value — request it from the API and use it as-is.

For example, a hardware project response:

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

This page covers projects backed by Altium-hosted Git repositories. Repositories hosted elsewhere fall outside this guide.

Step 2: Authenticate

Altium 365 Git repositories authenticate with basic authentication. Use your Altium 365 API access token as the password. The token must be issued for the Workspace that owns the project.

The username is ignored by the server but must be a non-empty string. Any placeholder (for example: token) works.

Authorization header

For service-to-service calls, pass the credentials in the Authorization header, base64-encoded as username:password:

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

Git command line

Clone using the repositoryUrl returned by the API. When prompted, enter any non-empty username and your access token as the password:

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

Configure a Git credential helper so the token is stored securely and you are not prompted on every operation. The available helpers vary by platform (for example osxkeychain on macOS, manager on Windows):

git config --global credential.helper osxkeychain

Credentials in the repository URL

As an alternative to the prompt, Altium 365 accepts credentials in the authority component of the URL — the standard URI username:password@ syntax. The API never returns a URL with credentials pre-filled, so you construct this form yourself: take the returned repositoryUrl and insert {username}:{access-token}@ immediately after https://.

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

The username is ignored (any non-empty value); the password is the same access token (JWT) used in the methods above.

Per the URI standard, any special characters in the userinfo must be percent-encoded — for example @ becomes %40. This is a no-op for token:{access-token}  example above, but matters if you use another value (such as an email address) as the username.

Step 3: Working with the Repository

Once cloned, the repository behaves like any standard Git remote:

cd <your-repository>

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

The platform tracks changes in the master branch of the project repository. Push the changes you want the project to pick up to master

An invalid or expired access token causes Git operations to fail with an authentication error:

git clone {repositoryUrl}
# provide credentials when prompted

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

Security

  • Treat the access token like a password. Do not commit it to source control or embed it in client-side code.

  • Prefer a credential helper over embedding the token in the clone URL, so it is not written to .git/config or your shell history.

  • Use short-lived tokens for automation. For CI/CD and background services, obtain a short-lived access token from a refresh token so the credential that travels with each request has a limited exposure window. See Using a Refresh Token.

Limits

Keep large binaries out of the repository and commit only the source files your project needs

To keep the project repository fast and reliable, the Git server rejects large compressed archives: .zip, .7z, and .rar files larger than 256 MB. A push that includes such a file is rejected:

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

See KB: Cannot save project due to Git error with status code 471 for details of this error in Altium Designer context.

See Also

如您发现任何问题,请选中相关文本/图片,并按 Ctrl + Enter 键向我们提交反馈。
Content