Template Repositories

Gitea 1.11.0 and above includes template repositories, and one feature implemented with them is auto-expansion of specific variables within your template files.

To tell Gitea which files to expand, you must include a template file inside the .gitea directory of the template repository.

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

  1. # All .go files, anywhere in the repository
  2. **.go
  3. # All text files in the text directory
  4. text/*.txt
  5. # A specific file
  6. a/b/c/d.json
  7. # Batch files in both upper or lower case can be matched
  8. **.[bB][aA][tT]

NOTE: The template file will be removed from the .gitea directory when a repository is generated from the template.

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