A very simple git smart HTTP server
A very simple git smart HTTP server.
This was created as a learning experience on how to create, and possibly use,
a custom git server to upload your code. Also to play with some weird ideas…
We use fastapi
to handle all the HTTP interface and uvicorn
as the
ASGI
server.
$ pip install -r requirements.txt
$ uvicorn app:app
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
Now you have an HTTP git server running on localhost:8000
. You can push your
code to it simply by adding a remote that points to it:
$ git remote add local http://localhost:8000/reponame
# push to it
$ git push local
# clone from it
$ git clone http://localhost:8000/reponame
Note that the username/password is currently ‘admin’ for both. This is found in the gitserver/app.py
file,
and you can edit that file if you’d like to change the username/password.
Note that the directory where the code is saved is created using python’s
tempfile
module. Which means, when the program exists, or reloads, it will
be deleted.
There is also a docker image if you prefer that:
$ docker run --rm -it -p 8000:8000 meyer1994/gitserver
This project would not have been possible without the code in the following
repositories. They helped me understand a lot about git http backend.