analizo-metrics-history - processes a Git repository collection metrics


  analizo metrics-history [OPTIONS] [<input>]


Processes a Git repository collection metrics for every single revision.

analizo metrics-history will process input, a Git repository with a working copy of the source code (i.e. not a bare git repository), checkout every relevant commit and run analizo metrics on it. The metrics for all of the revisions will be accumulated in a file called metrics.csv inside input. If input is omitted, the current directory (.) s assumed.

analizo metrics-history is part of the analizo suite.


analizo metrics-history considers as relevant the commits that changed at least one source code file. Consequently, it skips all the commits where no source code file was changed, such as documentation, translations, build system changes, etc.

Currently we support C, C++, Java and C# projects, and therefore files considered source code are the ones terminated in .c, .h, .cpp, .cxx, .cc, .hh, .hpp, .java and .cs.


--parallel N, -p N

Activates support for parallel processing, using N concurrent worker processes. Usually you will want N to be less than or equal to the number of CPUs in your machine.

Note that analizo metrics extraction is a CPU-intensive process, so setting N as the exacty number of CPUs you have may bring your machine to an unusable state.

--language LANGUAGE, --exclude DIRECTORY

Use programming language and directory exclusion filters. See analizo-metrics(1) for a description of these options.

--output <file>, -o <file>

Make the output be written to file. The default value and valid values depend on the output format, see "Output formats" below.

--format FORMAT, -f FORMAT

Specifies with output driver, and consequently the output format, to use. See "Output Formats" below for a description of the available output drivers.

--list, -l

Instead of actually processing the history, just print out the ids of the commits that would be processed.

--progressbar, -b

Displays a progress bar during the execution, so that you know approximately how long analizo is going to take to finish.

Output formats

Using the --format option, you can use the following output drivers:


This is the default output driver. By default, the output will be written to the standard output. If can direct the output to a file using the --output option.


Stores the extracted data in a relational database.

When you use this driver, you can specify where exactly to store the data using the --output option. If you do not specify an explicit target, analizo will write to a SQLite database in a file called output.sqlite3 in the current directory. If you pass a filename, and analizo will store the data in a SQLite database that will be created on that file. You can direct the output to any other database by using --output DSN, where DSN is a DBI Data Source Name.

You can check DBI(3pm) for details. Note that if you a database other than SQLite, you must make sure that you have the correponsing DBI driver installed.


$ analizo metrics-history -f db -o history.db

Writes the output to a SQLite database called history.db.

$ analizo metrics-history -f db -o 'dbi:Pg:dbname=pgdb'

Writes the data to a PostgreSQL database called pgdb. This requires the DBI::Pg Perl module.

analizo was not tested with MySQL yet.




See analizo(1).