2026-09-12 09:01:14 +02:00
🚧 WIP
2026-09-12 09:01:14 +02:00
🚧 WIP
2026-09-12 09:01:14 +02:00
🚧 WIP
2026-09-12 09:01:14 +02:00
🚧 WIP
2026-09-12 09:01:14 +02:00
🚧 WIP
2026-09-12 09:01:14 +02:00
🚧 WIP
2026-09-12 09:01:14 +02:00
🚧 WIP
2026-09-12 09:01:14 +02:00
🚧 WIP
2026-09-12 09:01:14 +02:00

git-auto-tracker

Unattended change tracker that records modifications to SCADA project and configuration files in a Git repository.

The tracker periodically inspects a configured repository, detects added / modified / deleted files, resolves the last modifying user for each change (where a metadata source is available), and creates one Git commit per collection cycle with a structured, auditable commit message.

See functional specification.md for the full specification.

Features

  • Run-once execution, designed for Windows Task Scheduler / cron / systemd timers
  • Change detection via git status --porcelain -z (NUL-safe, UTF-8)
  • Configurable include/exclude file filters (globs)
  • Security validation with forbidden patterns (abort by default)
  • Pluggable author resolvers with priority chain and confidence levels
  • Per-file attribution recorded in the commit message
  • Structured commit trailers (Tracker-Run, Tracker-Host, ...)
  • Repository-level lock with stale-lock detection (stored outside the repo)
  • Rotating file logs plus console logging
  • Dry-run mode, exit codes suitable for external monitoring
  • Cross-platform: Windows / Linux / macOS

Installation

python -m venv .venv
.venv/Scripts/activate   # Windows
source .venv/bin/activate  # Linux/macOS
pip install -e .

Usage

git-auto-tracker run [--dry-run]   # collect changes and commit
git-auto-tracker status            # show detected changes without committing
git-auto-tracker validate          # validate configuration / repository / resolvers
git-auto-tracker config            # print effective configuration

Global options:

--config PATH      Path to configuration file (default: git-auto-tracker.yaml)
--log-level LEVEL  Override the configured log level
--version          Print version and exit

Configuration

See config/example.yaml. Configuration is YAML; deployment-specific values can be overridden through environment variables using the GIT_AUTO_TRACKER_<SECTION>__<KEY> convention.

Development

pip install -e . --group dev
pytest
ruff check src tests
S
Description
No description provided
Readme
115 KiB
Languages
Python 100%