Skip to main content
Version: 1.22.6

Template Repositories

Gitea (starting with version 1.11.0) supports creating template repositories which can be used to generate repositories based on the template, complete with variable expansion of certain pre-defined variables.

All files in the template repository are included in a generated repository from the template except for the .gitea/template file. The .gitea/template file tells Gitea which files are subject to the variable expansion when creating a repository from the template.

Gitea uses gobwas/glob for its glob syntax. It closely resembles a traditional .gitignore, however there may be slight differences.

Example .gitea/template file​

All paths are relative to the base of the repository

# Expand all .go files, anywhere in the repository
**.go

# All text files in the text directory
text/*.txt

# A specific file
a/b/c/d.json

# Batch files in both upper or lower case can be matched
**.[bB][aA][tT]

Variable Expansion​

In any file matched by the above globs, certain variables will be expanded.

Matching filenames and paths can also be expanded, and are conservatively sanitized to support cross-platform filesystems.

All variables must be of the form $VAR or ${VAR}. To escape an expansion, use a double $$, such as $$VAR or $${VAR}

VariableExpands ToTransformable
REPO_NAMEThe name of the generated repository✓
TEMPLATE_NAMEThe name of the template repository✓
REPO_DESCRIPTIONThe description of the generated repository✘
TEMPLATE_DESCRIPTIONThe description of the template repository✘
REPO_OWNERThe owner of the generated repository✓
TEMPLATE_OWNERThe owner of the template repository✓
REPO_LINKThe URL to the generated repository✘
TEMPLATE_LINKThe URL to the template repository✘
REPO_HTTPS_URLThe HTTP(S) clone link for the generated repository✘
TEMPLATE_HTTPS_URLThe HTTP(S) clone link for the template repository✘
REPO_SSH_URLThe SSH clone link for the generated repository✘
TEMPLATE_SSH_URLThe SSH clone link for the template repository✘

Transformers 🤖​

Gitea 1.12.0 adds a few transformers to some of the applicable variables above.

For example, to get REPO_NAME in PASCAL-case, your template would use ${REPO_NAME_PASCAL}

Feeding go-sdk to the available transformers yields...

TransformerEffect
SNAKEgo_sdk
KEBABgo-sdk
CAMELgoSdk
PASCALGoSdk
LOWERgo-sdk
UPPERGO-SDK
TITLEGo-Sdk