Commit Graph

201 Commits

Author SHA1 Message Date
Adam Waldenberg
af7840be81 Added .cc and .hh to the list of default extensions scanned. 2014-01-08 03:51:02 +01:00
Adam Waldenberg
a1d83ead9e Added support for comments in .hh files. 2013-12-05 08:47:20 +01:00
Adam Waldenberg
abbeed5356 Added support for comments in .cc files. 2013-12-05 08:42:25 +01:00
Adam Waldenberg
37d78ff992 Updated the help command to show information on author/email filtering. 2013-10-30 03:07:45 +01:00
Adam Waldenberg
1a828136b5 Added support for comments in .scala files. 2013-10-28 02:10:09 +01:00
Adam Waldenberg
998ec7456f Added support for comments in .jspx and .xhtml files. 2013-10-25 19:28:31 +02:00
Adam Waldenberg
791e9e39dd Removed unnecessary print in the blame module.
This print should only be enabled in any "interactive format", such as the
terminal (text) output.
2013-09-17 11:56:48 +02:00
Adam Waldenberg
e263982806 Progress text of the blame module was being outputted wrong.
Some regression occurred in a previous commit as the progress text never
was purged out of the output.
2013-09-17 11:53:57 +02:00
Adam Waldenberg
cf0f40cc4d There was a mistake in the calculation of comments in the blame module.
Whenever filtering of author or email was enabled, problems could arise
when calculating comments percentage. Did some reshuffling of the logic;
resolving it.
2013-08-13 19:26:14 +02:00
Adam Waldenberg
c96d3c3ffe The blame module was not behaving quite right when used with "--since".
It was not taking the caret (^) character into consideration when --since
was being specified, something which resulted in an excess of attributed
rows.

With this easy fix, the behavior should now be "correct".
2013-08-13 15:26:42 +02:00
Adam Waldenberg
e7d69d78aa Removed some "#!/usr/bin/python" entries that sneaked into a few files.
This entry should only be present in gitinspector.py (our entry point).
2013-08-08 07:10:04 +02:00
Adam Waldenberg
2633e04c3a Completed the support for bare repositories (Fixes issue 14).
With the missing module now gone, only a few minor modifications were
needed to get it working.
2013-08-03 10:34:45 +02:00
Adam Waldenberg
bc182c6924 Completely removed the missing module and the --checkout-missing option.
This is flag should not be needed anymore, as gitinspector always uses
a reference point such as HEAD or some reivision when looking into the
repository (never the file structure directly).
2013-08-03 10:30:43 +02:00
Chris Ring
00fdec2928 Initial support for bare repos.
Signed-off-by: Chris Ring <chris@ringthis.com>
Reviewed-by: Adam Waldenberg <adam.waldenberg@ejwa.se>
2013-08-03 09:55:44 +02:00
Adam Waldenberg
a4a0e409a2 Filtering rules can now be separated by a comma.
Instead of specifying -x (or --exclude) multiple times, it is possible to
specify multiple filtering rules by separating each rule with a comma (,)
character. This enables the new support for filtering authors and email to
work in conjunction with git-config.

As a side effect, this means that we reserve the comma character for
internal use in gitinspector and that it can't be used in any regular
expression or filtering rule. However, this is not a big problem.

Of course, specifying -x multiple times (like before) is still supported.
2013-08-03 09:41:21 +02:00
Adam Waldenberg
1edae66fee Added filtering of commits from specific authors or emails (Fixes issue 5).
To access this functionality; the -x flag can now be called in the
following ways:

-x file
-x file:<file>
-x author:<author name>
-x email:<email>

Just passing -x file will presume that the filtering rule is intended for
a file (just like the previous behavior).

All the filtering is case sensitive (even filtering by email) in order to
not break any regular expressions used. Case-insensitive matching can
instead be easily achieved with the appropriate regular expression.

To get reversed filtering (excluding everything not matched within -x) a
regular expression with the a syntax such as '^(?!<rule>)' can be used.
2013-07-30 06:32:58 +02:00
Adam Waldenberg
af29a59c3c Bumped the version number to 0.3.1. 2013-07-29 12:19:42 +02:00
Adam Waldenberg
b219937abe Fixed compatibility with Python 3 in the gravatar module. 2013-07-28 00:13:45 +02:00
Adam Waldenberg
20d82273ec Generated pie charts in HTML view now handle re-sizing better.
This is accomplished with the use of the flot re-size plugin. Thanks to
this, pie charts no longer have to be set to a fixed size.
2013-07-27 23:48:34 +02:00
Adam Waldenberg
6c4823aa31 Slightly tweaked (and improved) the CSS of the responsibilities module. 2013-07-27 13:56:38 +02:00
Adam Waldenberg
171474a501 Minor authors in the HTML responsibilities view are now collapsed.
This works in the same manner as the other filtering available in the HTML
view. The minor authors of the responsibilities view equal the minor
authors of the blame view.
2013-07-26 03:18:00 +02:00
Adam Waldenberg
67418fa25d Changed the way e-mail addresses are collected when analyzing the git log.
Previously, an email for a specific author was collected whenever some
insertions/deletions were detected in an active or valid extension. This
was introduced with the addition of gravatars.

This had the side-effect that if #author1 committed some rows to a file
with an inactive or non-valid extension and #author2 later moved some of
those rows into an active or valid extension, those rows could still
belong to #author1. Consequently, when associating the author name with
an email in the blame phase, there would not be any stored email for
#author1 and no email would be associated with that author or those blamed
lines.

Emails are now (instead) always stored and associated with an author
regardless of the work or files analyzed.
2013-07-25 23:36:50 +02:00
Adam Waldenberg
353f8daee1 BlameOutput no longer takes an object of a Changes class as argument.
This is unnecessary as there is a get() function inside the changes module
to fetch an object of this class, so we can fetch this directly in
BlameOutput.__init__().
2013-07-25 14:37:19 +02:00
Adam Waldenberg
772cef01d4 Added support for gravatars to the responsibilities module.
In the process, also took the opportunity to improve the HTML output a bit.
2013-07-25 14:32:57 +02:00
Adam Waldenberg
e200fa42f9 Added some missing spaces to the Chinese translation.
There was a mistake at the top of the translation to the help text.
2013-07-25 11:37:02 +02:00
Adam Waldenberg
6b4de5d676 Updated the locales to work with the previously updated error string. 2013-07-25 09:21:23 +02:00
Chris Ring
92ef11fa20 Fix typo in error message.
The error message when using an incompatible version of
Python contains a typo.

Signed-off-by: Chris Ring <chris@ringthis.com>
Reviewed-by: Adam Waldenberg <adam.waldenberg@ejwa.se>
2013-07-25 09:03:03 +02:00
Adam Waldenberg
66b63a6f0e The "-m" flag was being mistaken as "--checkout-missing".
This was because of the use of the "in" operator during processing of the
incoming options and arguments.
2013-07-24 09:06:30 +02:00
Adam Waldenberg
3ed1cf3618 Added the ability to specify size when fetching a gravatar URL. 2013-07-24 08:26:40 +02:00
Adam Waldenberg
329bb45947 Removed a dangling space character in the Chinese translation. 2013-07-23 01:19:37 +02:00
Adam Waldenberg
c69bd515c2 Did some minor tweaks to the strings inside the terminal module. 2013-07-23 01:09:20 +02:00
Adam Waldenberg
9b5e82bc2c Terminal can now fall back to default size under Windows (Fixes issue 12).
Previously; the __get_size_windows__() function could return "None",
whenever the terminal size couldn't be determined; something which broke
the execution.

There was some chance for misbehavior under Linux as well.
2013-07-23 01:08:53 +02:00
Adam Waldenberg
c5aba56928 HTMLEmbedded output was broken in the changes module. 2013-07-22 15:32:26 +02:00
Adam Waldenberg
d513ba530d HTMLEmbedded output was broken in the blame module. 2013-07-22 15:30:10 +02:00
Adam Waldenberg
863d5edce4 Fixed some minor annoyances in the Swedish .po file. 2013-07-22 06:38:18 +02:00
Bill Wang
13cb15f952 Added Chinese translation (Fixes issue 11). 2013-07-22 06:22:35 +02:00
Adam Waldenberg
8e22f0d2ca Fixed broken text output in the changes module. 2013-07-22 05:57:04 +02:00
Adam Waldenberg
662cd3fa63 Fixed some behavior that got broken with the implementation of gravatars.
Previously, gitinspector always tried to merge authors with the same name
(independently of the email). This behavior tends to (for the most part)
help in projects missing a .mailmap file. Often; authors commit under the
same name, but with different emails on different computers (if they for
example have a work email on their office desktop).

Whenever different e-mail addresses are used by an author; gitinspector
will use the last email it finds and will generate a gravatar from that
email address. This behavior was chosen because authors mostly do not tend
to create a gravatar image for their old email accounts (but often have
one in their newer ones).
2013-07-22 05:51:56 +02:00
Adam Waldenberg
35852f9859 Added support for gravatars in the changes, blame and timeline modules.
References to gravatar images are generated with HTML and XML outputs only
as these are the only formats where referencing gravatars makes sense
right now. The HTMLEmbedded format, for example, does not link to any
gravatars as that format prohibits the use of external links.

To accommodate the new images; the width of the generated HTML page has
been slightly increased. However, the HTML page should still fit on a
1280 display.
2013-07-20 11:45:11 +02:00
Adam Waldenberg
d07da3dc69 Bumped the version number to 0.3.0. 2013-07-15 05:33:23 +02:00
Adam Waldenberg
c91b8cc704 Output is now written to stderr when an exception is caught. 2013-07-15 04:48:25 +02:00
Adam Waldenberg
1e43e47f4d Updated (and generated) locale files. 2013-07-15 03:22:07 +02:00
Adam Waldenberg
064a2e11b8 Added InvalidRegExpError in the filtering module.
This is a better solution than simply relying on ValueError and also
helps us to maintain compatibility with all our other exceptions (it gives
us a msg attribute that we can access when catching the error).

Also localized the string for InvalidRegExpError.
2013-07-14 12:19:31 +02:00
Adam Waldenberg
291761e6a4 Exceptions now store messages in self.msg directly.
Previously, they had a msg() method for fetching the error string. This
has now been removed in favor of the directly callable attribute.
2013-07-14 04:57:32 +02:00
Adam Waldenberg
cf63af8819 Fixed some pylint violations in some newly added code. 2013-07-14 04:47:34 +02:00
Adam Waldenberg
adf6ee412f -x and --exclude options now clear the filtering rules when first found.
This behavior is preferred in order for us to be able to override any
exclude filter set via git-config.
2013-07-14 04:29:00 +02:00
Adam Waldenberg
3a34be0d06 Added missing "--checkout-missing" long option to gitinspector module. 2013-07-14 04:15:41 +02:00
Adam Waldenberg
4fbcb48127 Rewrote git-config support once again.
It was still presuming that we were using optparse.
2013-07-14 04:15:10 +02:00
Adam Waldenberg
b28d86d1f2 Fixed a long-standing bug with exceptions not being able to handle unicode.
This was fixed by storing the exception string manually inside each
exception class. The error message is now stored in exception.msg instead
of relying on __str__(). It seems the normal behavior (by printing exceptions
directly) is broken in Python 2. It *does* work in Python 3, but this is
because it always handles everything as unicode.
2013-07-14 03:15:14 +02:00
Adam Waldenberg
5c9335088a Command-line arguments are now always converted to UTF-8 before use. 2013-07-14 03:10:00 +02:00
Adam Waldenberg
7f0e2b6fe8 Changed the argument parsing back to using getopt!
The support for optional boolean arguments is the same; but uses
getopt instead of optparse.

The whole adventure with optparse was a giant waste of time and just
forced us to monkey-patch optparse with some very ugly solutions in order
to make it do what we wanted; thus it was better to switch back to the
more low-level getopt module.

To accomplish this; a optval.gnu_getopt() function was added that is a
duplicate of the original getopt.gnu_getopt function but with support for
optional arguments.

A long option which accepts an optional argument is denoted with
arg:default_value in the long_options string.

In the end, this solution feels much better than the one with optparse.
2013-07-14 00:07:36 +02:00
Adam Waldenberg
c073e32dbe Hacked optparse (yet again) to force it to play nice with unicode flags.
Previously, whenever a flag had unicode characters in it; it would all
completely blow up.
2013-07-12 03:36:03 +02:00
Adam Waldenberg
f4b10ce15f Moved unicode function declaration to a compatibility module.
This is used (as the name suggests) for compatibility between Python 2 and
Python 3.
2013-07-12 03:33:13 +02:00
Adam Waldenberg
8edd72a609 gitinspector now exits if it fails to change directory to the repo root. 2013-07-10 16:58:06 +02:00
Adam Waldenberg
84bb7bed2d Removed a pylint violation in the localization module. 2013-07-10 16:45:46 +02:00
Adam Waldenberg
aeb55c5a3e Fixed a potential encoding issue when printing exception messages. 2013-07-10 16:45:12 +02:00
Adam Waldenberg
2df9a31b60 gitinspector now finds the absolute path of the git directory.
If gitinspector was not executed standing in the root directory of the
git repository (or with a git root specified at the command line),
"git ls-tree" would not find all files properly.
2013-07-10 14:23:11 +02:00
Adam Waldenberg
9e39bf8ed2 Added the new localization strings to the pot file.
In the process, the new strings were also translated to Swedish. To
properly handle localized string constants, a new function "N_()" was
added which can be supplied to xgettext when collecting strings.
2013-07-10 13:55:23 +02:00
Adam Waldenberg
ccd995a02b Improved localization in the optval module. 2013-07-10 05:25:57 +02:00
Adam Waldenberg
3b82acdfa1 Added a --localize-output flag.
The default behaviour is now not to localize the output, only the help
text and error messages (all the user interaction).

The way localized messages are fetched in the modules has been modified
as well; to allow for the ability to enable and disable the localization.
2013-07-10 05:24:18 +02:00
Adam Waldenberg
109fefb978 Fixed some small mistakes in relation to handling of git-config settings. 2013-07-10 03:32:29 +02:00
Adam Waldenberg
a05403df60 Added localization support to optparse error messages.
The optparse module does not seem to support this by default. The solution
is not very pretty, but it works.
2013-07-10 03:11:15 +02:00
Adam Waldenberg
0d2bf9b0a8 Implemented optional boolean arguments to some command-line options.
Just like in many GNU tools, it is now possible to pass an optional
boolean to some of the flags of gitinspector in the form;

--flag[=BOOL]

This gives us the ability to override options set via git-config.
For example; say we did the following:

git-config --global inspector.timeline true

We could then override this setting when running gitinspector by supplying:

./gitinspector.py --timeline=false

Implementing this was not a trivial task, as no command-line parser in
Python supports this by default (getopt, optparse, argparse). In order to
properly handle optional boolean arguments; some clever patching had to
be done to the command-line in combination with a callback function that
can handle boolean strings. To maintain compatibility with Python 2.6,
this was implemented using optparse (instead of argparse).
2013-07-09 12:40:59 +02:00
Adam Waldenberg
663493fd41 Localization module is now initialized only once (instead of twice).
This removes an unnecessary initialization and also fixes the behavior
under Windows which was broken because of the second initialization.
2013-07-04 10:55:54 +02:00
Adam Waldenberg
942836cc1c There was a mixup in the metrics module (wrong ordering of return values). 2013-07-04 10:07:41 +02:00
Adam Waldenberg
bb72cc8f02 Added a handle_comment_block() function in the comment module.
This function moves most of the logic of handling comments into the
comment module itself, thus avoiding duplicated code and allowing for
a cleaner solution.
2013-07-02 23:03:09 +02:00
Adam Waldenberg
f20b826d2d Added long option (--weeks) to the -w option.
This makes it clearer that it is supported in conjunction with git-config
as well.
2013-07-02 07:45:56 +02:00
Adam Waldenberg
017f63e98a The translation files are now found regardless of the current directory.
It was previously only working if gitinspector was executed from the base
directory.
2013-07-02 07:33:46 +02:00
Adam Waldenberg
f9808c609b Import of localization module failed when running setup.py under Python 3. 2013-07-01 03:17:35 +02:00
Adam Waldenberg
021c1e479e git-config settings were not being fetched when a git directory was set.
It was only working if gitinspector was invoked inside a git directory.
2013-07-01 01:38:19 +02:00
Adam Waldenberg
ce98a2ed70 Fixed a syntax error in the config module. 2013-07-01 00:34:28 +02:00
Adam Waldenberg
ac5e38c8f0 The handling of output format was wrong in the config module. 2013-07-01 00:33:58 +02:00
Adam Waldenberg
84a7fd1945 Added support for --exclude to the git-config support.
In contrast to the -x/--exclude option that can be given on the command
line, --exclude can not be set multiple times when used with git-config.

Luckily, the same behavior can be attained by using the pipe ("|")
character. Ie, specifying the following on the command line:

-x "hello.txt" -x "goodbye.txt"

is the same thing as:

-x "hello.txt|goodbye.txt"

when sent to git-config or the command line.
2013-07-01 00:26:06 +02:00
Adam Waldenberg
bfdac450c4 Regular expression handling now throws an error on an invalid regex.
Previously, it was giving of an incomprehensible error from the "re"
module in Python.
2013-07-01 00:15:42 +02:00
Adam Waldenberg
dcb4cedf27 Fixed some reported pylint violations. 2013-07-01 00:11:34 +02:00
Adam Waldenberg
aec58ac499 Filtering and the -x/--exclude option now support regular expressions.
Thanks to this change; we can support the --exclude option in conjunction
with git-config.
2013-06-30 23:58:49 +02:00
Adam Waldenberg
8bd761f872 Settings for gitinspector can now be set using git-config.
All long options that can be set in gitinspector (with the exception of
--version and --help) can be configured using git-config. This is only the
first step towards the support of git-config. The reading of the command
line also needs to be changed to support overriding settings from
git-config before this is fully usable. Also; support for --exclude is
not yet included.

If we wanted to enable the timeline across all repositories when running
gitinspector we could do;

git-config --global inspector.timeline true

For local settings (per repository); the --local option can of course be
used when calling git-config.
2013-06-30 20:58:30 +02:00
Adam Waldenberg
e15ee100a2 Removed the "€" character from the tablesorter plugin (Fixes issue 6).
The currency sorter of the plugin supports €, $ and £. Unfortunately,
the "€" (euro) sign can cause problems with certain character maps,
something which means we might as well remove support for it as
gitinspector is not using any currency sorting anyway.
2013-06-30 18:34:45 +02:00
Adam Waldenberg
16701a4d51 Added support for comments in LaTex (.tex) files (Fixes issue 8).
Even though it is supported, LaTex is not part of the default file
extensions used during analysis. To include LaTex files in the statistical
analysis, the extension (.tex) needs to be supplied to gitinspector using
the -f flag.
2013-06-30 01:53:08 +02:00
Adam Waldenberg
aec012b877 The HTML output now shows the number of hidden entries in tables. 2013-06-26 04:30:57 +02:00
Adam Waldenberg
cd1c1f0c65 gitinspector now tries to get around any invalid locale.
Whenever a locale is found that is simply wrong; gitinspector will try to
get the default strings from gettext and try to execute.
2013-06-26 03:51:43 +02:00
Adam Waldenberg
f030147206 Added missing localization strings to/in the timeline module. 2013-06-26 03:24:31 +02:00
Adam Waldenberg
0d8c3534dc There wasn't always enough room for the Swedish strings in the text output. 2013-06-26 03:23:58 +02:00
Adam Waldenberg
c19680dc39 Changed the default format back to "text" instead of "htmlembedded". 2013-06-26 02:42:41 +02:00
Adam Waldenberg
45429d9a35 Added a "htmlembedded" output format.
This format behaves the same as the old "html" output. Consequently, the
ordinary "html" output now hot-links the JQuery script to
ajax.googleapis.com. This results in a generated file with roughly half
the stitching code compared to previously.
2013-06-26 02:36:13 +02:00
Adam Waldenberg
58fbd0f3e1 Added more space in the help text for listing available output formats.
As a consequence; the locales also had to be updated.
2013-06-26 02:32:34 +02:00
Adam Waldenberg
4f1adb83f6 Added the binary for the Swedish translation. 2013-06-26 02:10:48 +02:00
Adam Waldenberg
a54be45d23 Updated the translation files to include the new localization. 2013-06-26 01:29:37 +02:00
Adam Waldenberg
bfc266b22b Removed a dangling "+" character from the format module. 2013-06-26 01:19:47 +02:00
Adam Waldenberg
a952921c32 Added localization support to the html.header file.
As of this commit; the localization of gitinspector is pretty much
complete.
2013-06-26 00:37:55 +02:00
Adam Waldenberg
a498603a50 Fixed some small mistakes that occurred during localization. 2013-06-26 00:35:43 +02:00
Adam Waldenberg
178356563b Added translation files.
For now the pot (template file) has been committed and can be used when
adding new languages.

Also added a Swedish translation.
2013-06-25 16:48:03 +02:00
Adam Waldenberg
f20c3c1895 Made some changes to ensure compatibility in Python 2 with gettext.
The gettext.install() functions supplies a way to force it to return
unicode which helps with compatibility between Python 2 & 3. To make it
work properly when merging those returned string with strings in the
different modules of gitinspector we also had to do some changes to make
sure all string literals are in unicode.
2013-06-25 16:37:18 +02:00
Adam Waldenberg
9c0633f8ad Added gettext (GNU) localization support. 2013-06-25 14:38:40 +02:00
Adam Waldenberg
2bfb3cfa67 Added hovering support to the pie charts in the HTML output.
The name of the author is now highlighted in the table whenever a pie
piece in the pie chart is hovered over. Currently, it does not work the
other way around (because of a limitation in the flot library).
2013-06-18 03:09:59 +02:00
Adam Waldenberg
6b2f26ed04 Updated the flot archive to version 0.8.1.
This archive also includes a new version of JQuery (1.8.3).
2013-06-17 08:51:27 +02:00
Adam Waldenberg
fe71a2923a Removed dangling semicolon from the blame module. 2013-06-17 07:49:53 +02:00
Adam Waldenberg
8a386225fd Added "ignore" parameter to unicode_escape decodings (Fixes issue 4). 2013-06-17 07:47:47 +02:00
Adam Waldenberg
018647d7d8 Literals in the blame module are now always in unicode.
Without this fix, there is a potential for some UnicodeEncodeErrors when
using non-unicode literals with string.format().
2013-06-14 04:20:09 +02:00
Adam Waldenberg
73c4363f9d Added a setup.py for use with setuptools or Distribute.
This particular setup script has been tested with Distribute 0.6.24.
For some strange reason, the generated entry-point script does not work
with Python 3.3 - resulting in import errors. I can only assume this is
a bug in this version of the Distribute package when it's running together
with Python 3.3.
2013-06-14 03:16:57 +02:00
Adam Waldenberg
f36b82170f File structure rearranged to be more compatible with setuptools/Distribute.
The fact is, gitinspector is now stable enough to inlude support for python
distribution and setup. This is the first step towards that transition.
2013-06-14 03:16:30 +02:00