PinkPony

Mining from git history with Pink Pony!

GPL-3.0 License

Stars
9

PinkPony

Pink pony is an open-source software command-line application that suggests functional clusters based on the common changes on git. Functionally related files are grouped into the same cluster. In this way the tool can help to split a monolithic application into a set of microservices.

What changes together should be also together

Result

The application produces 2 files:

  • cluster.txt: contains clusters;
  • graphViz.dot: a .dot file to visualize the co-change graph.

Usage

To run the Pink pony application you have to download the recently released version.

Clustering algorithms options

  • mr: Markov Clustering is a hard clustering algorithm;
  • ch: Chinese Whispers is a hard clustering algorithm;
  • max: MaxMax is a soft clustering algorithm for undirected graphs;
  • watset: Watset is a local-global meta-algorithm for fuzzy graph clustering.

The implementation of the algorithms used from Watset project

Level of clustering

Depending on the investigation that you want to do, the application provides two options:

  • file : Suggests functional clusters on file level.

  • module : Suggests functional clusters on module level.

  • This will suggest functional clusters from files.

$ java -jar pinkpony.jar path\to\.git file max
  • This will suggest modules under the specific module
Example
input
output
$ java -jar pinkpony.jar path\to\.git file max moduleName
  • The following command will suggest new co-change modules from the submodules of mod1, mod2, mod3 with the Markov Clustering algorithm.
Example
input
output
$ java -jar pinkpony.jar path\to\.git module mr mod1 mod1 mod2  

The Pink Pony application is a part of my thesis project.