Improving performance for Trac's git support
Using python bindings for git rather than the git command-line
This could be an alternative backend that would avoid the cost of spawning git executables and parsing their standard output.
The trade-offs could be the following, bindings vs. command-line:
- (+) faster (but how much?)
- (?) robustness
- (+) no pipe handling and dangling processes (is this still problematic?)
- (-) crashes?
- (-) memory usage (risk of memory leaks?)
Peter Stuge started a conversion of the backend, see his early work in his pygit2wip branch.
First you'll need to install the git bindings for Python:
And for building
libgit2, you'll need cmake.
Windows build instructions, for Python 2.6 or 2.7 with VC9
Follow the instructions given in this section: https://github.com/libgit2/pygit2#building-on-windows
At this point you're ready to build the bindings themselves:
$ git clone https://github.com/libgit2/pygit2 $ cd pygit2 $ ls $LIBGIT2 bin include lib $ python setup.py install