Skip to content

git

The git module manages your global Git config from Lua. It writes ~/.gitconfig, can manage a global gitignore, and gives common settings like signing and Git LFS first-class fields.

lua
local git = require("rootbeer.git")

Configure Git

Most config maps directly to familiar Git settings. Use extra for tool-specific sections that Rootbeer doesn't model directly, such as delta.

lua
git.config({
    user = {
        name = "Aarnav Tale",
        email = "aarnav@tale.me",
    },
    editor = "nvim",
    pager = "delta",
    signing = { key = "ssh-ed25519 AAAA..." },
    lfs = true,
    pull_rebase = true,
    ignores = { ".DS_Store", "._*", "*~" },
    extra = {
        delta = { features = "color-only" },
    },
})

For different emails, signing keys, or ignores per machine, use Profiles.

API Reference

git.config(cfg)

Applies git.Config to the system. Writes a gitconfig file at cfg.path and optionally a gitignore file next to it.

Parameterscfg: git.Config

editorstringoptional
Default editor for commits (e.g. "nvim").
extratable<string, table<string, boolean|string>>optional
Additional gitconfig sections (e.g. delta, interactive).
ignoresstring[]optional
Global gitignore patterns. Written next to the gitconfig.
ignores_pathstringoptional
Override path for the gitignore file. Defaults to .gitignore next to the gitconfig.
lfsbooleanoptional
Enable git-lfs filters (filter.lfs section).
merge_conflictstylestringoptional
Merge conflict style (e.g. "diff3").
pagerstringoptional
Default pager for output (e.g. "delta").
pathstringoptional
Where to write the gitconfig file. Defaults to "~/.gitconfig".
pull_rebasebooleanoptional
Pull with rebase instead of merge.
signinggit.SigningConfigoptional
Commit and tag signing. Sets user.signingkey, gpg.format, commit.gpgSign, and tag.gpgSign.
User identity.

git.SigningConfig

formatstringoptional
Signing format. Defaults to "ssh".
keystring
The signing key (e.g. an SSH public key).

git.UserConfig

emailstring
Email address for commits.
namestring
Full name for commits.