got.conf
—
Game of Trees configuration file
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.
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.
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
}
}
- 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.
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.