Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pavlmits/pinkpony
Mining from git history with Pink Pony!
https://github.com/pavlmits/pinkpony
git graph-clustering hacktoberfest java java-11 mining-software-repositories
Last synced: 26 days ago
JSON representation
Mining from git history with Pink Pony!
- Host: GitHub
- URL: https://github.com/pavlmits/pinkpony
- Owner: Pavlmits
- License: gpl-3.0
- Created: 2019-07-11T10:45:46.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-12-05T22:22:05.000Z (11 months ago)
- Last Synced: 2024-09-30T13:03:04.175Z (about 1 month ago)
- Topics: git, graph-clustering, hacktoberfest, java, java-11, mining-software-repositories
- Language: Java
- Homepage:
- Size: 1.01 MB
- Stars: 9
- Watchers: 2
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://en.wikipedia.org/wiki/DOT_(graph_description_language)) file to visualize the co-change graph.## Usage
To run the Pink pony application you have to download the [recently released version](https://github.com/Pavlmits/PinkPony/releases/latest).#### 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](https://github.com/nlpub/watset-java)
#### 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.
```bash
$ java -jar pinkpony.jar path\to\.git file max
```
* This will suggest modules under the specific module
##### Example
###### input
moduleName
file1
file2
...
fileN###### output
cluster1
file1
file3
cluster2
file6
file89
...
clusterN
file2
file15
```bash
$ 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
mod1
subMod1
sudMod2
subMod3
mod2
subMod4
sudMod5
mod3
subMod6
sudMod7
subMod8
subMod9
###### output
cluster1
subMod3
subMod9
subMod8
cluster2
subMod4
subMod5
subMod1
...
```bash
$ java -jar pinkpony.jar path\to\.git module mr mod1 mod1 mod2
```The Pink Pony application is a part of my thesis project.
[Markov Clustering]: https://doi.org/10.1137/040608635
[Chinese Whispers]: https://dl.acm.org/citation.cfm?id=1654774
[MaxMax]: https://doi.org/10.1007/978-3-642-37247-6_30
[Watset]: https://doi.org/10.1162/COLI_a_00354