Skip to main content

Git graph to networkx

Project description

Git-NetworkX

Port of https://github.com/hoduche/git-graph to NetworkX


Install

PyPi

pip install git-networkx

Git

pip install git+https://github.com/CircArgs/git-networkx.git

Demo

from networkx.drawing.nx_pydot import write_dot
from git_networkx import GitNX, Commit
#everything
All = GitNX('my/repo/path/that/has/a/git/directory')
#networkx Digraph representing all nodes of the git repo

#Commits
#notice the path does not have to be .git in case you have used a different name
Commits = GitNX('my/repo/path/located/in/.got', "c")
#networkx Digraph representing only commits of the git repo

#again, the results of GitNX is just a networkx.DiGraph and as such you can do anything you would on such an object
[n for n in All if isinstance(n, Commit)]

Suppose you had a log like the following:

commit 9a99a4d85cb14005ca829e2cab8f626b4034b981 (HEAD -> master, dev)
Author: CircArgs <quebecname@gmail.com>
Date:   Fri Aug 14 22:05:30 2020 -0400

    I like dogs

commit 80798c310455976e08fedd9b367794692ebb54a6
Author: CircArgs <quebecname@gmail.com>
Date:   Fri Aug 14 22:04:58 2020 -0400

    add file2 with text

commit 8c7f9cea1f6323d793cd035e2178636d6ebf0a36
Author: CircArgs <quebecname@gmail.com>
Date:   Fri Aug 14 22:04:28 2020 -0400

    add file 1

then

G=GitNX(".", "lch")

print(list(G.neighbors(Commit("80798c310455976e08fedd9b367794692ebb54a6"))))
# [Commit('8c7f9cea1f6323d793cd035e2178636d6ebf0a36')]

print(list(G.predecessors(Commit("80798c310455976e08fedd9b367794692ebb54a6"))))
# [Commit('9a99a4d85cb14005ca829e2cab8f626b4034b981')]

print(list(G.predecessors(Commit('9a99a4d85cb14005ca829e2cab8f626b4034b981'))))
# [LocalBranch('dev'), LocalBranch('master')]

Nodes

This table shows what nodes can be in a graph. The Letters denote the filters for creation of the graph as the second positional argument to git_networkx.GitNX i.e. the nodes argument.

As shown in above examples, the DiGraph from GitNX can be filtered by checking isinstance against the Node Classes below or by filtering by a an instance of one of the classes.

Overall Node Class: GitNode

Node kind Letter Node Class Node kind Letter Node Class
blob b Blob remote branch r RemoteBranch
tree t Tree remote head d RemoteHead
commit c Commit remote server s RemoteServer
local branch l LocalBranch annotated tag a AnnotatedTag
local head h LocalHead tag g Tag

By default all nodes are added to the DiGraph.

# you can get your commits, branches and the head of your local repo simply with lch
G=GitNX('../git_networkx_test/', "lch")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

git-networkx-2.3.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

git_networkx-2.3.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file git-networkx-2.3.0.tar.gz.

File metadata

  • Download URL: git-networkx-2.3.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.7.6 Linux/5.4.0-42-generic

File hashes

Hashes for git-networkx-2.3.0.tar.gz
Algorithm Hash digest
SHA256 dd2d93f3e4091fecab2bbb61b8cac594f13ef1eac25f1fb727cef85b61375c14
MD5 4b197f1b2b6029f05fb1daf3c4496f13
BLAKE2b-256 439da4a017a082aff4ed7310e982f850e12e5b02a53f4fb7719ce26415ae1612

See more details on using hashes here.

File details

Details for the file git_networkx-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: git_networkx-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.7.6 Linux/5.4.0-42-generic

File hashes

Hashes for git_networkx-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cd22311aec3bada787c21eb5610e06adef7f21cb1a14071ffa65e4d49cc7ee4f
MD5 78313a9dddb06f9f4bb96fbcb5f49dc1
BLAKE2b-256 e404b19d2b34458e9b8f6634bfbe39d7912528c0bc80b756238957a758167f58

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page