---
name: "Analizo::Command::metrics_history"
section: "3pm"
platform: "linux"
package: "analizo"
version: "1.25.5-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Analizo::Command::metrics_history"
---

# Analizo::Command::metrics\_history(3pm)

processes a Git repository collection metrics

## NAME

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

## USAGE

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

## DESCRIPTION

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.

## RELEVANT COMMITS

**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*.

## OPTIONS

- \--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 exactly 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:

### csv

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.

### db

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)](/DBI/3pm.md) for details. Note that if you a database other than SQLite, you must make sure that you have the corresponding DBI driver installed.

Examples:

**$ 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 ALSO

**analizo-metrics(1)**

## COPYRIGHT AND AUTHORS

See **analizo(1)**.
