Game of Trees
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Stefan Sperling cce854ad47 add tests for the bug fixed in commit 1fee9f40e2 4 days ago
got add missing comma in SEE ALSO section of git-repository(5) 1 week ago
gotadmin introduce 'gotadmin info' 1 week ago
gotweb Fix strftime(3) short buffer checks 4 weeks ago
include introduce 'gotadmin info' 1 week ago
lib fix 3-way merge of files which lack a final \n 5 days ago
libexec implement raw object data access; this will be required for packing 1 month ago
regress add tests for the bug fixed in commit 1fee9f40e2ed335d4ec8899954b59b43990b97c3 4 days ago
tog Fix "mandoc -T lint" WARNINGS and ERRORS, add missing word 2 weeks ago
util allow overriding the From: header in mail sent by 7 months ago
.gitignore blame css 1 year ago
CHANGES CHANGES for 0.52 2 weeks ago
LICENCE happy new year 2 months ago
Makefile introduce 'gotadmin info' 1 week ago merge new diff implementation from the diff.git repository 5 months ago
README allow regress test data to be stored in locations other than /tmp 7 months ago
TODO remove 'tog ref' todo item; pointed out by naddy 3 months ago
got-dist.txt sync dist file list 4 weeks ago bump version number 2 weeks ago


Game of Trees (Got) is a version control system which prioritizes ease
of use and simplicity over flexibility (

Got is still under development; it is being developed exclusively
on OpenBSD and its target audience are OpenBSD developers. Got is
ISC-licensed and was designed with pledge(2) and unveil(2) in mind.

Got uses Git repositories to store versioned data. At present, Got
supports local version control operations only. Git can be used
for any functionality which has not yet been implemented in Got.
It will always remain possible to work with both Got and Git on
the same repository.

To compile the Got tool suite on OpenBSD, run:

$ make obj
$ make
$ make install

This will install the following commands:

got, the command line interface
tog, an ncurses-based interactive Git repository browser
several helper programs from the libexec directory
man pages (only installed if building sources from a Got release tarball)

A Got release tarball will install files under /usr/local by default.
A build started in Got's Git repository will install files under ~/bin.

Tests will pass only after 'make install' because they rely on installed
binaries in $PATH. Tests in the cmdline directory currently depend on git(1).
Tests in '' and '' will fail if 'ssh' does not
succeed non-interactively.

$ doas pkg_add git
$ make regress

To test with packed repositories, run:

$ make regress GOT_TEST_PACK=1

Because got unveils the /tmp directory by default using the /tmp directory
for test data can hide bugs. However, /tmp remains the default because
there is no better alternative that works out of the box. In order to
store test data in a directory other than /tmp, such as ~/got-test, run:

$ mkdir ~/got-test
$ make regress GOT_TEST_ROOT=~/got-test

Man page files in the Got source tree can be viewed with 'man -l':

$ man -l got/got.1
$ man -l got/git-repository.5
$ man -l got/got-worktree.5
$ man -l tog/tog.1

EXAMPLES in got.1 contains a quick-start guide for OpenBSD developers.

Game of Trees Web (Gotweb) is a CGI program which displays repository data
and is designed to work with httpd(8) and slowcgi(8). It requires the Kristaps
Dzonsons kcgi library, version 0.12.0 or greater.

To compile gotweb on OpenBSD, run:

# pkg_add kcgi
$ make web
# make web-install

This will create the following files:
the CGI program /var/www/cgi-bin/gotweb/gotweb
helper programs from the libexec directory in /var/www/cgi-bin/gotweb/libexec
several template files in /var/www/cgi-bin/gw_tmpl/
html, css, and image files in /var/www/htdocs/gotweb/
the directory /var/www/got/tmp/
man pages (only installed if building sources from a Got release tarball)

Documentation is available in manual pages:

$ man -l gotweb/gotweb.8
$ man -l gotweb/gotweb.conf.5

Guidelines for reporting problems:

All problem/bug reports should include a reproduction recipe in form of a
shell script which starts out with an empty repository and runs a series of
Got and/or Git commands to trigger the problem, be it a crash or some other
undesirable behaviour.

The regress/cmdline directory contains plenty of example scripts.
An ideal reproduction recipe is written as an xfail ("expected failure")
regression test. For a real-world example of an xfail test, see commits
4866d0842a2b34812818685aaa31d3e0a966412d and
2b496619daecc1f25b1bc0c53e01685030dc2c74 in Got's history.

Please take this request very seriously; Ask for help with writing your
regression test before asking for your problem to be fixed. Time invested
in writing a regression test saves time wasted on back-and-forth discussion
about how the problem can be reproduced. A regression test will need to be
written in any case to verify a fix and prevent the problem from resurfacing.

It is also possible to write test cases in C. Various examples of this
exist in the regress/ directory. Most such tests are unit tests; it is
unlikely that a problem found during regular usage will require a test
to be written in C.

Some areas of code, such as the tog UI, are not covered by automated tests.
Please always try to find a way to trigger your problem via the command line
interface before reporting a problem without a written test case included.
If writing an automated test really turns out to be impossible, please
explain in very clear terms how the problem can be reproduced.

Mail problem reports to:

Guidelines for submitting patches:

Mail patches to:
Pull requests via any Git hosting sites will likely be overlooked.
Please keep the intended target audience in mind when contributing to Got.

Subscribing to the mailing list:

The mailing list is used for patch reviews, bug reports, and user questions.
To subscribe, send mail to with a message body of:
subscribe gameoftrees

See for more information.