Commit Briefs

d5c5e4670c Thomas Adam

portable: remove sys/tree.h compat inclusion (ta/remove-queue-compat)

libbsd as a library was created some years back to pull together BSD-specific functionality to be used on non-BSD systems. When it was in its infancy, and not being widely adopted across non-BSD systems, there was often a need to carry around compat versions of sys/{queue,tree}.h This is no longer the case -- and the compat code for this has never worked on systems which lacked a compatible sys/tree.h header anyway, so remove this, and let the user know that libbsd is needed. A few people have mentioned this to me.


7e8004bac7 Thomas Adam

tog: add new log view limit feature to filter commits

Use the & key map to enter a pattern with which to limit the displayed commits to those matching the provided pattern; similar to less(1) and mutt's limit feature. Includes various tweaks from op. ok plus fixes from op@


7210b7156b Thomas Adam

make got_commit_graph_iter_next use caller-provided storage for the id

and adjust the callers. discussed with and ok stsp@


9ffe20fdad Thomas Adam

portable: configure.ac: tidy/add summary

Remove some unneeded comments which were references to files. Add a quick summary output at the end of ./configure which will aid with CI debugging.


b03ae5cc95 Thomas Adam

portable: set next version


0c6d7ac7b4 Thomas Adam

Release 0.75 (tags/0.75)


05345ace53 Thomas Adam

portable: use a release variable for tarballs

When creating a release tarball, use a GOT_RELEASE variable to determine the version of the release.


b033d7a680 Thomas Adam

portable: gotwebd: install to sbin

When installing gotwebd, put this under ${prefix}/sbin


86f4aab9e5 Thomas Adam

tog: make headline highlight extend the full view width

In splitscreen mode, make the active view headline highlight extend the full width of view->ncols. While here, format the tree view header like the blame view by moving the index to the path line. suggested by and ok stsp@


f31d6c3bb6 Thomas Adam

tog: extend log view author highlight colour to full field width

ok stsp@


Branches

Tags

Tree

.cirrus.ymlcommits | blame
.github/
.gitignorecommits | blame
CHANGELOGcommits | blame
CHANGEScommits | blame
LICENCEcommits | blame
Makefile.amcommits | blame
Makefile.common.incommits | blame
Makefile.inccommits | blame
READMEcommits | blame
README.portablecommits | blame
TODOcommits | blame
autogen.sh*commits | blame
compat/
configure.accommits | blame
got/
got-dist.txtcommits | blame
got-version.mkcommits | blame
gotadmin/
gotweb/
gotwebd/
include/
lib/
libexec/
maintscripts/
regress/
tog/
util/

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 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

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


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

As another example, to compile gotweb with profiling enabled:

  $ cd gotweb
  $ make clean
  $ make PROFILE=1 gotweb
  $ make # compile remaining gotweb binaries as usual
  $ doas make install
  $ doas chown www /var/www/cgi-bin/gotweb/

After loading a gotweb page in the browser, there should now
be a gmon.out file next to the gotweb binary:

$ ls -l /var/www/cgi-bin/gotweb/
total 6088
-rw-r--r--  1 www   daemon   427642 Jun 17 22:04 gmon.out
-rwxr-xr-x  1 www   www     2630488 Jun 17 22:03 gotweb
drwxr-xr-x  2 root  daemon      512 Jun 17 22:03 gw_tmpl
drwxr-xr-x  2 root  daemon      512 Jun 17 22:03 libexec


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.