More and more development tools are supporting git repository URLs as a way of pointing to code or data. That’s convenient if you’re working with a mature, third-party repository that’s already hosted, but it means that sometimes you just need a quick way to serve a repo over a web interface for experimental work.
tl;dr
This takes a repo in path/to/repo
and serves it from a new
directory called repo-http
. I’ve tested it on GNU/Linux, but
it should even work on Windows if you use rename
instead of
mv
.
The Python command starts a web server that stays running in the foreground, dumping request logs to the console. Keep it running and use another terminal for other work. It should now be possible to access your repo from another machine over port 8000:
If you update the original repository on the same machine, you can push the changes to the serving copy:
(Make sure you’re in the original repository. I.e., do cd
path/to/repo
if you have to.)
Limitations and Alternatives
This is seriously not production-worthy. There’s no access control, there’s no encryption, you can’t push to the repo through it, and I wouldn’t trust it for heavy traffic or long-term robustness. It’s purely for quick experiments with certains tools that demand a URL to an online git repo, and when the alternatives below aren’t suitable.
On a local machine, many tools that support git (including git itself) also support plain paths (or at least
file:///path/to/repo
URLs).
SSH works best most of the time for ad hoc git access over a network. (E.g., ssh://user@example.com/path/to/repo
) Git can push over ssh, and of course
you get encryption and simple access control. Some git-based tools can’t handle passwords, but this can sometimes be
worked around by using public keys and a config file (man 5
ssh_config
).
The git daemon is the recommended tool for a more permanent setup, or you can configure a production-ready server like Nginx or Apache to replace Python’s SimpleHTTPServer.
More details are here.