Rand Stats

Git::Log

zef:raku-community-modules

Actions Status Actions Status Actions Status

NAME

Git::Log - Gets the git log as a Raku object

SYNOPSIS

Gets the git log as a Raku object

DESCRIPTION

The first argument is the command line args wanted to be passed into git log. Optionally you can also get the files changes as well as the number of lines added or deleted.

Returns an array of hashes in the following format: ID => "df0c229ad6ba293c67724379bcd3d55af6ea47a0", AuthorName => "Author's Name", AuthorEmail => "sample.email@not-a.url" ...

If the option :get-changes is used (off by default) it will also add a 'changes' key in the following format: changes => { $[ { filename => 'myfile.txt', added => 10, deleted => 5 }, ... ] }

If there is a field that you need that is not offered, then you can supply an array, :@fields. Format is an array of pairs: ID => '%H', AuthorName => '%an' ... you can look for more here.

These are the default fields:

my @fields-default =
  ID          => '%H',
  AuthorName  => '%an',
  AuthorEmail => '%ae',
  AuthorDate  => '%aI',
  Subject     => '%s',
  Body        => '%b'
;

EXAMPLES

# Gets the git log for the specified repository,
# from versions 2018.06 to main
git-log(:path($path.IO), '2018.06..main')

# Gets the git log for the current directory, and does I<not> get the files
# changed in that commit
git-log(:!get-changes)

sub git-log

sub git-log(
    *@args,
    :@fields = Code.new,
    IO::Path :$path,
    Bool:D :$get-changes = Bool::False,
    Bool:D :$date-time = Bool::False
) returns Mu

git-log's first argument is an array that is passed to C and optionally you can provide a path so a directory other than the current are used.

AUTHOR

Samantha McVey

Source can be located at: https://github.com/raku-community-modules/Git-Log . Comments and Pull Requests are welcome.

COPYRIGHT AND LICENSE

Copyright 2018 Samantha McVey

Copyright 2024 The Raku Community

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.