From e8648a51c26e9ecd38e2139005e319e300c1196b Mon Sep 17 00:00:00 2001 From: Adam Waldenberg Date: Sun, 22 Feb 2015 11:22:39 +0100 Subject: [PATCH] Added documentation written in AsciiDoc (Fixes issue 45). Using the AsciiDoc file, documentation was generated in man (troff), PDF and HTML formats. --- docs/docbook-xsl.css | 329 +++++++++++++++++++++++++++++++++++++++++ docs/gitinspector.1 | 291 ++++++++++++++++++++++++++++++++++++ docs/gitinspector.html | 99 +++++++++++++ docs/gitinspector.pdf | Bin 0 -> 65348 bytes docs/gitinspector.txt | 155 +++++++++++++++++++ 5 files changed, 874 insertions(+) create mode 100644 docs/docbook-xsl.css create mode 100644 docs/gitinspector.1 create mode 100644 docs/gitinspector.html create mode 100644 docs/gitinspector.pdf create mode 100644 docs/gitinspector.txt diff --git a/docs/docbook-xsl.css b/docs/docbook-xsl.css new file mode 100644 index 0000000..ee9ca46 --- /dev/null +++ b/docs/docbook-xsl.css @@ -0,0 +1,329 @@ +/* + CSS stylesheet for XHTML produced by DocBook XSL stylesheets. +*/ + +body { + font-family: Georgia,serif; +} + +code, pre { + font-family: "Courier New", Courier, monospace; +} + +span.strong { + font-weight: bold; +} + +body blockquote { + margin-top: .75em; + line-height: 1.5; + margin-bottom: .75em; +} + +html body { + margin: 1em 5% 1em 5%; + line-height: 1.2; +} + +body div { + margin: 0; +} + +h1, h2, h3, h4, h5, h6 +{ + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; +} + +div.toc p:first-child, +div.list-of-figures p:first-child, +div.list-of-tables p:first-child, +div.list-of-examples p:first-child, +div.example p.title, +div.sidebar p.title +{ + font-weight: bold; + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; + margin-bottom: 0.2em; +} + +body h1 { + margin: .0em 0 0 -4%; + line-height: 1.3; + border-bottom: 2px solid silver; +} + +body h2 { + margin: 0.5em 0 0 -4%; + line-height: 1.3; + border-bottom: 2px solid silver; +} + +body h3 { + margin: .8em 0 0 -3%; + line-height: 1.3; +} + +body h4 { + margin: .8em 0 0 -3%; + line-height: 1.3; +} + +body h5 { + margin: .8em 0 0 -2%; + line-height: 1.3; +} + +body h6 { + margin: .8em 0 0 -1%; + line-height: 1.3; +} + +body hr { + border: none; /* Broken on IE6 */ +} +div.footnotes hr { + border: 1px solid silver; +} + +div.navheader th, div.navheader td, div.navfooter td { + font-family: Arial,Helvetica,sans-serif; + font-size: 0.9em; + font-weight: bold; + color: #527bbd; +} +div.navheader img, div.navfooter img { + border-style: none; +} +div.navheader a, div.navfooter a { + font-weight: normal; +} +div.navfooter hr { + border: 1px solid silver; +} + +body td { + line-height: 1.2 +} + +body th { + line-height: 1.2; +} + +ol { + line-height: 1.2; +} + +ul, body dir, body menu { + line-height: 1.2; +} + +html { + margin: 0; + padding: 0; +} + +body h1, body h2, body h3, body h4, body h5, body h6 { + margin-left: 0 +} + +body pre { + margin: 0.5em 10% 0.5em 1em; + line-height: 1.0; + color: navy; +} + +tt.literal, code.literal { + color: navy; +} + +.programlisting, .screen { + border: 1px solid silver; + background: #f4f4f4; + margin: 0.5em 10% 0.5em 0; + padding: 0.5em 1em; +} + +div.sidebar { + background: #ffffee; + margin: 1.0em 10% 0.5em 0; + padding: 0.5em 1em; + border: 1px solid silver; +} +div.sidebar * { padding: 0; } +div.sidebar div { margin: 0; } +div.sidebar p.title { + margin-top: 0.5em; + margin-bottom: 0.2em; +} + +div.bibliomixed { + margin: 0.5em 5% 0.5em 1em; +} + +div.glossary dt { + font-weight: bold; +} +div.glossary dd p { + margin-top: 0.2em; +} + +dl { + margin: .8em 0; + line-height: 1.2; +} + +dt { + margin-top: 0.5em; +} + +dt span.term { + font-style: normal; + color: navy; +} + +div.variablelist dd p { + margin-top: 0; +} + +div.itemizedlist li, div.orderedlist li { + margin-left: -0.8em; + margin-top: 0.5em; +} + +ul, ol { + list-style-position: outside; +} + +div.sidebar ul, div.sidebar ol { + margin-left: 2.8em; +} + +div.itemizedlist p.title, +div.orderedlist p.title, +div.variablelist p.title +{ + margin-bottom: -0.8em; +} + +div.revhistory table { + border-collapse: collapse; + border: none; +} +div.revhistory th { + border: none; + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; +} +div.revhistory td { + border: 1px solid silver; +} + +/* Keep TOC and index lines close together. */ +div.toc dl, div.toc dt, +div.list-of-figures dl, div.list-of-figures dt, +div.list-of-tables dl, div.list-of-tables dt, +div.indexdiv dl, div.indexdiv dt +{ + line-height: normal; + margin-top: 0; + margin-bottom: 0; +} + +/* + Table styling does not work because of overriding attributes in + generated HTML. +*/ +div.table table, +div.informaltable table +{ + margin-left: 0; + margin-right: 5%; + margin-bottom: 0.8em; +} +div.informaltable table +{ + margin-top: 0.4em +} +div.table thead, +div.table tfoot, +div.table tbody, +div.informaltable thead, +div.informaltable tfoot, +div.informaltable tbody +{ + /* No effect in IE6. */ + border-top: 3px solid #527bbd; + border-bottom: 3px solid #527bbd; +} +div.table thead, div.table tfoot, +div.informaltable thead, div.informaltable tfoot +{ + font-weight: bold; +} + +div.mediaobject img { + margin-bottom: 0.8em; +} +div.figure p.title, +div.table p.title +{ + margin-top: 1em; + margin-bottom: 0.4em; +} + +div.calloutlist p +{ + margin-top: 0em; + margin-bottom: 0.4em; +} + +a img { + border-style: none; +} + +@media print { + div.navheader, div.navfooter { display: none; } +} + +span.aqua { color: aqua; } +span.black { color: black; } +span.blue { color: blue; } +span.fuchsia { color: fuchsia; } +span.gray { color: gray; } +span.green { color: green; } +span.lime { color: lime; } +span.maroon { color: maroon; } +span.navy { color: navy; } +span.olive { color: olive; } +span.purple { color: purple; } +span.red { color: red; } +span.silver { color: silver; } +span.teal { color: teal; } +span.white { color: white; } +span.yellow { color: yellow; } + +span.aqua-background { background: aqua; } +span.black-background { background: black; } +span.blue-background { background: blue; } +span.fuchsia-background { background: fuchsia; } +span.gray-background { background: gray; } +span.green-background { background: green; } +span.lime-background { background: lime; } +span.maroon-background { background: maroon; } +span.navy-background { background: navy; } +span.olive-background { background: olive; } +span.purple-background { background: purple; } +span.red-background { background: red; } +span.silver-background { background: silver; } +span.teal-background { background: teal; } +span.white-background { background: white; } +span.yellow-background { background: yellow; } + +span.big { font-size: 2em; } +span.small { font-size: 0.6em; } + +span.underline { text-decoration: underline; } +span.overline { text-decoration: overline; } +span.line-through { text-decoration: line-through; } diff --git a/docs/gitinspector.1 b/docs/gitinspector.1 new file mode 100644 index 0000000..2b9c5e9 --- /dev/null +++ b/docs/gitinspector.1 @@ -0,0 +1,291 @@ +'\" t +.\" Title: gitinspector +.\" Author: [see the "AUTHOR" section] +.\" Generator: DocBook XSL Stylesheets v1.78.1 +.\" Date: 02/22/2015 +.\" Manual: The gitinspector Manual +.\" Source: gitinspector 0.4.0 +.\" Language: English +.\" +.TH "GITINSPECTOR" "1" "02/22/2015" "gitinspector 0\&.4\&.0" "The gitinspector Manual" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gitinspector \- statistical analysis tool for git repositories +.SH "SYNOPSIS" +.sp +\fBgitinspector\fR [OPTION]\&... [REPOSITORY] +.SH "DESCRIPTION" +.sp +Analyze and gather statistics about a git repository\&. The defaut analysis shows general statistics per author, which can be complemented with a timeline analysis that shows the workload and activity of each author\&. Under normal operation, gitinspector filters the results to only show statistics about a number of given extensions and by default only includes source files in the statistical analysis\&. +.sp +Several output formats are supported, including plain text, HTML and XML\&. +.SH "OPTIONS" +.sp +List information about the repository in REPOSITORY\&. If no repository is specified, the current directory is used\&. If multiple repositories are given, information will be fetched from the last repository specified\&. +.sp +Mandatory arguments to long options are mandatory for short options too\&. Boolean arguments can only be given to long options\&. +.PP +\fB\-f, \-\-file\-types\fR=EXTENSIONS +.RS 4 +A comma separated list of file extensions to include when computing statistics\&. The default extensions used are: java,c,cc,cpp,h,hh,hpp,py,glsl,rb,js,sql +.RE +.PP +\fB\-F, \-\-format\fR=FORMAT +.RS 4 +Defines in which format output should be generated; the default format is +\fItext\fR +and the available formats are: html,htmlembedded,text,xml (see +\fBOUTPUT FORMATS\fR) +.RE +.PP +\fB\-\-grading\fR[=BOOL] +.RS 4 +Show statistics and information in a way that is formatted for grading of student projects; this is the same as supplying the options +\fB\-HlmrTw\fR +.RE +.PP +\fB\-H, \-\-hard\fR[=BOOL] +.RS 4 +Track rows and look for duplicates harder; this can be quite slow with big repositories +.RE +.PP +\fB\-l, \-\-list\-file\-types\fR[=BOOL] +.RS 4 +List all the file extensions available in the current branch of the repository +.RE +.PP +\fB\-L, \-\-localize\-output\fR[=BOOL] +.RS 4 +Localize the generated output to the selected system language if a translation is available +.RE +.PP +\fB\-m, \-\-metrics\fR[=BOOL] +.RS 4 +Include checks for certain metrics during the analysis of commits +.RE +.PP +\fB\-r \-\-responsibilities\fR[=BOOL] +.RS 4 +Show which files the different authors seem most responsible for +.RE +.PP +\fB\-\-since\fR=DATE +.RS 4 +Only show statistics for commits more recent than a specific date +.RE +.PP +\fB\-T, \-\-timeline\fR[=BOOL] +.RS 4 +Show commit timeline, including author names +.RE +.PP +\fB\-\-until\fR=DATE +.RS 4 +Only show statistics for commits older than a specific date +.RE +.PP +\fB\-w, \-\-weeks\fR[=BOOL] +.RS 4 +Show all statistical information in weeks instead of in months +.RE +.PP +\fB\-x, \-\-exclude\fR=PATTERN +.RS 4 +An exclusion pattern describing the file paths, revisions, author names or author emails that should be excluded from the statistics; can be specified multiple times (see +\fBFILTERING\fR) +.RE +.PP +\fB\-h, \-\-help\fR +.RS 4 +Display help and exit +.RE +.PP +\fB\-\-version\fR +.RS 4 +Output version information and exit +.RE +.SH "OUTPUT FORMATS" +.sp +There are support for multiple output formats in gitinspector\&. They can be selected using the \fB\-F\fR/\fB\-\-format\fR flags when running the main gitinspector script\&. +.PP +\fBtext (plain text)\fR +.RS 4 +Plain text with some very simple ANSI formatting, suitable for console output\&. This is the format chosen by default by gitinspector\&. +.RE +.PP +\fBhtml\fR +.RS 4 +HTML with external links\&. The generated HTML page links to some external resources; such as the JavaScript library JQuery\&. It requires an active internet connection to properly function\&. This output format will most likely also link to additional external resources in the future\&. +.RE +.PP +\fBhtmlembedded\fR +.RS 4 +HTML with no external links\&. Similar to the HTML output format, but requires no active internet connection\&. As a consequence; the generated pages are bigger (as certain scripts have to be embedded into the generated output)\&. +.RE +.PP +\fBxml\fR +.RS 4 +XML suitable for machine consumption\&. If you want to parse the output generated by gitinspector in a script or application of your own; this is the format you should choose\&. +.RE +.SH "FILTERING" +.sp +gitinspector offers several different ways of filtering out unwanted information from the generated statistics: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBgitinspector \-x myfile\fR, filter out and exclude statistics from all files (or paths) with the string "myfile" +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBgitinspector \-x file:myfile\fR, filter out and exclude statistics from all files (or paths) with the string "myfile" +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBgitinspector \-x author:John\fR, filter out and exclude statistics from all authors containing the string "John" +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBgitinspector \-x email:@gmail\&.com\fR, filter out and exclude statistics from all authors with a gmail account +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBgitinspector \-x revision:8755fb33\fR, filter out and exclude statistics from all revisions containing the hash "8755fb33" +.RE +.sp +The gitinspector command also lets you add multiple filtering rules by simply specifying the \-x options several times or by separating each filtering rule with a comma; +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBgitinspector \-x author:John \-x email:@gmail\&.com\fR +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBgitinspector \-x author:John,email:@gmail\&.com\fR +.RE +.sp +Sometimes, sub\-string matching (as described above) is simply not enough\&. Therefore, gitinspector let\(cqs you specify regular expressions as filtering rules\&. This makes filtering much more flexible: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBgitinspector \-x "author:\e^(?!(John Smith))"\fR, only show statistics from author "John Smith" +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBgitinspector \-x "author:\e^(?!([A\-C]))"\fR, only show statistics from authors starting with the letters A/B/C +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +\fBgitinspector \-x "email:\&.com$"\fR, filter out statistics from all email addresses ending with "\&.com" +.RE +.SH "USING GIT TO CONFIGURE GITINSPECTOR" +.sp +Options in gitinspector can be set using \fBgit config\fR\&. Consequently, it is possible to configure gitinspector behavior globally (in all git repositories) or locally (in a specific git repository)\&. It also means that settings will be permanently stored\&. All the long options that can be given to gitinspector can also be configure via git config (and take the same arguments)\&. +.sp +To configure how gitinspector should behave in all git repositories, execute the following git command: +.sp +\fBgit config \-\-global inspector\&.option setting\fR +.sp +To configure how gitinspector should behave in a specific git repository, execute the following git command (with the current directory standing inside the repository in question): +.sp +\fBgit config inspector\&.option setting\fR +.SH "AUTHOR" +.sp +Originally written by Adam Waldenberg\&. +.SH "REPORTING BUGS" +.sp +Report gitinspector bugs to gitinspector@ejwa\&.se +.sp +The gitinspector project page: http://gitinspector\&.googlecode\&.com +.sp +If you encounter problems, be sure to read the FAQ first: http://code\&.google\&.com/p/gitinspector/wiki/FAQ +.SH "COPYRIGHT" +.sp +Copyright \(co 2012\-2015 Ejwa Software\&. All rights reserved\&. License GPLv3+: GNU GPL version 3 or later http://gnu\&.org/licenses/gpl\&.html\&. This is free software: you are free to change and redistribute it\&. There is NO WARRANTY, to the extent permitted by law\&. +.SH "SEE ALSO" +.sp +\fBgit\fR(1) diff --git a/docs/gitinspector.html b/docs/gitinspector.html new file mode 100644 index 0000000..1410f66 --- /dev/null +++ b/docs/gitinspector.html @@ -0,0 +1,99 @@ + +gitinspector

Name

gitinspector — statistical analysis tool for git repositories

Synopsis

gitinspector [OPTION]… [REPOSITORY]

DESCRIPTION

Analyze and gather statistics about a git repository. The defaut analysis shows general statistics per author, which can be complemented with a timeline analysis that shows the workload and activity of each author. Under normal operation, gitinspector filters the results to only show statistics about a number of given extensions and by default only includes source files in the statistical analysis.

Several output formats are supported, including plain text, HTML and XML.

OPTIONS

List information about the repository in REPOSITORY. If no repository is specified, the current directory is used. If multiple repositories are given, information will be fetched from the last repository specified.

Mandatory arguments to long options are mandatory for short options too. Boolean arguments can only be given to long options.

+-f, --file-types=EXTENSIONS +
+ A comma separated list of file extensions to include when computing statistics. The default extensions used are: java,c,cc,cpp,h,hh,hpp,py,glsl,rb,js,sql +
+-F, --format=FORMAT +
+ Defines in which format output should be generated; the default format is text and the available formats are: html,htmlembedded,text,xml (see OUTPUT FORMATS) +
+--grading[=BOOL] +
+ Show statistics and information in a way that is formatted for grading of student projects; this is the same as supplying the options -HlmrTw +
+-H, --hard[=BOOL] +
+ Track rows and look for duplicates harder; this can be quite slow with big repositories +
+-l, --list-file-types[=BOOL] +
+ List all the file extensions available in the current branch of the repository +
+-L, --localize-output[=BOOL] +
+ Localize the generated output to the selected system language if a translation is available +
+-m, --metrics[=BOOL] +
+ Include checks for certain metrics during the analysis of commits +
+-r --responsibilities[=BOOL] +
+ Show which files the different authors seem most responsible for +
+--since=DATE +
+ Only show statistics for commits more recent than a specific date +
+-T, --timeline[=BOOL] +
+ Show commit timeline, including author names +
+--until=DATE +
+ Only show statistics for commits older than a specific date +
+-w, --weeks[=BOOL] +
+ Show all statistical information in weeks instead of in months +
+-x, --exclude=PATTERN +
+ An exclusion pattern describing the file paths, revisions, author names or author emails that should be excluded from the statistics; can be specified multiple times (see FILTERING) +
+-h, --help +
+ Display help and exit +
+--version +
+ Output version information and exit +

OUTPUT FORMATS

There are support for multiple output formats in gitinspector. They can be selected using the -F/--format flags when running the main gitinspector script.

+text (plain text) +
+ Plain text with some very simple ANSI formatting, suitable for console output. This is the format chosen by default by gitinspector. +
+html +
+ HTML with external links. The generated HTML page links to some external resources; such as the JavaScript library JQuery. It requires an active internet connection to properly function. This output format will most likely also link to additional external resources in the future. +
+htmlembedded +
+ HTML with no external links. Similar to the HTML output format, but requires no active internet connection. As a consequence; the generated pages are bigger (as certain scripts have to be embedded into the generated output). +
+xml +
+ XML suitable for machine consumption. If you want to parse the output generated by gitinspector in a script or application of your own; this is the format you should choose. +

FILTERING

gitinspector offers several different ways of filtering out unwanted information from the generated statistics:

  • +gitinspector -x myfile, filter out and exclude statistics from all files (or paths) with the string "myfile" +
  • +gitinspector -x file:myfile, filter out and exclude statistics from all files (or paths) with the string "myfile" +
  • +gitinspector -x author:John, filter out and exclude statistics from all authors containing the string "John" +
  • +gitinspector -x email:@gmail.com, filter out and exclude statistics from all authors with a gmail account +
  • +gitinspector -x revision:8755fb33, filter out and exclude statistics from all revisions containing the hash "8755fb33" +

The gitinspector command also lets you add multiple filtering rules by simply specifying the -x options several times or by separating each filtering rule with a comma;

  • +gitinspector -x author:John -x email:@gmail.com +
  • +gitinspector -x author:John,email:@gmail.com +

Sometimes, sub-string matching (as described above) is simply not enough. Therefore, gitinspector let’s you specify regular expressions as filtering rules. This makes filtering much more flexible:

  • +gitinspector -x "author:\^(?!(John Smith))", only show statistics from author "John Smith" +
  • +gitinspector -x "author:\^(?!([A-C]))", only show statistics from authors starting with the letters A/B/C +
  • +gitinspector -x "email:.com$", filter out statistics from all email addresses ending with ".com" +

USING GIT TO CONFIGURE GITINSPECTOR

Options in gitinspector can be set using git config. Consequently, it is possible to configure gitinspector behavior globally (in all git repositories) or locally (in a specific git repository). It also means that settings will be permanently stored. All the long options that can be given to gitinspector can also be configure via git config (and take the same arguments).

To configure how gitinspector should behave in all git repositories, execute the following git command:

git config --global inspector.option setting

To configure how gitinspector should behave in a specific git repository, execute the following git command (with the current directory standing inside the repository in question):

git config inspector.option setting

AUTHOR

Originally written by Adam Waldenberg.

REPORTING BUGS

Report gitinspector bugs to gitinspector@ejwa.se

The gitinspector project page: http://gitinspector.googlecode.com

If you encounter problems, be sure to read the FAQ first: http://code.google.com/p/gitinspector/wiki/FAQ

COPYRIGHT

Copyright © 2012-2015 Ejwa Software. All rights reserved. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html. +This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

SEE ALSO

git(1)

\ No newline at end of file diff --git a/docs/gitinspector.pdf b/docs/gitinspector.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5a9280631386b478401aee6fa5bac242bc9a6f66 GIT binary patch literal 65348 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 Iycpd70#c$G5C8xG literal 0 HcmV?d00001 diff --git a/docs/gitinspector.txt b/docs/gitinspector.txt new file mode 100644 index 0000000..f49da80 --- /dev/null +++ b/docs/gitinspector.txt @@ -0,0 +1,155 @@ +// a2x -v gitinspector.txt; a2x -v -f manpage gitinspector.txt; a2x -v -f xhtml gitinspector.txt + +GITINSPECTOR(1) +=============== +:doctype: manpage +:man version: 0.4.0 +:man source: gitinspector +:man manual: The gitinspector Manual + + +NAME +---- +gitinspector - statistical analysis tool for git repositories + + +SYNOPSIS +-------- +*gitinspector* [OPTION]... [REPOSITORY] + + +DESCRIPTION +----------- +Analyze and gather statistics about a git repository. The defaut analysis shows general statistics per author, which can be complemented with a timeline analysis that shows the workload and activity of each author. Under normal operation, gitinspector filters the results to only show statistics about a number of given extensions and by default only includes source files in the statistical analysis. + +Several output formats are supported, including plain text, HTML and XML. + + +OPTIONS +------- +List information about the repository in REPOSITORY. If no repository is specified, the current directory is used. If multiple repositories are given, information will be fetched from the last repository specified. + +Mandatory arguments to long options are mandatory for short options too. Boolean arguments can only be given to long options. + +*-f, --file-types*=EXTENSIONS:: + A comma separated list of file extensions to include when computing statistics. The default extensions used are: java,c,cc,cpp,h,hh,hpp,py,glsl,rb,js,sql + +*-F, --format*=FORMAT:: + Defines in which format output should be generated; the default format is 'text' and the available formats are: html,htmlembedded,text,xml (see <>) + +*--grading*[=BOOL]:: + Show statistics and information in a way that is formatted for grading of student projects; this is the same as supplying the options *-HlmrTw* + +*-H, --hard*[=BOOL]:: + Track rows and look for duplicates harder; this can be quite slow with big repositories + +*-l, --list-file-types*[=BOOL]:: + List all the file extensions available in the current branch of the repository + +*-L, --localize-output*[=BOOL]:: + Localize the generated output to the selected system language if a translation is available + +*-m, --metrics*[=BOOL]:: + Include checks for certain metrics during the analysis of commits + +*-r --responsibilities*[=BOOL]:: + Show which files the different authors seem most responsible for + +*--since*=DATE:: + Only show statistics for commits more recent than a specific date + +*-T, --timeline*[=BOOL]:: + Show commit timeline, including author names + +*--until*=DATE:: + Only show statistics for commits older than a specific date + +*-w, --weeks*[=BOOL]:: + Show all statistical information in weeks instead of in months + +*-x, --exclude*=PATTERN:: + An exclusion pattern describing the file paths, revisions, author names or author emails that should be excluded from the statistics; can be specified multiple times (see <>) + +*-h, --help*:: + Display help and exit + +*--version*:: + Output version information and exit + + +[[X1]] +OUTPUT FORMATS +-------------- +There are support for multiple output formats in gitinspector. They can be selected using the *-F*/*--format* flags when running the main gitinspector script. + +*text (plain text)*:: + Plain text with some very simple ANSI formatting, suitable for console output. This is the format chosen by default by gitinspector. + +*html*:: + HTML with external links. The generated HTML page links to some external resources; such as the JavaScript library JQuery. It requires an active internet connection to properly function. This output format will most likely also link to additional external resources in the future. + +*htmlembedded*:: + HTML with no external links. Similar to the HTML output format, but requires no active internet connection. As a consequence; the generated pages are bigger (as certain scripts have to be embedded into the generated output). + +*xml*:: + XML suitable for machine consumption. If you want to parse the output generated by gitinspector in a script or application of your own; this is the format you should choose. + + +[[X2]] +FILTERING +--------- +gitinspector offers several different ways of filtering out unwanted information from the generated statistics: + +* *gitinspector -x myfile*, filter out and exclude statistics from all files (or paths) with the string "myfile" +* *gitinspector -x file:myfile*, filter out and exclude statistics from all files (or paths) with the string "myfile" +* *gitinspector -x author:John*, filter out and exclude statistics from all authors containing the string "John" +* *gitinspector -x email:@gmail.com*, filter out and exclude statistics from all authors with a gmail account +* *gitinspector -x revision:8755fb33*, filter out and exclude statistics from all revisions containing the hash "8755fb33" + +The gitinspector command also lets you add multiple filtering rules by simply specifying the -x options several times or by separating each filtering rule with a comma; + +* *gitinspector -x author:John -x email:@gmail.com* +* *gitinspector -x author:John,email:@gmail.com* + +Sometimes, sub-string matching (as described above) is simply not enough. Therefore, gitinspector let's you specify regular expressions as filtering rules. This makes filtering much more flexible: + +* *gitinspector -x "author:\^(?!(John Smith))"*, only show statistics from author "John Smith" +* *gitinspector -x "author:\^(?!([A-C]))"*, only show statistics from authors starting with the letters A/B/C +* *gitinspector -x "email:.com$"*, filter out statistics from all email addresses ending with ".com" + + +USING GIT TO CONFIGURE GITINSPECTOR +----------------------------------- +Options in gitinspector can be set using *git config*. Consequently, it is possible to configure gitinspector behavior globally (in all git repositories) or locally (in a specific git repository). It also means that settings will be permanently stored. All the long options that can be given to gitinspector can also be configure via git config (and take the same arguments). + +To configure how gitinspector should behave in all git repositories, execute the following git command: + +*git config --global inspector.option setting* + +To configure how gitinspector should behave in a specific git repository, execute the following git command (with the current directory standing inside the repository in question): + +*git config inspector.option setting* + + +AUTHOR +------ +Originally written by Adam Waldenberg. + + +REPORTING BUGS +-------------- +Report gitinspector bugs to gitinspector@ejwa.se + +The gitinspector project page: + +If you encounter problems, be sure to read the FAQ first: + +COPYRIGHT +--------- +Copyright (C) 2012-2015 Ejwa Software. All rights reserved. License GPLv3+: GNU GPL version 3 or later . +This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. + + +SEE ALSO +-------- +*git*(1)