Git repositories

Repositories under your username, pushed, cloned and fetched with git as it is, Git LFS included, from your computer or from CI, and read on the website. Nobody else can see one unless you make it public. Part of Pro, $9.99 a month.

Push a repository

git remote add filefreak https://api.filefreak.io/git/<username>/my-project.git
git push -u filefreak main

A repository is at https://api.filefreak.io/git/<username>/my-project.git, with your username and its name in it. Make one on the Git repositories page, under Developers, with a description, or push to an address under your username that has no repository yet, and the push makes it, as long as your plan has room for another.

On a computer signed in with the CLI, git needs no key. filefreak git setup, once, and git signs in as that computer in every repository; filefreak git clone name clones one with no setup at all, and keeps git pull and git push in the clone signed in. filefreak git clone username/name clones anybody's public repository, signed in or not. filefreak git list, create, show and rm do what the Git repositories page does.

Elsewhere, when git asks, the username is your account's and the password is a personal key, made on the Git repositories page and shown once. A key either clones and fetches, or does that and pushes, and can be given a date to stop working. Your computer's credential manager keeps it, so git asks once. Your account's own password is not taken.

Everything git does over HTTPS

  • Branches, tags and notes, a forced push, and a branch deleted by pushing nothing to it.
  • A shallow clone, and a partial one (--filter=blob:none). git's protocol version 2 is spoken whenever git asks for it, as every recent git does.
  • A push is checked before anything in it is kept: every object it sends is checked as git itself checks one, and a push that is broken is refused whole, with nothing kept.
  • Two pushes to the same branch at once are taken one after the other, and the second is told the branch moved, as any host would tell it.
  • Only you can clone or fetch a private repository. To anybody else, it does not exist.

From CI

In a build, put a key in the CI's secrets and hand it to git as a header, so it is written into neither the repository's settings nor the build's log:

git -c http.extraHeader="Authorization: Bearer $FILEFREAK_GIT_TOKEN" clone https://api.filefreak.io/git/<username>/my-project.git

Revoking a key stops it on its next request. An app's key given git:read or git:write works too, for the repositories of its own app and no others.

Git LFS

git lfs install
git lfs track "*.psd"
git add .gitattributes design.psd
git commit -m "Add the design"
git push

Git LFS works as it does anywhere else: what it keeps goes to storage and back directly, and each file can be up to 5 GB. A file's content is checked by Git LFS itself when it is downloaded. Locking files is not offered, and Git LFS is told so.

Read it on the website

A repository's page shows its files at any branch, tag or commit, folder by folder, with a folder's README under its files and Markdown shown as a document. Text files are shown in their language's colours. Its history, of the repository or of one file, lists each commit: who made it and when, its message, and the changes themselves.

The description, its topics and the default branch, which a clone checks out, can be changed there, and a repository can be deleted, Git LFS files and all, once its name has been typed.

Topics are up to five words that say what a repository is about, such as rust or static-site: lowercase letters, digits and hyphens. Give them under Settings, or with filefreak git update name --topic rust --topic cli, which replaces those it had; --no-topics takes them all away. A repository's page shows them under About. On a public repository's page each leads to the Hub's search, which finds the public repositories that have it.

Public repositories

Make a repository public on its page, under Settings, or with filefreak git update name --visibility public. Anybody can then clone and fetch it with git as it is, signed in or not, Git LFS files included, and read it on a page of its own: the files and their READMEs at any branch, tag or commit, the history and each commit. Your public profile lists it. Only you can push to it, and making it private again shuts it to everybody else at once.

Everything in it becomes readable, at every commit: files deleted since, and the names and email addresses in its commits. What anybody fetches from it counts toward your downloads.

What a repository may hold

WhatHow much
Repositories on Pro100
Repositories on FreeNone. Git repositories are part of Pro.
A repository's historyUp to 1 GB, as git stores it, compressed. A large file belongs in Git LFS.
A file kept with Git LFSUp to 5 GB
A push or a cloneHas to arrive within 4 minutes: the hosting platform ends any request that takes longer.

Storage and downloads

What a repository holds counts toward your storage: its history as it is stored, which is compressed, and its Git LFS files. What a clone or a fetch sends counts toward your downloads, and so does every Git LFS file downloaded, whoever fetched them. Every night a repository pushed to that day is packed again, and what a deleted or rewritten branch held, which nothing else reaches, stops being stored and counted. What each plan includes

Not here yet

  • Sharing a private repository with another account.
  • SSH. git reaches a repository over HTTPS.
  • Pull requests, issues, and editing files on the website. The website reads a repository; changes arrive by pushing.
  • Locking files with Git LFS.

Start with Pro

Git repositories come with Pro, with 250 GB of storage and 50 GB of downloads a month for them and the rest of your account.