Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

gitws - git smart transport via http and websockets


The code which can be found here is a proof of concept showing that using http and websockets as the transport for the smart git protocol is possible and works.

As such performance may be sub-optimal and the code may be unstable at times.



At first you should start your gitws server in the directory you want to work with. This can either be a directory containing a repository itself or a directory containing multiple repositories.

For the simple case, let us assume you have cloned this repository to home/user/gitws and you want to publish that one. Change to that directory and run “/home/user/gitws/”.

For the client to work you need a few pieces in place. First, you need the git-remote-ws binary copied or symlinked to the path holding the git-* binaries (Debian/Ubuntu: ”usr/lib/git-core”). You then need bin/gitws-client somewhere on your path (you could symlink it to usr/local/lib, for example). Do not forget that the gitws Python module needs to be on your PYTHONPATH too.

Once these are in place you can go ahead and run “git clone ws:// gitws_clone”, which will go ahead and clone your repository over the WebSocket connection. Further calls to git pull, etc. will also use the WebSocket connection.

If you want to know what is going on inside the client go ahead and set the GITWS_LOG environment variable to “debug”.


How it works

Basically gitws operates the same way git’s ssh smart transport works, the only difference is that the communication is carried out via a websocket.

The second approach for this implementation uses a customized git-remote-* binary, which calls gitws-client and lets it do its job.


git smart transport via websockets




No releases published
You can’t perform that action at this time.