- Description:
- Portable version of Game of Trees (Linux, ...)
- Last Change:
- Clone URL:
ssh://anon@got.sexy.is/got-portable.git
Commit Briefs
portable: OpenBSD compilation fixes (ta/configh)
portable: fixes for NetBSD
* Move the main incldue/got_compat.h to the top of the files they're included in. * Define SHA256Init and friends to the system equivalents.
portable: curses: improve detection
When checking for ncurses, don't clobber previous checks for libpanel.
portable: cleanup headers
Remove useless headers which don't need to be included any longer.
portable: improve b64_ntop detection
When looking for base64 functions, check -lresolv and/or -lnetwork, and only build those in compat if required. Some of the detection code was modified from tmux's configure.ac script.
portable: add missing header checks
Some code in compat/ has #defines which were not being checked for in configure.ac, which could have lead to compilation failures were those files to be included on systems which needed them. In doing so, we can now remove libmd and libcrypto as these are no longer needed.
portable: configure: use SHA_2{,56}_H
Don't use a custom variable when the header checks for these are already available. From Christian "naddy" Weisgerber.
portable: alpine: include stdlib.h
Because musl is less forgiving about header-ordering, explicitly include this before stdio.h -- this won't affect existing files as the include guards elsewhere prevent this.
portable: regress: imply compat
When building tests, compat needs to be built. Do this prior to running any tests. This ensures tests can be run from a clean tree. Furthermore, add got_compat.h to all test headers. This wasn't necessary before as this was implicitly being included, but now isn't.
portable: configure: flatten LIBS
Set LIBS to the empty string so that only the specific dependencies are included where needed, rather than relying on autotools to do this for us. This will make splitting out got into different subprojects easier, as well as allow for multi-packing on those systems which support it.
Branches
Tree
README
Game of Trees (Got) is a version control system which prioritizes ease of use and simplicity over flexibility (https://gameoftrees.org) 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 client 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 which use the got clone, fetch, and send commands will fail if 'ssh 127.0.0.1' does not succeed non-interactively. $ doas pkg_add git $ make regress To test with packed repositories, run: $ make regress GOT_TEST_PACK=1 To test with packed repositories using the ref-delta representation for deltified objects, run: $ make regress GOT_TEST_PACK=ref-delta 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. To compile the Got server tool suite on OpenBSD, run: $ make obj $ make server $ make server-install This will install the following commands: gotd, the repository server program gotctl, the server control utility gotsh, the login shell for users accessing the server via the network See the following manual page files for information about server setup: $ man -l gotd/gotd.8 $ man -l gotd/gotd.conf.5 $ man -l gotctl/gotctl.8 $ man -l gotsh/gotsh.1 See regress/gotd/README for information about running the server test suite. Game of Trees Web Daemon (gotwebd) is a FastCGI program which displays repository data and is designed to work with httpd(8). To compile gotwebd on OpenBSD, run: $ make webd # make webd-install This will create the following files: the daemon program /usr/local/sbin/gotwebd css and image files in /var/www/htdocs/gotwebd the gotwebd init script in /etc/rc.d man pages (only installed if building sources from a Got release tarball) Documentation is available in manual pages: $ man -l gotwebd/gotwebd.8 $ man -l gotwebd/gotwebd.conf.5 Got can be built with profiling enabled to debug performance issues. Note that profiled builds cannot make use of pledge(2). Profiling should only be enabled for one program at a time. Otherwise, multiple programs will attempt to write to the 'gmon.out' file in the current working directory. For example, to compile got-read-pack with profiling enabled: $ cd libexec/got-read-pack $ make clean $ make PROFILE=1 $ make install Running any Got command which ends up using got-read-pack should now produce the file 'gmon.out' in the current working directory. The gprof2dot program can be used to generate a profile graph: $ doas pkg_add gprof2dot graphviz $ gprof ~/bin/got-read-pack gmon.out | gprof2dot | dot -T png > profile.png 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: gameoftrees@openbsd.org Guidelines for submitting patches: Mail patches to: gameoftrees@openbsd.org 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 gameoftrees@openbsd.org mailing list: The mailing list is used for patch reviews, bug reports, and user questions. To subscribe, send mail to majordomo@openbsd.org with a message body of: subscribe gameoftrees See https://www.openbsd.org/mail.html for more information.