Provided by: got_0.91-1_amd64 bug

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.

     signer_id signer-id
             Configure a signer-id to sign tag objects.  This key will be used to sign all tag
             objects unless overridden by got tag -s signer-id.

             For SSH-based signatures, signer-id is the path to a file which may refer to either
             a private SSH key, or a public SSH key with the private half available via
             ssh-agent(1).

     allowed_signers path
             Configure a path to the "allowed signers" file which contains a list of trusted SSH
             signer identities.  The file will be passed to ssh-keygen(1) during verification of
             SSH-based signatures with got tag -V.  The format of the "allowed signers" file is
             documented in the ALLOWED SIGNERS section of ssh-keygen(1).

             Verification of SSH-based signatures is impossible unless the allowed_signers option
             is set in got.conf.

     revoked_signers path
             Configure a path to the optional "revoked signers" file, which contains a list of
             revoked SSH signer identities.  This file is passed to ssh-keygen(1) during
             signature verification with got tag -V.  Revoked identities are no longer considered
             trustworthy and verification of relevant signatures will fail.

     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.

             When repositories are shared between multiple users on the system, it is recommended
             that users configure their trusted remote repositories in each of their work-trees'
             got.conf files, overriding corresponding repository-wide settings.  This can avoid
             potentially undesirable connections to remote repositories placed into the shared
             repository's got.conf file by other users.

             Information about a 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 ...}

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.

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
                   }
           }

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.