Giter Site home page Giter Site logo

gitcoach's Introduction

gitcoach

https://badge.fury.io/py/gitcoach.png https://travis-ci.org/tarmstrong/gitcoach.png?branch=master https://pypip.in/d/gitcoach/badge.png

Gitlearn and gitcoach are a pair of tools for helping me, and hopefully other people, better understand large projects living in Git by trying to identify codependent pieces of code.

Installation

The easiest way to install gitcoach is through pip:

$ pip install gitcoach

Usage

To generate the prediction data, run gitlearn. This might take a long time, especially when using large values for --max-commit-values

usage: gitlearn [-h] [--max-commit-files MAX_COMMIT_FILES]

Generate coaching data for gitcoach.

optional arguments:
  -h, --help            show this help message and exit
  --max-commit-files MAX_COMMIT_FILES, -n MAX_COMMIT_FILES
                        Commits touching more than N files are thrown away

The gitcoach utility:

usage: gitcoach [-h] [--file FILE] [--commit COMMIT] [--threshold THRESHOLD]

Find co-dependent files based on git history. Two files are co-dependent if
they have been modified in the same commits often enough.

optional arguments:
-h, --help            show this help message and exit
--file FILE, -f FILE  Find suggestions for a specific file
--commit COMMIT, -c COMMIT
                        Find suggestions for files modified in a specific
                        commit.
--threshold THRESHOLD, -t THRESHOLD
                        Threshold for co-incidence ratio (default=0.8).

Example output of gitcoach:

Here are some files you might want to look at:

travis.yml  suggested by    README.rst (0.500000)
tox.ini     suggested by    README.rst (0.500000)
setup.py    suggested by    README.rst (0.500000)
requirements.txt    suggested by    README.rst (0.500000)

gitcoach's People

Contributors

humphd avatar matmarex avatar mhoye avatar secretrobotron avatar tarmstrong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gitcoach's Issues

Accept a range of commits as an argument to `gitcoach`

The primary use case that I can think of for this is code review on pull requests:

  • Pull requests consist of multiple commits.
  • Each commit touches multiple files.

If I specify the range of commits included in a pull request, gitcoach should be able to suggest files that ought to have been modified as well. Thus gitcoach becomes useful for code review and pre-commit sanity checking.

Learn from file additions as well as modifications

(From mhoye's TODO)

Use case: if a new file is being added, should some other file be modified as well? For example, if you add a file, you might need to modify the Makefile to include it in the build.

Fails from within submodules (+solution)

gitcoach and gitlearn currently expect the .git directory to live in <root>/.git, but this is not always the case โ€“ for example, repos created as submodules have their .git directories in <parent_root>/.git/modules/<repo_name>, and only have a .git file containing info about the real location. This makes gitlearn fail in funny ways.

You can use git rev-parse --git-dir to get the path to the .git directory, and no, I don't know why rev-parse does this either. (The docs state it's relative to current directory, but for me it sometimes turns out to be absolute.) I'd implement it myself, but I'd have to understand the source code first, and I haven't gotten around to it yet :) โ€“ it looks like the change might be necessary in a few places.

Crashes with memory error

Machine Spec

  • Windows 7 Professional 32 bit
  • 64 bit machine
  • 4 GB RAM

Software

  • Python 2.7.1
  • gitcoach 0.2.2

Traceback (most recent call last):
File "C:\Python27\Scripts\gitlearn-script.py", line 9, in
load_entry_point('gitcoach==0.2.2', 'console_scripts', 'gitlearn')()
File "C:\Python27\lib\site-packages\gitcoach-0.2.2-py2.7.egg\gitcoach\commands.py", line 39, in learn
correlations = l.find_correlations(t1)
File "C:\Python27\lib\site-packages\gitcoach-0.2.2-py2.7.egg\gitcoach\learn.py", line 24, in find_correlations
correlations[combotuple] += 1
MemoryError

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.