Code Monkey home page Code Monkey logo

git_detective-rs's Introduction

Git Detective

A Library and CLI Application that aide in getting a clearer view of Git Repository contributions.

Build Status Coverage Status

This project isn't on crates.io yet because it's still under development.

[dependencies]
git_detective = {git = "https://github.com/NickHackman/git_detective-rs", branch = "development"}

Why?

I've graded at Ohio State University for CSE 3901 in which groups work together on projects, from web scraping to standing up a Rails server.

When grading for the course, we distribute a percentage of points based on the overall team coordination and distribution of work. This is great for preventing the one straggler that does nothing all semester, but this is by far the most time consuming in the terms of grading.

git_detective-rs attempts to resolve this problem by showing data of contributions breaking them down by language and type (Blank, Comment, or Code). In an attempt to prevent the ever malicious underachiever that makes 100 commits of single line comments.

Documentation

Since git_detective-rs isn't on crates.io, documentation must be generated by cargo locally.

$ git clone https://github.com/NickHackman/git_detective-rs
$ cd git_detective-rs/
$ cargo doc --open --no-deps

Example

use std::fs::remove_dir_all;

use git_detective::{Error, GitDetective};

fn main() -> Result<(), Error> {
    let path = "serde-example";
    let serde_url = "https://github.com/serde-rs/serde.git";

    let mut gd = GitDetective::clone(serde_url, path, true)?;

    // NOTE: this operation is very expensive and can take up
    // to a few minutes for large repositories
    let contributions = gd.final_contributions()?;

    for contributor in contributions.contributors() {
      println!("{} contributed to the project", contributor);
    }
    println!("Total lines = {}", contributions.total_lines());

    // Clean up repository
    let _ = remove_dir_all(path);
    Ok(())
}

Benchmarks

Benchmarks and pretty graphs needed

License

The binary portion of this repository licensed under GPLv3

The library portion of this repository licensed under MIT

git_detective-rs's People

Contributors

nickhackman avatar

Watchers

 avatar  avatar

git_detective-rs's Issues

Add benchmarks

Add benchmarks to README.md and in TravisCI (most likely a smaller one) in order to get a continuous look at changes and performance with each change.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.