Tool for analysis and visualization of git logs
Visulog a tool for analyzing contributions from the members of a team working a a same given project hosted on a git repository. Its goal is to assist teachers for individual grading of students working as a team.
This tool can:
- compute a couple of relevant indicators such as:
- number of lines or characters added/deleted/changed
- number of commits
- number of merge commits
- analyze the variations of these indicators in time: for instance sum then in a week, compute a daily average or an average in a sliding window, ...
- visualize the indicators as charts (histograms, pie charts, etc.) embedded in a generated web page.
- The charts are generated by a third party library (maybe a Java library generating pictures, or a javascript library which dynamically interprets the data).
- The data to analyze can be obtained using calls to the git CLI. For instance "git log", "git diff --numstat", and so on.
Visulog contains the following modules:
- data types for storing raw data directly extracted from git history, with relevant parsers
- a generator of numerical series (for the indicators mentioned above)
- a generator of web pages
- a command line program that calls the other modules using the provided command line parameters
- a shared module for configuration object definitions
-
clone the repository
-
Enter the project folder
cd visulog
-
run gradle wrapper (it will download all dependencies, including gradle itself)
./gradlew build
Currently, it can be run through gradle too. In order to pass program arguments, you need to pass them behind --args
:
./gradlew run --args='here are my args'
NOTE: -r to specify the repository to analyze is mandatory, we will set it to .
in examples, to examine the visulog repo in itself.
For instance with a short argument :
./gradlew run --args='-a countCommits -r .'
Or with a long argument :
./gradlew run --args='--addPlugin countCommits -r .'
Will count the commits of each author in the current branch of the git repository present in the current folder (".").
If you want to run several plugins at the same time, add them separated by a space:
./gradlew run --args='-a countCommits commitsPerDay -r .'
mergesPerAuthor
lists the number of merge commits per authorcountCommits
counts the number of commits per authorcommitsPerDay
counts the number of commits per day
Some plugins have visual charts, using chartist. Note that you will have to import it if you use a custom template
commitsPerAuthorChart
is a rework ofcommitsPerDay
to make a chart out of it.signedCommitsProportion
shows a donut chart of the number of commits that have been signed with a gpg key