Skip to main content

Parser for git log --raw

Project description

glrp - git-log-raw-parser

A parser for parsing the command:

git log -p --format=raw --show-signature --stat

Simply pipe the output:

git log -p --format=raw --show-signature --stat | glrp --pretty

The CLI outputs one JSON object per commit. The JSON objects are separated by newlines. With --pretty, each JSON object is indented to be more readable and printed across multiple lines.

Why?

The above command provides a lot of useful information about git commits, which we can analyze, including:

  • Commit message
  • Diffs
  • Author name and email
  • Committer name and email
  • Timestamps
  • GPG signature

On its own, git log does not output its information in a format which is easy for other programs to use. So, this tool parses the output and turns it into JSON which is more easy to analyze and check.

Installation

pipx install glrp

Usage

Using it is simple, just run the git log command and pipe it to the standard input of git_log_raw_parser

git log -p --format=raw --show-signature --stat | glrp --output-dir=./out/

Or perhaps a bit more realistic:

git clone https://github.com/cfengine/core
(cd core && git log -p --format=raw --show-signature --stat HEAD~500..HEAD 2>/dev/null) | glrp

(Clone CFEngine core, start subshell which enters the subdirectory and runs git log for the past 500 commits).

Important notes

Warning: The output of --show-signature varies depending on which keys you have imported / trusted in your installation of GPG. Make sure you import the correct GPG keys beforehand, and don't expect output to be identical across different machines with different GPG states.

Warning: Consider this a best-effort, "lossy" parsing. Commits may contain non utf-8 characters, to avoid "crashing", we skip these, replacing them with question marks. Thus, the parsing is lossy, don't expect all the information to be there. This tool can be used for searching / analyzing commits, but don't use it as some kind of backup tool where you expect to have the ability to "reconstruct" the commits and repo entirely.

Details

For details on how the parsing works, try running with --debug and look at the resulting ./debug/ folder. Also, see the comments in the source code; ./git_log_raw_parser.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

glrp-0.0.4.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

glrp-0.0.4-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file glrp-0.0.4.tar.gz.

File metadata

  • Download URL: glrp-0.0.4.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for glrp-0.0.4.tar.gz
Algorithm Hash digest
SHA256 64c887b11a0097c517d5bb661e03b9785767431da5f124d185efb26dedbc0dcd
MD5 ea42aa78440bcc325cc926434766a468
BLAKE2b-256 c0311059cb3a60f248ee3ee543d2c6b069a95bd4a8a4e8b961a634df67fd3471

See more details on using hashes here.

Provenance

The following attestation bundles were made for glrp-0.0.4.tar.gz:

Publisher: python-publish.yml on olehermanse/glrp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file glrp-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: glrp-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for glrp-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 37faa70dd4db6d5471fed4d37fb7d083f0e920b2a14633220ae8b02780c04b8f
MD5 87cddb8a0208fd262c78eed6852d8faf
BLAKE2b-256 91e3d56f52b951203313ba268014767b648e96db4608cd417e3e88d424b44515

See more details on using hashes here.

Provenance

The following attestation bundles were made for glrp-0.0.4-py3-none-any.whl:

Publisher: python-publish.yml on olehermanse/glrp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page