irongit

Git over HTTPS and SSH

Every repository can be cloned and pushed over HTTPS or SSH with any git client. Both paths enforce the same permissions, file size limit and storage quota.

Clone over HTTPS

HTTPS uses a personal access token as the password; account passwords are never accepted by git. The ig CLI sets this up for you:

ig login
ig repo clone owner/repo

ig login stores a token and registers ig as git's credential helper for this host, so plaingit clone, git pull and git push work without prompts.

Without the CLI, create a token under Settings, Tokens and use it when git asks:

git clone https://this-site/owner/repo.git
Username: your-username
Password: igp_...   (the token)

Tokens need the repo scope for git. Store them with a credential helper (for examplegit config --global credential.helper store) rather than in the remote URL.

Clone over SSH

irongit runs its own SSH server for git, separate from the machine's login SSH. It listens on port2222 unless the administrator changed it, and only accepts public keys. Any username works;git is the convention.

  1. Create a key if you do not have one: ssh-keygen -t ed25519 -C "you@example.com"
  2. Add the public half (~/.ssh/id_ed25519.pub) underSettings, SSH keys, or run ig ssh-key add ~/.ssh/id_ed25519.pub.
  3. Clone with an ssh:// URL that carries the port:
git clone ssh://git@this-site:2222/owner/repo.git

To use the short host:owner/repo form, add a host entry to ~/.ssh/config:

Host this-site
    Port 2222
    User git
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes
git clone this-site:owner/repo.git

Check that your key is recognised:

ssh -T -p 2222 git@this-site
Hi you! You've successfully authenticated, but irongit does not provide shell access.

File size limit

A push is refused if it adds any single file larger than 50 MB (the default; administrators can change it). The rejection lists each oversized file:

remote: irongit: push rejected: files larger than 50 MB must use Git LFS.
remote: irongit:   assets/video.mp4 (212 MB)

The check covers every commit in the push, not just the last one, so deleting the file in a later commit is not enough. Move the file to LFS and rewrite the commits that added it (next section).

Large files with Git LFS

Git LFS keeps large files out of the repository: git stores a small pointer and the file itself goes to object storage. Uploads and downloads go straight between your machine and storage, so large files are fast and never count against the git file size limit. Individual LFS objects can be up to 2 GB by default.

Install git-lfs once, then in a repository:

git lfs install
git lfs track "*.psd" "*.mp4" "models/**"
git add .gitattributes
git add design.psd
git commit -m "Add design files"
git push

LFS works over both HTTPS and SSH remotes with the same credentials as git. To move files that are already in history into LFS:

git lfs migrate import --include="*.mp4" --everything
git push --force-with-lease

Rewriting history changes commit ids, so coordinate with anyone else working on the branch. Clones fetch LFS files automatically; GIT_LFS_SKIP_SMUDGE=1 git clone ... skips them and git lfs pull fetches them later. File locking (git lfs lock) is not supported.

Storage quotas

Each account (personal or organization) has a storage quota for git data across all its repositories,5 GB by default. A push that would exceed it is refused with the space remaining. Repository sizes are shown on each repository and in your settings. LFS objects and container images are stored separately and do not count against the git quota.

Troubleshooting

MessageMeaning
Authentication failed (HTTPS)Use a personal access token as the password, not your account password. Check it has the repo scope and has not expired.
Permission denied (publickey)The key you offered is not registered. Add its .pub file in settings and make sure ssh uses it (IdentityFile, IdentitiesOnly yes).
repository 'owner/repo' not foundThe repository does not exist or you do not have access. Private repositories look missing to people without access.
you have read access onlyAsk a repository admin for write access, or push to your own fork.
this repository is archivedArchived repositories are read-only until an admin unarchives them.
files larger than 50 MB must use Git LFSSee Git LFS; rewrite the commits that added the files.
Connection refused on port 22The git SSH server uses port 2222. Use an ssh:// URL with the port or an ~/.ssh/config entry.