=head1 Name
sqitch-log - Show database change logs
=head1 Synopsis
sqitch [options] log [<options>]
=head1 Description
Sqitch keeps a record of the deployment, failed deployment, or reversion of
all changes in a database. Even after a change has been reverted, a log of its
earlier deployment is retained. The C<log> command is your key to accessing
it. You can simply list all the events, search for events matching regular
expressions, and limit the results.
=head1 Options
=over
=item C<--event>
Filter by event type. May be specified more than once. Allowed values are:
=over
=item * C<deploy>
=item * C<revert>
=item * C<fail>
=back
=item C<--change-pattern>
=item C<--change>
A regular expression to match against change names.
=item C<--project-pattern>
=item C<--project>
A regular expression to match against project names.
=item C<--committer-pattern>
=item C<--committer>
A regular expression to match against committer names.
=item C<--format>
=item C<-f>
The format to use. May be one of:
=over
=item C<full>
=item C<long>
=item C<medium>
=item C<short>
=item C<oneline>
=item C<raw>
=item C<< format:<string> >>
=back
See L</Formats> for details on each format. Defaults to C<medium>.
=item C<--date-format>
=item C<--date>
Format to use for timestamps. Defaults to C<iso>. Allowed values:
=over
=item C<iso>
=item C<iso8601>
Shows timestamps in ISO-8601 format.
=item C<rfc>
=item C<rfc2822>
Show timestamps in RFC-2822 format.
=item C<full>
=item C<long>
=item C<medium>
=item C<short>
Show timestamps in the specified format length, using the system locale's
C<LC_TIME> category.
=item C<raw>
Show timestamps in raw format, which is strict ISO-8601 in the UTC time zone.
=item C<strftime:$string>
Show timestamps using an arbitrary C<strftime> pattern. See
L<DateTime/strftime Paterns> for comprehensive documentation of supported
patterns.
=item C<cldr:$pattern>
Show timestamps using an arbitrary C<cldr> pattern. See
L<DateTime/CLDR Paterns> for comprehensive documentation of supported
patterns.
=back
=item C<--max-count>
=item C<-n>
Limit the number of events to output.
=item C<--skip>
Skip the specified number events before starting to show the event output.
=item C<--reverse>
Output the events in reverse order.
=item C<--no-reverse>
Do not output the events in reverse order.
=item C<--color>
Show colored output. The value may be one of:
=over
=item C<auto> (the default)
=item C<always>
=item C<never>
=back
=item C<--no-color>
Turn off colored output. It is the same as C<--color never>.
=item C<--abbrev>
Instead of showing the full 40-byte hexadecimal change ID, show only a partial
prefix the specified number of characters long.
=item C<--oneline>
Shorthand for C<--format oneline --abbrev 6>.
=back
=head1 Configuration Variables
=over
=item C<log.format>
Output format to use. Supports the same values as C<--format>.
=item C<log.date_format>
Format to use for timestamps. Supports the same values as the C<--date-format>
option.
=item C<log.color>
Output colors. Supports the same values as the C<--color> option.
=back
=head1 Formats
There are several built-in formats, and you can emit data in a custom format
C<< format:<string> >> format. Here are the details of the built-in formats:
=over
=item C<oneline>
<change id> <event type> <project name>:<change name> <title line>
This is designed to be as compact as possible.
=item C<short>
<event type> <change id>
Name: <change name>
Committer: <committer>
<title line>
=item C<medium>
<event type> <change id>
Name: <change name>
Committer: <committer>
Date: <commit date>
<full change note>
=item C<long>
<event type> <change id> <tags>
Name: <change name>
Project: <change name>
Planner: <planner>
Committer: <committer>
<full change note>
=item C<full>
<event type> <change id> <tags>
Event: <event type>
Name: <change name>
Project: <change name>
Requires: <required changes>
Conflicts: <conflicting changes>
Planner: <planner>
Planned: <plan date>
Committer: <committer>
Committed: <commit date>
<full change note>
=item C<raw>
<event type> <change id> <tags>
name <change name>
project <project name>
requires <required changes>
conflicts <conflicting changes>
planner <planner>
planned <raw plan date>
committer <committer>
committed <raw commit date>
<full change note>
Suitable for parsing: the change ID is displayed in full, without regard to
the value of C<--abbrev>; dates are formatted raw (strict ISO-8601 format in
the UTC time zone); and all labels are lowercased and unlocalized.
=item C<< format:<string> >>
The C<< format:<string> >> format allows you to specify which information you
want to show. It works a little bit like C<printf> format and a little like
Git log format. For example, this format:
format:The committer of %h was %{name}c%vThe title was >>%s<<%v
Would show something like this:
The committer of f26a3s was Tom Lane
The title was >>We really need to get this right.<<
The placeholders are:
=over
=item * C<%H>: Event change ID
=item * C<%h>: Event change ID (respects C<--abbrev>)
=item * C<%n>: Event change name
=item * C<%o>: Event change project name
=item * C<%($len)h>: abbreviated change of length C<$len>
=item * C<%e>: Event type (deploy, revert, fail)
=item * C<%l>: Localized lowercase event type label
=item * C<%L>: Localized title case event type label
=item * C<%c>: Event committer name and email address
=item * C<%{name}c>: Event committer name
=item * C<%{email}c>: Event committer email address
=item * C<%{date}c>: commit date (respects C<--date-format>)
=item * C<%{date:rfc}c>: commit date, RFC2822 format
=item * C<%{date:iso}c>: commit date, ISO-8601 format
=item * C<%{date:full}c>: commit date, full format
=item * C<%{date:long}c>: commit date, long format
=item * C<%{date:medium}c>: commit date, medium format
=item * C<%{date:short}c>: commit date, short format
=item * C<%{date:cldr:$pattern}c>: commit date, formatted with custom L<CLDR pattern|DateTime/CLDR Patterns>
=item * C<%{date:strftime:$pattern}c>: commit date, formatted with custom L<strftime pattern|DateTime/strftime Patterns>
=item * C<%c>: Change planner name and email address
=item * C<%{name}p>: Change planner name
=item * C<%{email}p>: Change planner email address
=item * C<%{date}p>: plan date (respects C<--date-format>)
=item * C<%{date:rfc}p>: plan date, RFC2822 format
=item * C<%{date:iso}p>: plan date, ISO-8601 format
=item * C<%{date:full}p>: plan date, full format
=item * C<%{date:long}p>: plan date, long format
=item * C<%{date:medium}p>: plan date, medium format
=item * C<%{date:short}p>: plan date, short format
=item * C<%{date:cldr:$pattern}p>: plan date, formatted with custom L<CLDR pattern|DateTime/CLDR Patterns>
=item * C<%{date:strftime:$pattern}p>: plan date, formatted with custom L<strftime pattern|DateTime/strftime Patterns>
=item * C<%t>: Comma-delimited list of tags
=item * C<%{$sep}t>: list of tags delimited by C<$sep>
=item * C<%T>: Parenthesized list of comma-delimited tags
=item * C<%{$sep}T>: Parenthesized list of tags delimited by C<$sep>
=item * C<%s>: Subject (a.k.a. title line)
=item * C<%r>: Comma-delimited list of required changes
=item * C<%{$sep}r>: list of required changes delimited by C<$sep>
=item * C<%R>: Localized label and list of comma-delimited required changes
=item * C<%{$sep}R>: Localized label and list of required changes delimited by C<$sep>
=item * C<%x>: Comma-delimited list of conflicting changes
=item * C<%{$sep}x>: list of conflicting changes delimited by C<$sep>
=item * C<%X>: Localized label and list of comma-delimited conflicting changes
=item * C<%{$sep}X>: Localized label and list of conflicting changes delimited by C<$sep>
=item * C<%b>: Body
=item * C<%B>: Raw body (unwrapped subject and body)
=item * C<%{$prefix}>B: Raw body with C<$prefix> prefixed to every line
=item * C<%{event}_> Localized label for "event"
=item * C<%{change}_> Localized label for "change"
=item * C<%{committer}_> Localized label for "committer"
=item * C<%{planner}_> Localized label for "planner"
=item * C<%{by}_> Localized label for "by"
=item * C<%{date}_> Localized label for "date"
=item * C<%{committed}_> Localized label for "committed"
=item * C<%{planned}_> Localized label for "planned"
=item * C<%{name}_> Localized label for "name"
=item * C<%{project}_> Localized label for "project"
=item * C<%{email}_> Localized label for "email"
=item * C<%{requires}_> Localized label for "requires"
=item * C<%{conflicts}_> Localized label for "conflicts"
=item * C<%v> vertical space (newline)
=item * C<%{$color}C>: An ANSI color: black, red, green, yellow, reset, etc.
=item * C<%{:event}C>: An ANSI color based on event type (green deploy, blue revert, red fail)
=item * C<%{$attribute}a>: The raw attribute name and value, if it exists and has a value
=back
=back
=head1 Sqitch
Part of the L<sqitch> suite.