The Outputable class is now the base class of all the classes that want to
output formatted text. This is more object oriented and cleaner solution
compared to the previous implementation.
Instead of directly supporting the version module, XML and HTML output will
instead always output a version string somewhere to indicate with what
version of gitinspector the output was generated.
This output is a good start and should work fine as a first template that
can be used when implementing HTML output in all other modules.
Once this is done we can work on adding some interactivity. However; it
might be a good idea to just release a version with some simple HTML
output before adding more complex stuff.
Flot is a javascript plotting library for charts. It uses JQuery, is very
common and has a good compatibility between different browsers.
We will use this library for data representation in the HTML output mode.
This enables us to fetch XML output from multiple sources in-between the
footer and header. These functions are called at the beginning and end
when gitinspector runs.
Forgot to specify the '*' operator when passing the parameters to the
callback functions; something which resulted in a dictionary being sent
into the callback functions. Obviously, this is not what we want.
Changed from using the deprecated functions in the os module to using the
new ones in the subprocess module. All string reading now also uses the
string.decode() function, which seems to be recommended practice whenever
the input is a little "iffy".
The responsibilities module shows a maximum of 10 files, per author, that each
author is responsible for. This fucntionality can be enabled by supplying -r
or --responsibilities to gitinspector. The parameter is also enabled if
--tda367 is specified.
The default setting configures printed file names to fit to a 80 character
wide terminal; something that destroys the ability to do proper filtering of
long file names in gitinspector.
The output is now limited to 80 characters; this is useful when cat'ing to a
file and terminal.get_size() is called. The previous behaviour was to always
output according to the terminal width, something that probably isn't what
someone usually wants when outputting to a file.
Filtering can be specified using an arbitrary number of -x (or --exclude)
parameters. The filtering works in a similar fashion to an inverted grep,
meaning that matched file names will be excluded from the generated
statistics.
To accommodate this modification, the changing of working directory (when
a repository is specified) has been moved from the system module to the
main gitinspector module. This enables us to change directory in one go
when gitinspector starts, thus removing the need for the previous system
module.
The following concurrency components control the implementation:
* A semaphore that limits the number of running blame instances to the
number of cores detected in the system.
* A lock that protects internal data structures inside the blame module.
The threading functionality is currently disabled because some additional
changes are needed in the system module before it can work correctly.