Class: Git::Commands::Log Private

Inherits:
Base
  • Object
show all
Defined in:
lib/git/commands/log.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Note:

arguments block audited against https://git-scm.com/docs/git-log/2.53.0

Implements the git log command.

Returns commit history.

Examples:

Typical usage

log = Git::Commands::Log.new(execution_context)
log.call
log.call(max_count: 20, since: '2 weeks ago')
log.call('v1.0..v2.0', pretty: 'format:%H %s', path: ['lib/', 'spec/'])
log.call(name_only: true, patch: true)

See Also:

Instance Method Summary collapse

Methods inherited from Base

allow_exit_status, arguments, #initialize, requires_git_version, skip_version_validation

Constructor Details

This class inherits a constructor from Git::Commands::Base

Instance Method Details

#call(*revision_range, **options) ⇒ Git::CommandLineResult

Execute the git log command.

Commit Limiting

History Simplification

Commit Ordering

Object Traversal

Commit Formatting

Diff Formatting

Paths

Execution

Parameters:

  • revision_range (Array<String>)

    zero or more revision specifiers

    Examples include 'v1.0..v2.0', 'abc123', '^v0.9', or any expression accepted by git-log(1). When multiple values are given they are passed as separate positional arguments to git. Defaults to no revision constraint (i.e. all reachable commits).

  • options (Hash)

    command options

Options Hash (**options):

  • :max_count (Integer, String) — default: nil

    maximum number of commits to output

    Alias: :n

  • :skip (Integer, String) — default: nil

    skip this many commits before starting output

  • :since (String) — default: nil

    show commits more recent than the given date

    Examples: '2 weeks ago', '2024-01-01'

  • :after (String) — default: nil

    show commits more recent than the given date (synonym for :since)

  • :since_as_filter (String) — default: nil

    like :since but visits all commits in the range rather than stopping at the first older commit

  • :until (String) — default: nil

    show commits older than the given date

    Examples: '1 month ago', '2024-01-01'

  • :before (String) — default: nil

    show commits older than the given date (synonym for :until)

  • :author (String) — default: nil

    limit commits to those whose author line matches the given pattern (regular expression)

  • :committer (String) — default: nil

    limit commits to those whose committer line matches the given pattern (regular expression)

  • :grep_reflog (String) — default: nil

    limit commits to those with reflog entries matching the given pattern; requires :walk_reflogs

  • :grep (String) — default: nil

    limit commits to those whose log message matches the given pattern (regular expression)

  • :all_match (Boolean, nil) — default: nil

    limit output to commits matching all --grep patterns (default: any)

  • :invert_grep (Boolean, nil) — default: nil

    limit output to commits whose log message does not match the :grep pattern

  • :regexp_ignore_case (Boolean, nil) — default: nil

    match --grep, --author, and --committer patterns case-insensitively

    Alias: :i

  • :basic_regexp (Boolean, nil) — default: nil

    treat limiting patterns as basic POSIX regular expressions (this is the default behavior)

  • :extended_regexp (Boolean, nil) — default: nil

    treat limiting patterns as extended POSIX regular expressions

    Mutually exclusive with :fixed_strings and :perl_regexp. Alias: :E

  • :fixed_strings (Boolean, nil) — default: nil

    treat limiting patterns as fixed strings instead of regular expressions

    Mutually exclusive with :extended_regexp and :perl_regexp. Alias: :F

  • :perl_regexp (Boolean, nil) — default: nil

    treat limiting patterns as Perl-compatible regular expressions

    Mutually exclusive with :extended_regexp and :fixed_strings. Alias: :P

  • :remove_empty (Boolean, nil) — default: nil

    stop when a given path disappears from the tree

  • :merges (Boolean, nil) — default: nil

    include only merge commits (--merges)

    Equivalent to --min-parents=2.

  • :no_merges (Boolean, nil) — default: nil

    exclude merge commits (--no-merges)

    Equivalent to --max-parents=1.

  • :min_parents (Integer, String) — default: nil

    show only commits with at least this many parents

  • :max_parents (Integer, String) — default: nil

    show only commits with at most this many parents

  • :first_parent (Boolean, nil) — default: nil

    follow only the first parent commit upon seeing a merge commit

  • :exclude_first_parent_only (Boolean, nil) — default: nil

    when excluding commits with ^, follow only the first parent of merge commits

  • :all (Boolean, nil) — default: nil

    pretend as if all refs in refs/, along with HEAD, are listed on the command line

  • :branches (Boolean, String, nil) — default: nil

    pretend as if all refs in refs/heads are listed on the command line

    Pass a shell glob pattern (e.g. 'feature*') to restrict to matching branch names

  • :tags (Boolean, String, nil) — default: nil

    pretend as if all refs in refs/tags are listed on the command line

    Pass a shell glob pattern to restrict to matching tag names

  • :remotes (Boolean, String, nil) — default: nil

    pretend as if all refs in refs/remotes are listed on the command line

    Pass a shell glob pattern to restrict to matching remote-tracking branches

  • :glob (String) — default: nil

    pretend as if all refs matching the given shell glob pattern are listed on the command line

  • :exclude (String) — default: nil

    do not include refs matching the given glob that --all, --branches, --tags, --remotes, or --glob would otherwise use

  • :exclude_hidden (String) — default: nil

    do not include refs hidden by the given configuration; value is one of fetch, receive, or uploadpack

  • :reflog (Boolean, nil) — default: nil

    pretend as if all objects mentioned by reflogs are listed on the command line

  • :alternate_refs (Boolean, nil) — default: nil

    pretend as if all objects mentioned as ref tips of alternate repositories are listed on the command line

  • :single_worktree (Boolean, nil) — default: nil

    examine only the current working tree when --all, --reflog, or similar options are in use

  • :ignore_missing (Boolean, nil) — default: nil

    ignore invalid object names in input

  • :bisect (Boolean, nil) — default: nil

    pretend as if the bad bisect ref was listed and the good bisect refs were excluded

  • :cherry_mark (Boolean, nil) — default: nil

    like :cherry_pick but marks equivalent commits with = instead of omitting them; inequivalent ones with +++

  • :cherry_pick (Boolean, nil) — default: nil

    omit commits that introduce the same change as a commit on the other side of a symmetric difference

  • :left_only (Boolean, nil) — default: nil

    list only commits reachable from the left side of a symmetric difference

  • :right_only (Boolean, nil) — default: nil

    list only commits reachable from the right side of a symmetric difference

  • :cherry (Boolean, nil) — default: nil

    synonym for --right-only --cherry-mark --no-merges

  • :walk_reflogs (Boolean, nil) — default: nil

    walk reflog entries from most recent to oldest instead of the commit ancestry chain

    Alias: :g

  • :merge (Boolean, nil) — default: nil

    show commits touching conflicted paths in the range HEAD...MERGE_HEAD; only useful with unmerged index entries

  • :boundary (Boolean, nil) — default: nil

    output excluded boundary commits, prefixed with -

  • :simplify_by_decoration (Boolean, nil) — default: nil

    show only commits referenced by some branch or tag

  • :show_pulls (Boolean, nil) — default: nil

    include merge commits that are not TREESAME to their first parent but are TREESAME to a later parent

  • :full_history (Boolean, nil) — default: nil

    do not prune history; show all commits that touched the given path(s)

  • :dense (Boolean, nil) — default: nil

    show only commits not TREESAME to any parent

  • :sparse (Boolean, nil) — default: nil

    show all commits in the simplified history

  • :simplify_merges (Boolean, nil) — default: nil

    remove needless merges from the result of :full_history with parent rewriting

  • :ancestry_path (Boolean, String, nil) — default: nil

    limit to commits on the ancestry chain between the range endpoints

    Pass true for --ancestry-path; pass a commit SHA for --ancestry-path=<commit>

  • :date_order (Boolean, nil) — default: nil

    show commits in commit timestamp order, no parents before all children

  • :author_date_order (Boolean, nil) — default: nil

    like :date_order but ordered by author timestamp

  • :topo_order (Boolean, nil) — default: nil

    avoid showing commits on multiple lines of history intermixed

  • :reverse (Boolean, nil) — default: nil

    output selected commits in reverse order; cannot be combined with :walk_reflogs

  • :no_walk (Boolean, String, nil) — default: nil

    show only the given commits without traversing ancestors

    Pass true for --no-walk (sorted); pass "unsorted" for --no-walk=unsorted

  • :do_walk (Boolean, nil) — default: nil

    override a previous --no-walk

  • :pretty (Boolean, String, nil) — default: nil

    pretty-print commit log in a format

    Pass true for --pretty (medium format); pass a format name such as "oneline", "short", "full", "fuller", "email", "raw", or a format:<string> expression for --pretty=<format>.

    Alias: :format

  • :abbrev_commit (Boolean, nil) — default: nil

    abbreviate commit hash (--abbrev-commit)

  • :no_abbrev_commit (Boolean, nil) — default: nil

    do not abbreviate commit hash (--no-abbrev-commit)

  • :oneline (Boolean, nil) — default: nil

    shorthand for --pretty=oneline --abbrev-commit

  • :encoding (String) — default: nil

    re-encode the commit log message in the given character encoding before output

  • :expand_tabs (Boolean, String, nil) — default: nil

    expand tabs in log messages (--expand-tabs)

    Pass true for --expand-tabs (width 8); pass an integer string like "4" for --expand-tabs=<n>

  • :no_expand_tabs (Boolean, nil) — default: nil

    do not expand tabs in log messages (--no-expand-tabs)

  • :notes (Boolean, String, nil) — default: nil

    show notes annotating the commit (--notes)

    Pass true for --notes; pass a ref string for --notes=<ref>

  • :no_notes (Boolean, nil) — default: nil

    suppress notes output (--no-notes)

  • :show_notes_by_default (Boolean, nil) — default: nil

    show the default notes unless options for displaying specific notes are given

  • :show_signature (Boolean, nil) — default: nil

    verify a signed commit with gpg --verify

  • :relative_date (Boolean, nil) — default: nil

    show dates relative to the current time (synonym for --date=relative)

  • :date (String) — default: nil

    format for dates in human-readable output

    Examples: 'relative', 'iso', 'short', 'format:%Y-%m-%d'

  • :parents (Boolean, nil) — default: nil

    print the parents of each commit and enable parent rewriting

  • :children (Boolean, nil) — default: nil

    print the children of each commit and enable parent rewriting

  • :left_right (Boolean, nil) — default: nil

    mark which side of a symmetric difference a commit is reachable from (< for left, > for right)

  • :graph (Boolean, nil) — default: nil

    draw a text-based graphical representation of the commit history on the left side of output; implies --topo-order

  • :show_linear_break (Boolean, String, nil) — default: nil

    put a barrier between non-linear consecutive commits when --graph is not used

    Pass true for --show-linear-break; pass a string for a custom barrier text

  • :follow (Boolean, nil) — default: nil

    continue listing the history of a file beyond renames; requires :path to be set to exactly one path element

  • :decorate (Boolean, String, nil) — default: nil

    print ref names of commits shown (--decorate)

    Pass true for --decorate (short format); pass a string such as "full" for --decorate=<format>

  • :no_decorate (Boolean, nil) — default: nil

    do not print ref names (--no-decorate)

  • :decorate_refs (String) — default: nil

    use only refs matching this pattern for decorations

  • :decorate_refs_exclude (String) — default: nil

    do not use refs matching this pattern for decorations

  • :clear_decorations (Boolean, nil) — default: nil

    clear all previous --decorate-refs / --decorate-refs-exclude options

  • :source (Boolean, nil) — default: nil

    print the ref name by which each commit was reached

  • :use_mailmap (Boolean, nil) — default: nil

    use the mailmap file to map author/ committer names and addresses to canonical real names (--use-mailmap)

  • :no_use_mailmap (Boolean, nil) — default: nil

    disable mailmap substitution (--no-use-mailmap)

  • :full_diff (Boolean, nil) — default: nil

    show full diff for commits touching the specified paths, not just the diff for those paths

  • :log_size (Boolean, nil) — default: nil

    include a log size <n> line for each commit indicating the length of the commit message in bytes

  • :patch (Boolean, nil) — default: nil

    generate patch output

    Alias: :p

  • :no_patch (Boolean, nil) — default: nil

    suppress all diff output

    Alias: :s

  • :diff_merges (String) — default: nil

    diff format for merge commits

    Values: "off", "on", "first-parent", "separate", "combined", "dense-combined", "remerge"

  • :no_diff_merges (Boolean, nil) — default: nil

    disable diff output for merge commits (synonym for --diff-merges=off)

  • :combined_all_paths (Boolean, nil) — default: nil

    in combined diffs, list the file name from all parents; only meaningful with -c or --cc

  • :raw (Boolean, nil) — default: nil

    show a summary of changes using the raw diff format for each commit

  • :stat (Boolean, String, nil) — default: nil

    generate a diffstat

    Pass true for --stat; pass a string such as "80,40" for --stat=<width>[,<name-width>[,<count>]]

  • :compact_summary (Boolean, nil) — default: nil

    output a condensed summary of extended header information in diffstat; implies --stat

  • :numstat (Boolean, nil) — default: nil

    like --stat but shows numbers of added and deleted lines in decimal notation without abbreviation

  • :shortstat (Boolean, nil) — default: nil

    output only the last line of the --stat format

  • :dirstat (Boolean, String, nil) — default: nil

    output distribution of relative amount of changes per sub-directory

    Pass true for --dirstat; pass a parameter string such as "files,10" for --dirstat=<params>

  • :summary (Boolean, nil) — default: nil

    output a condensed summary of extended header information such as creations, renames, and mode changes

  • :name_only (Boolean, nil) — default: nil

    show only the names of changed files

  • :name_status (Boolean, nil) — default: nil

    show only the names and status of changed files

  • :submodule (Boolean, String, nil) — default: nil

    specify how differences in submodules are shown

    Pass true for --submodule (log format); pass "short", "log", or "diff" for --submodule=<format>

  • :color (Boolean, String, nil) — default: nil

    show colored diff output (--color)

    Pass true for --color; pass a string such as "always" for --color=<when>

  • :no_color (Boolean, nil) — default: nil

    suppress colored diff output (--no-color)

  • :full_index (Boolean, nil) — default: nil

    show the full pre- and post-image blob object names on the index line of patch output

  • :binary (Boolean, nil) — default: nil

    output a binary diff that can be applied with git apply; implies --patch

  • :abbrev (Boolean, String, nil) — default: nil

    show the shortest unique object name prefix in diff-raw output

    Pass true for --abbrev; pass an integer string for --abbrev=<n>

  • :diff_filter (String) — default: nil

    select files by status letter (e.g. "AD" for Added and Deleted)

  • :find_renames (Boolean, String, nil) — default: nil

    detect renames

    Pass true for --find-renames; pass a percentage threshold string such as "90" for --find-renames=<n>

  • :find_copies (Boolean, String, nil) — default: nil

    detect copies as well as renames

    Pass true for --find-copies; pass a threshold string for --find-copies=<n>

  • :find_copies_harder (Boolean, nil) — default: nil

    inspect unmodified files as candidates for copy source; expensive for large projects

  • :relative (Boolean, String, nil) — default: nil

    show pathnames relative to the given subdirectory, or the current directory when run from a subdirectory (--relative)

    Pass true for --relative; pass a path string for --relative=<path>

  • :no_relative (Boolean, nil) — default: nil

    show absolute pathnames (--no-relative)

  • :text (Boolean, nil) — default: nil

    treat all files as text; alias -a

  • :ignore_space_at_eol (Boolean, nil) — default: nil

    ignore changes in whitespace at end of line

  • :ignore_space_change (Boolean, nil) — default: nil

    ignore changes in amount of whitespace; alias -b

  • :ignore_all_space (Boolean, nil) — default: nil

    ignore whitespace when comparing lines; alias -w

  • :ignore_blank_lines (Boolean, nil) — default: nil

    ignore changes whose lines are all blank

  • :ignore_matching_lines (String) — default: nil

    ignore changes whose all lines match the given regular expression

  • :ext_diff (Boolean, nil) — default: nil

    allow external diff helpers (--ext-diff)

  • :no_ext_diff (Boolean, nil) — default: nil

    disallow external diff helpers (--no-ext-diff)

  • :textconv (Boolean, nil) — default: nil

    allow external text conversion filters when comparing binary files (--textconv)

  • :no_textconv (Boolean, nil) — default: nil

    disallow external text conversion filters (--no-textconv)

  • :no_prefix (Boolean, nil) — default: nil

    do not show any source or destination prefix

  • :src_prefix (String) — default: nil

    show the given source prefix instead of a/

  • :dst_prefix (String) — default: nil

    show the given destination prefix instead of b/

  • :path (Array<String>) — default: nil

    limit commits to those that affected the given paths

  • :timeout (Integer, Float) — default: nil

    number of seconds to wait before the command is aborted with a timeout error

Returns:

Raises:

  • (ArgumentError)

    if unsupported options are provided

  • (Git::FailedError)

    if git exits with a non-zero exit status



# File 'lib/git/commands/log.rb', line 165