Need help with other JFrog products?
JFrog Enterprise+
JFrog Mission Control
JFrog Xray
JFrog Distribution
JFrog Pipelines
JFrog Bintray
JFrog Access
JFrog CLI
To create a Git LFS local repository and enable calculation of LFS package metadata set GitLfs as the Package Type.
You can create a Git LFS remote repository to proxy Git LFS local repositories on other Artifactory instances and enjoy all the features of a smart remote repository.
To define a Git LFS remote repository, create a new remote repository, set its Package Type to be Git LFS, and set the URL of the repository you want to proxy.
A Virtual Repository defined in Artifactory aggregates packages from both local and remote repositories.
This allows you to access both locally hosted binary assets and remote proxied git LFS repositories from a single URL defined for the virtual repository.
To create a Git LFS virtual repository set Git LFS to be its Package Type, and select the underlying local and remote Git LFS repositories to include under the Repositories section.
Make sure you also set the Default Deployment Repository so you can both download from and upload to this repository.
In order for your client to upload and download LFS blobs from artifactory the [lfs]
clause should be added to the .lfsconfig
file of your Git repository in the following format.
[lfs] url = "https://<artifactory server path>/api/lfs/<LFS repo key>" For example: [lfs] url = "https://localhost:8080/artifactory/api/lfs/lfs-local"
You can also set different LFS endpoints for different remotes on your repo (as supported by the Git LFS client), for example:
[remote "origin"] url = https://... fetch = +refs/heads/*:refs/remotes/origin/* lfsurl = "http://localhost:8081/artifactory/api/lfs/lfs-local"
Copy these clauses using Set Me Up
If you select your GitLFS repository in the Tree Browser and click Set Me Up, Artifactory will display these clauses in a dialog from which you can simply copy and paste them.
Working with Proxies and HTTPS
When using HTTPS (i.e. behind a proxy) with a self signed certificate your configuration might also require you to add the following:
[http] sslverify = false
Always consult your System Administrator before bypassing secure protocols in this way.
When running Artifactory behind a proxy, defining a base url is usually required (depending on configuration) due to the operation of the
Git LFS client which expects to receive redirect urls to the exact upload \ download location of blobs.
LFS repositories must be prefixed with api/lfs in the path
When accessing a Git LFS repository through Artifactory, the repository URL must be prefixed with api/lfs in the path, except when configuring replication.
For example, if you are using Artifactory standalone or as a local service, you would access your LFS repositories using the following URL:
http://localhost:8081/artifactory/api/lfs/<repository key>
Or, if you are using SaaS the URL would be:
https://<server name>.jfrog.io/<server name>/api/lfs/<repository key>
When configuring replication, reference the repository's browsable url i.e.;
http://localhost:8081/artifactory/<repository key>
By default, Artifactory allows anonymous access to Git LFS repositories. This is defined in the Admin module under Security | General . For details please refer to Allow Anonymous Access.
If you want to be able to trace how users interact with your repositories you need to uncheck the Allow Anonymous Access setting. This means that users will be required to enter their username and password.
The Git LFS client will ask for credentials for the Artifactory LFS repo when accessing it - if anonymous access is allowed you can just enter blank credentials, otherwise you should enter your Artifactory user name and password (not your Git one).
To make the authentication process automatic you can use Git Credential Helpers to store these for you, and have the Git LFS client authenticate automatically.
Git stores credentials in plain text by default
You should take extra measures to secure your username and password when using Git credential helpers
From version 4.4, Artifactory supports authenticating your Git LFS client via SSH.
To authenticate yourself via SSH when using the Git LFS client, execute the following steps:
Update the known_hosts file with the Artifactory server public key. This file is located under ~/.ssh/known_hosts
(and there is also a system-wide file under /etc/ssh/known_hosts
). This should take the following format:
[<server_custom_base_URL>]:<server_port> <content of the Artifactory server public ssh key>
For example,
[myartifactory.company.com]:1339 ssh-rsa AAAAB3Nza...PC0GuTJT9TlaYD user@domain.com
Update your .lfsconfig
file at the repository level (not the global level) as follows:
ssh://$USERNAME@$HOST:$PORT/artifactory/<repoKey>
For example,
url = "ssh://git@myartifactory.company.com:1339/artifactory/lfs-local"
Artifactory Online Dedicated Server
If you are using a dedicated server on Artifactory SaaS and wish to authenticate via SSH, please contact support@jfrog.com.
As the Git LFS client supplies only limited data about the blob being uploaded (only it's sha256 checksum, or 'OID', and it's size) Artifactory does not store or process any metadata for LFS blobs.
You can set properties on the blobs for your own convenience but this requires extra logic to infer a sha256-named file stored in artifactory from the actual pointer stored in your Git repository.
Artifactory stores LFS blobs in a manner similar to the Git LFS client, using the provided sha256 checksum.
Git LFS blobs will be stored under a path such as <lfs_repo>/objects/ad/1b/ad1b8d6e1cafdf33e941a5de462ca7edfa8818a70c79feaf68e5ed53dec414c4
Where ad and 1b are the 1st and 2nd, and the 3rd and 4th characters in the blob's name respectively.
Git LFS behavior when download from the LFS endpoint fails
The Git LFS client will download the pointer file it created in your remote Git repository if downloading the blob from the LFS endpoint failed (i.e. wrong credentials, network error etc.).
This will cause the actual file in your local repo to be substituted with the pointer created by the LFS client with the same name and lead to any number of problems this behavior can cause.
This is a limitation of the LFS client tracked by issue 89.
Visit our Knowledge Base for a quick start guide of Git LFS with Artifactory.