You may find it strange how I wrote a CGI script when there are so many amazing things available, and you're right. Git.gmi isn't meant to be a CGI script; it had to be one. The only Gemini server library I know in Python, Jetforce, is licensed under the Floodgap "Free" Software License, which is free software but well, free as in beer. I find absolutely no reason to allow proprietization but prohibit monetization, which is the exact opposite from the GPL - unfortunately the license of choice by the
pygit2 devs. So here we are, locked in restrictions of both fundamental dependencies that don't get along with each other. I once comtemplated violating FFSL, before coming up with this workaround, i.e. CGI. Git.gmi is licensed under GPLv2 eventually.
The CGI script,
cgi.py, prints output to stdout as response to the user, the one thing I'm uncomfortable with because it disables the One True Debugger. As an extra workaround, I just used
raise Exception('debug message') everywhere (but deleted all of them before committing, ofc).
It's in the MVP stage, with the ability to view summary, trees, blobs, and commit log in a primitive way. There is a test instance at
You need to edit the shebang of