git-deps
requires pygit2, which in return
requires libgit2. git-deps
and
pygit2 are both Python modules, but libgit2 is not. This means
that there are a few ways to approach installation, detailed below.
Corrections and additions to these instructions are very welcome!
Before you pick an option, it is very important to consider that only certain combinations of libgit2 and pygit2 will work together.
Also, Python 2.x is no longer supported for git-deps
, although as of
April 2021 it may still work if you are lucky and know what you are
doing.
As mentioned in pygit2
's installation
instructions, pip
19.0 and
later can install binary wheels of pygit2
which include libgit2
.
This makes installation considerably easier, and should be as simple
as:
sudo pip3 install git-deps
or just for the current user:
pip3 install --user git-deps
For a per-user install, you will probably have to also ensure that you
have ~/.local/bin
on your path. See the pip
documentation if you are unsure how
this works.
Also note that it may be pip
rather than pip3
on your system, but
if so run pip --version
to make sure that you aren't getting a
Python 2.x environment by mistake.
if you are using Linux, there is a good chance that your distribution already offers packages for both pygit2 and libgit2, in which case installing pygit2 from packages should also automatically install libgit2. For example, on openSUSE, just do something like:
sudo zypper install python38-pygit2
Note that this assumes Python 3.8, which is the latest at the time of writing.
Similarly, on Debian:
sudo apt-get install python3-pygit2
pygit2's website also has installation instructions for Windows and Mac OS.
Finally, install git-deps
via pip
, for example system-wide on
Linux via:
sudo pip3 install git-deps
or just for the current user:
pip3 install --user git-deps
(See the caveats in option 0 above about pip
vs. pip3
and per-user
installs.)
In this case it may be enough to install libgit2 via your distribution's packaging tool, e.g. on openSUSE:
sudo zypper install libgit2-24
Then install git-deps
via pip
as described in option 1 above.
This should also automatically install pygit2 as one of its
dependencies. However be aware that this will pick a pygit2 version
based on requirements.txt
from git-deps
, which
may not be compatible with the libgit2 you have installed from OS
packages. This can be fixed by telling pip install
which version of
pygit2 you want. For example if you have installed libgit2
0.24.0, you could do:
pip install pygit2==0.24 git-deps
First follow the installation instructions for pygit2.
Then clone this repository and follow the standard Python module installation route, e.g.
python setup.py install
or if you want to hack on git-deps:
pip install -e .
Rather than following the above manual steps, you can try
an alternative approach created by Paul Wellner Bou which facilitates running git-deps
in a Docker container.
This has been tested on Ubuntu 14.10, where it was used as a way to
circumvent difficulties with installing libgit2 >= 0.22.
Now git-deps
should be on your $PATH
, which means that executing
it and also git deps
(with a space, not a hyphen) should both work.
The web-based graph visualization code uses Javascript and relies on
many third-party modules. If you've installed git-deps
via pip
then these files should all be magically installed without any extra
effort, so you can skip reading the rest of this section.
If however you are installing git-deps
from source and you want to
use the shiny new graph visualization web server functionality, you
will need to fetch these Javascript libraries yourself. Currently
only one approach to installation is listed below, but any Javascript
experts who have suggestions about other ways to install are warmly
encouraged to submit them.
-
To install the required Javascript libraries, you will need
npm
installed, and then type:cd git_deps/html npm install node_modules/.bin/browserify -t coffeeify -d js/git-deps-graph.coffee -o js/bundle.js
(If you are developing
git-deps
then replacebrowserify
withwatchify -v
in order to continually regeneratebundle.js
whenever any of the input files change.) -
Optionally install
browserify
globally so that it's on your$PATH
and therefore executable directly rather than having to specify thenode_modules/.bin
prefix. For example (at least on Linux) you can use the-g
option ofnpm
by running this asroot
:npm install -g browserify
-
You will need the Flask Python module installed, but that should have already been taken care of by the base installation described above (e.g. via
pip
).
Now you should be able to run git deps --serve
and point your
browser at the URL it outputs.
It is possible to set a gitfile://
URL handler so that if you
double-click any commit node on the dependency graph, your browser
will launch that handler with a URL which points to that commit within
the repository path on your local filesystem. So if you configure
your browser desktop environment, you can have a program such as
gitk
launch for viewing further
details of that commit. Obviously this only makes sense when viewing
the graph via http://localhost.
On most Linux machines, this can be set up by first locating the Desktop Entry file which is provided in the distribution for convenient installation:
pip show -f git-deps | grep gitfile-handler.desktop
Once you have located it, it needs to be copied or symlinked into the right location, e.g.
ln -sf /usr/share/git_deps/gitfile-handler.desktop \
~/.local/share/applications
and then the desktop file has to be registered as a handler for the
gitfile
protocol:
xdg-mime default gitfile-handler.desktop x-scheme-handler/gitfile