A minimal Git HTTP server
A minimal, “single-serving” Git HTTP server for
- Local, ad hoc experimentation
- Git education
Normal, everyday use is not recommended unless security and performance are non-issues. Requires a normal Git installation.
There’s really no need to git clone or pip install since this thing is a single file. See --help for available options like basic auth, create-on-clone, create-on-push, SSL/TLS, etc.
- Use case
- Some VM or container in which SSH/NFS/SMB aren’t desired and for which folder sharing or volume mapping aren’t worth configuring
- On the host
laptop:~$ curl -L "$github_raw_url" | python3 - ./www Serving over port 8000 ...
- On the client
[my_vm]# git clone http://laptop.local:8000/repos/my_repo.git Cloning ...
- Some caveats
Your network setup might require that you provide an IP address (likely of a virtual bridge) in place of localhost or laptop.local. Export that (or 0.0.0.0) as _HOST to the server’s environment.
The $GIT_DIR being cloned (.git folder or bare repo) must reside 2+ levels below the “document root” (~/www in the example above). If that’s a problem, export _FIRST_CHILD_OK=1 or make a dummy tree and nest a link to the repo:
~/ ├── www/ │ └── repos/ │ └── my_repo.git -> ../../my_repo/.git └── my_repo/ └── .git/
Non-bare repos must have the receive.denyCurrentBranch option set to updateInstead in order to receive pushes and update the working directory. (The same applies to any transport when the pushed branch is checked out on the receiving end.)
laptop:my_repo$ git config --add receive.denyCurrentBranch "updateInstead"
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size & hash SHA256 hash help||File type||Python version||Upload date|
|emergency_git_server-0.0.8-py3-none-any.whl (24.8 kB) Copy SHA256 hash SHA256||Wheel||py3|
|emergency_git_server-0.0.8.tar.gz (20.3 kB) Copy SHA256 hash SHA256||Source||None|