An agile tool to analyze Git repositories
In order for Ruby's libgit binding, rugged, to work, you need to install several native libraries. To build the libgit version shipped with rugged's gem, you need
cmake installed. If you want rugged to be able to clone ssh or https repositories, you need several additional depenc as listed on libgit website.
From a gem
gem install diggit.
From the sources, with bundler
Install diggit using the following commands:
git clone https://github.com/jrfaller/diggit.git cd diggit gem install bundler --user-install bundler install
Beware, the gem bin directory must be in your path. Also, the
dgit command is in the
bin folder of diggit.
From the sources, with vagrant
You can automatically get a working VM with all required dependencies with only one command, how cool is that? For this, just install vagrant and virtualbox, and
vagrant up in a freshly cloned diggit folder (see previous section). Beware, this magic only works on Mac OS and Linux because it uses NFS shared folders. Note that if you use this method, you don't care about the prerequisites.
Don't forget that dgit binary has an associated help that can be consulted using
dgit help. Additionally, if you have installed Diggit from the sources, you can generate the documentation by running
yard doc in the cloned folder.
The diggit tool is designed to help you analyze software repositories. Firstly you have to create a new folder in which you launch the
dgit init command. This way, the folder becomes a diggit folder in which you can configure repositories and analyses.
Setting-up the repositories
You can add some repositories to be analyzed with the following command:
dgit sources add https://github.com/jrfaller/diggit.git.
An analysis is applied to each repository. You can configure the analyses to be performed with the following command:
dgit analyses add test_analysis. Analyses are performed in the order they have been added. Analyses are provided in the
plugins/analysis folder (from the diggit installation or in any initialized diggit folder). The filename of an analysis is the underscore cased name of the class where it is defined (which is camel cased). Analyses classes must extend the
A join is performed after all analyses of all repositories have been performed. You can configure the joins to be performed with the following command:
dgit joins add test_join. Joins are performed in the order they have been added. Similarly to analyses, joins are provided in the
plugins/join folder (from the diggit installation or in any initialized diggit folder). The filename of a join is the underscore cased name of the class where it is defined (which is camel cased). Joins must provide constraints on the analyses that must have been performed on the sources by using
require_analyses in the class defining the join. For instance, to require the
test_analysis analysisn, you need to use the statement
require_analyses test_analysis. Joins classes must extend the
Addons add features to analyses or joins: for instance the capability of writing to a MongoDB database, etc. To enable addons for an analysis or a join you need to use
require_addons in an analysis or join class. For instance, to use the filesytem addon you need the following statement:
Cloning, analysing and joining
Once diggit is configured you can perform the analyses. First, you have to clone the repositories by using
dgit clones perform. Then you can launch the analyses by using
dgit analyses perform. Finally, the joins are executed via the command
dgit joins perform. You can use the
mode option to handle the cleaning of joins or analyses (e.g.
dgit analyses perform -m rerun).
At all time, you can check the status of your diggit folder by using