GOT.CONF(5)

NAME
got.conf - Game of Trees configuration file

DESCRIPTION
got.conf is the run-time configuration file for got(1).

got.conf may be present in the root directory of a Git repository for repository-wide settings, or in the .got meta-data directory of a work tree to override repository-wide settings for got(1) commands executed within this work tree.

The file format is line-based, with one configuration directive per line. Any lines beginning with a ‘#’ are treated as comments and ignored.

The available configuration directives are as follows:

author “Real Name <email address>”
    Configure the author's name and email address for got commit and got import when operating on this repository. Author information specified here overrides the GOT_AUTHOR environment variable.

    Because git(1) may fail to parse commits without an email address in author data, got(1) attempts to reject author information with a missing email address.

remote name {...}
    Define a remote repository. The specified name can be used to refer to the remote repository on the command line of got fetch and got send.

    Information about this repository is declared in a block of options enclosed in curly brackets:

    server hostname
        Defines the hostname to use for contacting the remote repository's server.

    repository path
        Defines the path to the repository on the remote repository's server.

    protocol scheme
        Defines the protocol to use for communicating with the remote repository's server.

        The following protocol schemes are supported:

        git The Git protocol as implemented by the git-daemon(1) server. Use of this protocol is discouraged since it supports neither authentication nor encryption.

        git+ssh
            The Git protocol wrapped in an authenticated and encrypted ssh(1) tunnel. With this protocol the hostname may contain an embedded username for ssh(1) to use: user@hostname

        ssh Short alias for git+ssh.

    port port
        Defines the port to use for connecting to the remote repository's server. The port can be specified by number or name. The port name to number mappings are found in the file /etc/services; see services(5) for details. If not specified, the default port of the specified protocol will be used.

    branch {branch ...}
        Specify one or more branches which got fetch and got send should fetch from and send to the remote repository by default. The list of branches specified here can be overridden at the got fetch and got send command lines with the -b option.

    fetch-all-branches yes | no
        This option controls whether got fetch will fetch all branches from the remote repository by default. If enabled, this behaviour can be overridden at the got fetch command line with the -b option, and any branch configuration settings for this remote repository will be ignored.

    reference {reference ...}
        Specify one or more arbitrary references which got fetch should fetch by default, in addition to the branches and tags that will be fetched. The list of references specified here can be overridden at the got fetch command line with the -R option. got fetch will refuse to fetch references from the remote repository's “refs/remotes/” or “refs/got/” namespace. In any case, references in the “refs/tags/” namespace will always be fetched and mapped directly to local references in the same namespace.

    mirror-references yes | no
        This option controls the behaviour of got fetch when updating references. Enabling this option can lead to the loss of local commits. Maintaining custom changes in a mirror repository is therefore discouraged.

        If this option is not specified or set to no, got fetch will map references of the remote repository into the local repository's “refs/remotes/” namespace.

        If this option is set to yes, all branches in the “refs/heads/” namespace will be updated directly to match the corresponding branches in the remote repository.

    fetch {...}
        An optional fetch block may contain any of the following configuration settings for use by got fetch, overriding corresponding settings in the containing remote name {...} block.

        •   server hostname

        •   repository path

        •   protocol scheme

        •   port port

        •   branch {branch ...}

    send {...}
        An optional send block may contain any of the following configuration settings for use by got send, overriding corresponding settings in the containing remote name {...} block.

        •   server hostname

        •   repository path

        •   protocol scheme

        •   port port

        •   branch {branch ...}

EXAMPLES
Configure author information:

    author "Flan Hacker <flan_hacker@openbsd.org>"

Remote repository specification for the Game of Trees repository:

    remote "origin" {
    	server git.gameoftrees.org
    	protocol git
    	repository got
    	branch { "main" }
    }

Mirror the OpenBSD src repository from Github:

    remote "origin" {
    	repository "openbsd/src"
    	server git@github.com
    	protocol git+ssh
    	mirror-references yes
    }

Fetch changes via the Git protocol and send changes via the SSH protocol:

    remote "origin" {
    	repository my_repo
    	server git.example.com
    	protocol git
    	send {
    		server git@git.example.com
    		protocol ssh
    	}
    }

FILES
got.conf
    If present, got.conf located in the root directory of a Git repository supersedes any relevant settings in Git's config file.

.got/got.conf
    If present, got.conf located in the .got meta-data directory of a got(1) work tree supersedes any relevant settings in the repository's got.conf configuration file and Git's config file.

SEE ALSO
got(1), git-repository(5), got-worktree(5)

CAVEATS
got.conf offers no way to configure the editor spawned by got commit, got histedit, got import, or got tag. This is deliberate and prevents potential arbitrary command execution as another user when repositories or work trees are shared between users. Users should set their VISUAL or EDITOR environment variables instead.