"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Johannes Thyssen Tishman <lists@thyssentishman.com>
Subject:
New User Questions
To:
gameoftrees@openbsd.org
Date:
Fri, 2 Jun 2023 12:17:59 +0200

Download raw body.

Thread
Hi all,

I recently decided to give Game of Trees a try. So far I've enjoyed how
easy it is to setup gotd on the server and the per-repo configurations.
The man pages have been great to get me started. However coming from
using git{daemon} I am still a little confused about a couple of things
regarding got and gotd.

Regarding gotd:

Having all repos stored in /var/git, what are the correct permissions
for these if I have multiple developers with read-write permissions
working on them? Does gotd handle the permissions of these as specified
in the /etc/gotd.conf and can I simply have them be owned by
maindev:maindev for example? Or do I have to do 'chown -R :developers
repo && chmod g+w repo' for all the repos that need write access by the
developers group?

Regarding /etc/gotd.conf, is it in the developers plans to allow for
per-directory/wildcard configurations. E.g:

    repository ".*" {
	path "/var/git/*"
	permit rw :devs
	permit ro anonymous
    }

I suppose this could simplify the creation of new repositories without
having to edit the /etc/gotd.conf and maybe avoid a restart of the gotd
daemon?

Lastly, does gotd support hooks? For example to generate static files of
the git repo after a push/send (post-receive hook). Is something like
this planned or are there any current workarounds?

Regarding got:

Perhaps this questions arises since I'm used to a (not very experienced)
workflow with git. I've noticed that in contrast to git, when I
clone/init a repo with got{admin}, I get what would be the equivalent of
a git clone/init --bare (as shown in the got(1) EXAMPLES). This is
somehow confusing for me in two scenarios:

1. When I create a new repository on my server with 'gotadmin init
/path/to/repo', I need to populate it first with 'got import' before I
can clone it from my local machine. That means that I need to have the
files that I want to import available on the server, correct? In case I
don't want to have these files on the server, I suppose I can then
delete the directory after importing it and then clone it and checkout
the worktree on my local machine. However I wonder if this is the
intended workflow. Is there a way to just create a new repo on the
server and populate it with files from a local machine?

2. After cloning a repo on my local machine and doing a checkout I'm
left with two different directories, one is the "bare" repo and the
other one is the worktree. To keep everything in a single directory I
found that I can do the following as a workaround:

    $ mkdir test && cd test
    $ got clone ssh://user@example.com/test .got
    $ got checkout -E .got .

However since the 'got checkout' already puts some files on the .got
directory, I'm not sure this is a good practice. Is there a recommended
workflow that clarifies this?

Aside from this, I'm liking Game of Trees so far and I hope I'm here to
stay and contribute. Thank you very much to the developers for the hard
work and apologies for all the questions.

Kind regards,

--
Johannes Thyssen Tishman
https://thyssentishman.com