1 Game of Trees (Got) is a version control system which prioritizes ease
2 of use and simplicity over flexibility (https://gameoftrees.org)
4 Got is still under development; it is being developed exclusively
5 on OpenBSD and its target audience are OpenBSD developers. Got is
6 ISC-licensed and was designed with pledge(2) and unveil(2) in mind.
8 Got uses Git repositories to store versioned data. Git can be used
9 for any functionality which has not yet been implemented in Got.
10 It will always remain possible to work with both Got and Git on
13 A Got release tarball will install files under /usr/local by default.
14 This default can be changed by passing PREFIX=/some/path to make.
16 A build started in Got's Git repository will install files under ~/bin,
17 which may have to be added to $PATH and be created first:
21 To compile the Got client tool suite on OpenBSD, run:
27 This will install the following commands:
29 got, the command line interface
30 tog, an ncurses-based interactive Git repository browser
31 several helper programs from the libexec directory
32 man pages (only installed if building sources from a Got release tarball)
34 Tests will pass only after 'make install' because they rely on installed
35 binaries in $PATH. Any tests written as shell scripts also depend on git(1).
36 Tests which use the got clone, fetch, and send commands will fail if
37 'ssh 127.0.0.1' does not succeed non-interactively.
39 Tests for HTTP protocol support rely on the HTTP::Daemon Perl module.
41 $ doas pkg_add git p5-http-daemon
44 To test with packed repositories, run:
46 $ make regress GOT_TEST_PACK=1
48 To test with packed repositories using the ref-delta representation for
49 deltified objects, run:
51 $ make regress GOT_TEST_PACK=ref-delta
53 To test with sha256 object IDs instead of sha1, run:
55 $ make regress GOT_TEST_ALGO=sha256
57 The GOT_TEST_PACK and GOT_TEST_ALGO flags can be combined to test packed
58 repositories with sha256 object IDs.
60 Because got unveils the /tmp directory by default using the /tmp directory
61 for test data can hide bugs. However, /tmp remains the default because
62 there is no better alternative that works out of the box. In order to
63 store test data in a directory other than /tmp, such as ~/got-test, run:
66 $ make regress GOT_TEST_ROOT=~/got-test
68 The tog automated test suite is also run with 'make regress'.
69 Like Got, however, individual tests or the entire suite can be run:
72 $ make # run all tests
73 $ ./log.sh # run log view tests
75 Man page files in the Got source tree can be viewed with 'man -l':
78 $ man -l got/git-repository.5
79 $ man -l got/got-worktree.5
82 EXAMPLES in got.1 contains a quick-start guide for OpenBSD developers.
85 To compile the Got server tool suite on OpenBSD, run:
91 This will install the following commands:
93 gotd, the repository server program
94 gotctl, the server control utility
95 gotsh, the login shell for users accessing the server via the network
96 gitwrapper, like mailwrapper(8) but for git-upload-pack and git-receive-pack
98 See the following manual page files for information about server setup:
101 $ man -l gotd/gotd.conf.5
102 $ man -l gotctl/gotctl.8
103 $ man -l gotsh/gotsh.1
104 $ man -l gitwrapper/gitwrapper.1
106 See regress/gotd/README for information about running the server test suite.
109 Game of Trees Web Daemon (gotwebd) is a FastCGI program which displays
110 repository data and is designed to work with httpd(8).
112 To compile gotwebd on OpenBSD, run:
117 This will create the following files:
118 the daemon program /usr/local/sbin/gotwebd
119 css and image files in /var/www/htdocs/gotwebd
120 the gotwebd init script in /etc/rc.d
121 man pages (only installed if building sources from a Got release tarball)
123 Documentation is available in manual pages:
125 $ man -l gotwebd/gotwebd.8
126 $ man -l gotwebd/gotwebd.conf.5
128 The gotwebd test suite must be started as root in order to start and stop
129 the gotwebd daemon. With the gotwebd binary installed, the test suite can
130 be run from the top-level directory:
132 $ doas make webd-regress
134 The test suite switches to non-root users as appropriate.
137 Got can be built with profiling enabled to debug performance issues.
138 Note that profiled builds cannot make use of pledge(2).
139 Profiling should only be enabled for one program at a time. Otherwise,
140 multiple programs will attempt to write to the 'gmon.out' file in the
141 current working directory.
143 For example, to compile got-read-pack with profiling enabled:
145 $ cd libexec/got-read-pack
150 Running any Got command which ends up using got-read-pack should now
151 produce the file 'gmon.out' in the current working directory.
152 The gprof2dot program can be used to generate a profile graph:
154 $ doas pkg_add gprof2dot graphviz
155 $ gprof ~/bin/got-read-pack gmon.out | gprof2dot | dot -T png > profile.png
158 Guidelines for reporting problems:
160 All problem/bug reports should include a reproduction recipe in form of a
161 shell script which starts out with an empty repository and runs a series of
162 Got and/or Git commands to trigger the problem, be it a crash or some other
163 undesirable behaviour.
165 The regress/cmdline directory contains plenty of example scripts.
166 An ideal reproduction recipe is written as an xfail ("expected failure")
167 regression test. For a real-world example of an xfail test, see commits
168 4866d0842a2b34812818685aaa31d3e0a966412d and
169 2b496619daecc1f25b1bc0c53e01685030dc2c74 in Got's history.
171 Please take this request very seriously; Ask for help with writing your
172 regression test before asking for your problem to be fixed. Time invested
173 in writing a regression test saves time wasted on back-and-forth discussion
174 about how the problem can be reproduced. A regression test will need to be
175 written in any case to verify a fix and prevent the problem from resurfacing.
177 It is also possible to write test cases in C. Various examples of this
178 exist in the regress/ directory. Most such tests are unit tests; it is
179 unlikely that a problem found during regular usage will require a test
182 Please always try to find a way to trigger your problem via the command line
183 interface before reporting a problem without a written test case included.
184 If writing an automated test really turns out to be impossible, please
185 explain in very clear terms how the problem can be reproduced.
187 Mail problem reports to: gameoftrees@openbsd.org
190 Guidelines for submitting patches:
192 Mail patches to: gameoftrees@openbsd.org
193 Pull requests via any Git hosting sites will likely be overlooked.
194 Please keep the intended target audience in mind when contributing to Got.
197 Subscribing to the gameoftrees@openbsd.org mailing list:
199 The mailing list is used for patch reviews, bug reports, and user questions.
200 To subscribe, send mail to majordomo@openbsd.org with a message body of:
201 subscribe gameoftrees
203 See https://www.openbsd.org/mail.html for more information.