/git2net

An Open Source Python package for the extraction of fine-grained and time-stamped co-editing networks from git repositories.

Primary LanguagePythonGNU Affero General Public License v3.0AGPL-3.0

Tests Documentation Status

git2net

git2net is an Open Source Python package that facilitates the extraction of co-editing networks from git repositories.

Download and installation

git2net is pure python code. It has no platform-specific dependencies and thus works on all platforms. The only requirement is a version of git >= 2.0. Assuming you are using pip, you can install latest version of git2net by running:

> pip install git2net

This also installs the necessary dependencies. git2net depends on the python-Levenshtein package to compute Levenshtein distances for edited lines of code. On sytems running Windows, automatically compiling this C based module might fail during installation. In this case, unofficial Windows binaries can be found here, which might help you get started.

How to use git2net

Tutorials

After installation, we suggest to check out our tutorials, detailing how to get started using git2net. We provide tutorials covering different aspects of analysing your repository with git2net. You can directly interact with the notebooks in Binder, or view them in NBViewer via the badges below.

Binder NBViewer

In addition, we provide links to the individual tutorial notebooks below:

Tutorial Binder Google Colab NBViewer
1. Cloning a repository for analysis Binder Open Cloning Tutorial In Google Colab NBViewer
2. Mining git repositories with git2net Binder Open Mining Tutorial In Google Colab NBViewer
3. Author disambiguation with gambit Binder Open Disambiguation Tutorial In Google Colab NBViewer
4. Network analysis with pathpy Binder Open Network Tutorial In Google Colab NBViewer
5. Database-based analyses Binder Open Database Tutorial In Google Colab NBViewer
6. Computing file complexity git2net Binder Open Database Tutorial In Google Colab NBViewer

Documentation

git2net's documentation is available at git2net.readthedocs.io.

Usage examples

We have published some motivating results as well as details on the mining algorithm in "git2net - Mining Time-Stamped Co-Editing Networks from Large git Repositories".

In "Analysing Time-Stamped Co-Editing Networks in Software Development Teams using git2net", we use git2net to mine more than 1.2 million commits of over 25,000 developers. We use this data to test a hypothesis on the relation between developer productivity and co-editing patterns in software teams.

Finally, in "Big Data = Big Insights? Operationalising Brooks' Law in a Massive GitHub Data Set", we mine a corpus containing over 200 GitHub repositories using git2net. Based on the resulting data, we study the relationship between team size and productivity in OSS development teams. If you want to use this extensive data set for your own study, we made it publicly available on zenodo.org.

DOI

How to cite git2net

@inproceedings{gote2019git2net,
  title={git2net: {M}ining time-stamped co-editing networks from large git repositories},
  author={Gote, Christoph and Scholtes, Ingo and Schweitzer, Frank},
  booktitle={Proceedings of the 16th International Conference on Mining Software Repositories},
  pages={433--444},
  year={2019},
  organization={IEEE Press}
}

@article{gote2021analysing,
  title={Analysing time-stamped co-editing networks in software development teams using git2net},
  author={Gote, Christoph and Scholtes, Ingo and Schweitzer, Frank},
  journal={Empirical Software Engineering},
  volume={26},
  number={4},
  pages={1--41},
  year={2021},
  publisher={Springer}
}

License

This software is licensed under the GNU Affero General Public License v3 (AGPL-3.0).