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::CommandLine::Result

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

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



629
630
631
# File 'lib/git/commands/log.rb', line 629

def call(*, **)
  super
end