Skip to content

jnoller/diffinator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

diffinator

diffinator

A tool that analyzes and categorizes changes between GitHub commits or releases. It groups commits by type, tracks important file changes, and generates structured reports in console or markdown format. The tool is configurable through YAML files, allowing you to define custom categorization rules and important files to monitor for a specific project on github.

Currently it includes the configuration (configs/llamacpp.yaml) for analyzing changes between two releases of llama.cpp.

Key Features

  • Supports both commit and release (tag) comparisons
  • Customizable commit categorization through YAML config
  • Important file tracking and diff analysis
  • Console output with color and pagination
  • Markdown output for documentation
  • Configurable through repository-specific YAML files
  • Smart commit message categorization based on prefixes

Installation

git clone [email protected]:jnoller/diffinator.git
cd diffinator
pip install .

Options

diffinator --help

usage: diffinator [-h] [-t TOKEN] [-c CONFIG] [-v {tag,commit}] [-o {console,markdown}] [-f OUTPUT_FILE] [-n] [--list-configs] [version_a] [version_b]

Analyze changes between GitHub repository releases or commits

positional arguments:
  version_a             First version/commit to compare
  version_b             Second version/commit to compare

options:
  -h, --help            show this help message and exit
  -t, --token TOKEN     GitHub API token (optional - only needed to avoid rate limits)
  -c, --config CONFIG   Name of bundled config (e.g. 'llamacpp') or path to custom YAML config file
  -v, --version-type {tag,commit}
                        Specify whether versions are tags or commits (overrides config file)
  -o, --output {console,markdown}
                        Output format (default: console)
  -f, --output-file OUTPUT_FILE
                        Output file (default: stdout)
  -n, --nodiff          Omit diff output from file changes
  --list-configs        List available bundled configurations

Example: diffinator -c llamacpp v1.0 v2.0

Usage

List available configurations:

diffinator --list-configs

Bundled configurations:
  • defaults.yaml
    Default configuration for repository analysis
  • llamacpp.yaml
    Configuration for llama.cpp repository

Compare two releases with key file diffs inline:

diffinator -c llamacpp b4273 b4418


Summary:
  • Total commits: 39
  • Files changed: 133
  • Important files modified: 2

Commits by Type:

LLAMA-RUN:
  • llama-run: fix context size (#11094)

... truncated ...

Important File Changes:

• ggml/src/ggml-metal/ggml-metal.m (modified | +2/-2)
  Changes:
                     GGML_ASSERT(ne12 % ne02 == 0);
                     GGML_ASSERT(ne13 % ne03 == 0);

    -                const uint r2 = ne12/ne02;
    -                const uint r3 = ne13/ne03;
    +                const uint32_t r2 = ne12/ne02;
    +                const uint32_t r3 = ne13/ne03;

Compare two releases with inline diffs disabled:

diffinator -c llamacpp --nodiff b4273 b4418

Generate a markdown report:

diffinator -c llamacpp --output markdown b4273 b4418

Full example report see example-report.md

About

Tool to diff release things pew pew

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages