remove fsync() from got_gotweb_closefile()
[got-portable.git] / README
blob13e7491461cf0d089a1ce535fbf467147b1d0054
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
11 the same repository.
13 To compile the Got client tool suite on OpenBSD, run:
15  $ make obj
16  $ make
17  $ make install
19 This will install the following commands:
21  got, the command line interface
22  tog, an ncurses-based interactive Git repository browser
23  several helper programs from the libexec directory
24  man pages (only installed if building sources from a Got release tarball)
26 A Got release tarball will install files under /usr/local by default.
27 A build started in Got's Git repository will install files under ~/bin.
29 Tests will pass only after 'make install' because they rely on installed
30 binaries in $PATH. Any tests written as shell scripts also depend on git(1).
31 Tests which use the got clone, fetch, and send commands will fail if
32 'ssh 127.0.0.1' does not succeed non-interactively.
34  $ doas pkg_add git
35  $ make regress
37 To test with packed repositories, run:
39  $ make regress GOT_TEST_PACK=1
41 To test with packed repositories using the ref-delta representation for
42 deltified objects, run:
44  $ make regress GOT_TEST_PACK=ref-delta
46 Because got unveils the /tmp directory by default using the /tmp directory
47 for test data can hide bugs. However, /tmp remains the default because
48 there is no better alternative that works out of the box. In order to
49 store test data in a directory other than /tmp, such as ~/got-test, run:
51  $ mkdir ~/got-test
52  $ make regress GOT_TEST_ROOT=~/got-test
54 The tog automated test suite is also run with 'make regress'.
55 Like Got, however, individual tests or the entire suite can be run:
57  $ cd regress/tog
58  $ make         # run all tests
59  $ ./log.sh     # run log view tests
61 Man page files in the Got source tree can be viewed with 'man -l':
63  $ man -l got/got.1
64  $ man -l got/git-repository.5
65  $ man -l got/got-worktree.5
66  $ man -l tog/tog.1
68 EXAMPLES in got.1 contains a quick-start guide for OpenBSD developers.
71 To compile the Got server tool suite on OpenBSD, run:
73  $ make obj
74  $ make server
75  $ make server-install
77 This will install the following commands:
79  gotd, the repository server program
80  gotctl, the server control utility
81  gotsh, the login shell for users accessing the server via the network
82  gitwrapper, like mailwrapper(8) but for git-upload-pack and git-receive-pack
84 See the following manual page files for information about server setup:
86  $ man -l gotd/gotd.8
87  $ man -l gotd/gotd.conf.5
88  $ man -l gotctl/gotctl.8
89  $ man -l gotsh/gotsh.1
90  $ man -l gitwrapper/gitwrapper.1
92 See regress/gotd/README for information about running the server test suite.
95 Game of Trees Web Daemon (gotwebd) is a FastCGI program which displays
96 repository data and is designed to work with httpd(8).
98 To compile gotwebd on OpenBSD, run:
100  $ make webd
101  # make webd-install
103 This will create the following files:
104   the daemon program /usr/local/sbin/gotwebd
105   css and image files in /var/www/htdocs/gotwebd
106   the gotwebd init script in /etc/rc.d
107   man pages (only installed if building sources from a Got release tarball)
109 Documentation is available in manual pages:
111  $ man -l gotwebd/gotwebd.8
112  $ man -l gotwebd/gotwebd.conf.5
115 Got can be built with profiling enabled to debug performance issues.
116 Note that profiled builds cannot make use of pledge(2).
117 Profiling should only be enabled for one program at a time. Otherwise,
118 multiple programs will attempt to write to the 'gmon.out' file in the
119 current working directory.
121 For example, to compile got-read-pack with profiling enabled:
123   $ cd libexec/got-read-pack
124   $ make clean
125   $ make PROFILE=1
126   $ make install
128 Running any Got command which ends up using got-read-pack should now
129 produce the file 'gmon.out' in the current working directory.
130 The gprof2dot program can be used to generate a profile graph:
132   $ doas pkg_add gprof2dot graphviz
133   $ gprof ~/bin/got-read-pack gmon.out | gprof2dot | dot -T png > profile.png
136 Guidelines for reporting problems:
138 All problem/bug reports should include a reproduction recipe in form of a
139 shell script which starts out with an empty repository and runs a series of
140 Got and/or Git commands to trigger the problem, be it a crash or some other
141 undesirable behaviour.
143 The regress/cmdline directory contains plenty of example scripts.
144 An ideal reproduction recipe is written as an xfail ("expected failure")
145 regression test. For a real-world example of an xfail test, see commits
146 4866d0842a2b34812818685aaa31d3e0a966412d and
147 2b496619daecc1f25b1bc0c53e01685030dc2c74 in Got's history.
149 Please take this request very seriously; Ask for help with writing your
150 regression test before asking for your problem to be fixed. Time invested
151 in writing a regression test saves time wasted on back-and-forth discussion
152 about how the problem can be reproduced. A regression test will need to be
153 written in any case to verify a fix and prevent the problem from resurfacing.
155 It is also possible to write test cases in C. Various examples of this
156 exist in the regress/ directory. Most such tests are unit tests; it is
157 unlikely that a problem found during regular usage will require a test
158 to be written in C.
160 Please always try to find a way to trigger your problem via the command line
161 interface before reporting a problem without a written test case included.
162 If writing an automated test really turns out to be impossible, please
163 explain in very clear terms how the problem can be reproduced.
165 Mail problem reports to: gameoftrees@openbsd.org
168 Guidelines for submitting patches:
170 Mail patches to: gameoftrees@openbsd.org
171 Pull requests via any Git hosting sites will likely be overlooked.
172 Please keep the intended target audience in mind when contributing to Got.
175 Subscribing to the gameoftrees@openbsd.org mailing list:
177 The mailing list is used for patch reviews, bug reports, and user questions.
178 To subscribe, send mail to majordomo@openbsd.org with a message body of:
179 subscribe gameoftrees
181 See https://www.openbsd.org/mail.html for more information.