jps-release-audit-utils
A comprehensive Python toolkit for auditing software releases, comparing multiple Git branches, and producing Excel-based release intelligence reports.
Designed to help engineering, QA, release management, and DevOps teams understand what code is in a release, what is missing, and how commit history evolved.
🚀 Overview
jps-release-audit-utils analyzes commit histories across multiple Git branches and generates a multi-worksheet Excel report with rich metadata, topology-aware commit ordering, branch coverage analysis, and color-coded indicators.
It is useful for:
- Preparing release candidates
- Verifying required commits are present
- Identifying missing or cherry-pick commits
- Understanding merge timing vs. authored commit dates
- Explaining branching and merging behavior to auditors or QA
- Producing reproducible release audit artifacts
🔍 Key Features
✔ Multi-branch commit analysis
- Accepts branches via
--branchesor--branches-file - Compares branch membership for every commit
- Identifies missing, unique, and shared commits
✔ Four Excel worksheets (configurable names)
-
timeline_by_date
Chronological commit history sorted by authored date. -
timeline_by_topology
Git DAG (ancestry) order usinggit rev-list --topo-order. -
timeline_hybrid
Combines date and topology order; highlights out-of-order commits. -
analytics_summary
High-level metrics across branches: unique commits, missing commits, out-of-order count, etc.
✔ Rich metadata extraction
- Commit hash
- Commit message
- Author
- PR number (when present)
- Authored date + datetime
- Presence per branch
✔ Color-coded Excel output
- Red for commits missing from a branch
- Green for commits present in all branches
- Yellow for commits whose dates contradict topology order
- Colors configurable via YAML
✔ YAML-based configuration
Located at:
src/jps_release_audit_utils/conf/config.yaml
Configurable items include:
sheets:
timeline_by_date: "Timeline (By Date)"
timeline_by_topology: "Timeline (By Topology)"
timeline_hybrid: "Hybrid Timeline"
analytics_summary: "Analytics Summary"
colors:
missing: "FFC7CE"
all_present: "C6EFCE"
out_of_order: "FFEB9C"
✔ Enhanced Excel formatting
Frozen header rows
Auto-filter enabled
Auto-adjusted column widths
📊 Worksheet Overview
Each worksheet provides a different perspective on commit history:
| Worksheet | Purpose |
|---|---|
| timeline_by_date | Understand when commits were authored. |
| timeline_by_topology | Understand how Git applied commits (true ancestry). |
| timeline_hybrid | Detect rebases/cherry-picks via date vs. topology mismatch. |
| analytics_summary | Quickly assess branch readiness and commit coverage. |
For detailed explanations, see: ➡️ docs/worksheet_explanations.md (recommended to create as part of project)
🧪 Example Usage
Compare 3 branches and output Excel report
python -m jps_release_audit_utils.commit_report \
--repo-path /path/to/repo \
--branches develop,main,release/v5.8.0-rc \
--output release_audit.xlsx
``
Using a branches file
```bash
python -m jps_release_audit_utils.commit_report \
--branches-file branches.txt \
--output audit.xlsx
Using a custom YAML configuration
python -m jps_release_audit_utils.commit_report \
--branches-file branches.txt \
--config src/jps_release_audit_utils/conf/config.yaml
📦 Installation
make install
or:
pip install jps-release-audit-utils
🧪 Development
make fix && make format && make lint
make test
📝 Roadmap (Optional Suggestions)
Optional PR-scraping via GitHub API
Release note generation
Branch divergence visualization
GitHub Actions plugin integration
HTML dashboards
📜 License
MIT License © Jaideep Sundaram
Metadata
Release files for jps-release-audit-utils 0.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jps_release_audit_utils-0.9.0.tar.gz | 23.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jps_release_audit_utils-0.9.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.9 kB
Release files / jps_release_audit_utils-0.9.0.tar.gz
| Download URL | jps_release_audit_utils-0.9.0.tar.gz |
|---|---|
| Size | 23.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
59fe63ffe2cb462e4ec331adf28d9446bfc232f59838a149abc82d870d15dd45
|
|
BLAKE2b-256 checksum How to use checksums |
b5719d534fd3b22f3c5fee3c46ced3e5e8c764fe2af832b6c34a1e9b31fc10cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / jps_release_audit_utils-0.9.0-py3-none-any.whl
| Download URL | jps_release_audit_utils-0.9.0-py3-none-any.whl |
|---|---|
| Size | 19.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1f9dcb519bb6eb684c9eade56af63d6c5fc81b173837dce0e600fa7da458b0d9
|
|
BLAKE2b-256 checksum How to use checksums |
a47ab5bd2f020f75e5ac694391ec34c17b9613f848675029b9debe7045284f03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|