Bakermaker is an open-source utility for creating and managing gitolite servers. It provides a simple interface for installing gitolite on a fresh server, and managing repositories and users all through a single ssh connection. Bakermaker is intended only for simple configurations, meaning that the program does not support gitolite's group definitions, any access rules other than the provided defaults, or anything else beyond simple repository creation, deletion, user creation, deletion, and basic access rights.
This project is designed for my videogame programming teacher to assist with creating a remote git repository solution that works within FriscoISD's restrictive network and computer policies, hence some of the strange architecture with libraries; namely the banned access to all reasonable cloud git providers like github itself, gitlab, and bitbucket. This project is designed to replicate the work I did for my class to provide a remote repository with these restrictions. However, this project will work outside of this specific setting, as long as any advanced gitolite config is required.
This project is licensed under the MIT license.
This project assumes all https access to the remote server is blocked, and there are no preinstalled libraries or resources available on the target machine. This project also assumes the resulting executable will have to be distributed as a single file, and does not expect the user to have to set up the runtime environment. To do this, this project uses libromfs to package all resources into the executable. This includes a copy of the client program, as well as some extra libraries needed at runtime that could not be statically linked.
Bakermaker is entirely written in C++ 20, and all compilation happens through cmake and the MSVC compiler. Bakermaker will not work with the MingW compiler, as this project relies on DLL delay loading.
This project submodules GLFW, Dear ImGui, libromfs, and miniz into the libs folder. In addition, it requires string theory, libssh, openssl, and zlib to be available on the system, such as through vcpkg.
Before building, the project requires a few user-provided files present:
- A copy of the client program located at resources/setupclient.exe
- A zip archive located at resources/libs.zip with the following files:
- ssh.dll
- libcrypto-3-x64.dll
- ucrtbased.dll
- vcruntime140d.dll
- A font, provided as "font-bold.ttf" and "font-regular.ttf", both in the resources folder The final output will be located in the build folder, named gitolitesetuper.exe.
There is a built-in manual tab that hosts all documentation for the program. All documentation files are located in resources/docs.
Bakermaker only supports a specific subset format of the normal gitolite configuration file. Bakermaker can only read configuration files in a specific format:
The first two lines read:
repo gitolite-admin
RW+ = admin
Following this, all other repositories are listed as so, with one line break between them:
repo <reponame>
RW+ = admin <admin users>
- master = <non admin users>
RW = <non admin users>
No other gitolite configuration options are currently supported.
Feel free to open a github issue if you find a bug, but I am not looking to expand this project much further past where it currently is. It is designed for a specific circumstance, and I am more interested in other projects, so if the bug is critical I will (maybe) fix it, but I most likely will not address feature requests or unusual bugs that would not show under normal usage.