Skip to content

Releases: QuantEcon/workflow-backups

v0.3.0

02 Dec 04:35

Choose a tag to compare

Features

  • Issues metadata backup: Export GitHub issues (with comments) to JSON files
    • New backup_metadata.issues config option (disabled by default)
    • JSON schema includes issue metadata, labels, assignees, milestones, comments
    • Files saved as {repo}-issues-{date}.json alongside git archives
  • Monthly issue reporting: Backup reports grouped by month with collapsed details
  • End-of-month review reminder: @mmcky mention when day >= 25

Changes

  • BackupManager now accepts optional backup_metadata configuration
  • GitHub issue reports now use monthly issues instead of single rolling issue

Notes

  • Issues backup is disabled by default due to API rate limit concerns (see #3)
  • Each issue requires a separate API call for comments
  • GraphQL optimization planned for future release

Testing

  • 69 tests passing
  • 83% code coverage
  • Tested on Python 3.9, 3.10, 3.11, 3.12

See CHANGELOG.md for full details.

v0.2.0

02 Dec 02:38

Choose a tag to compare

Features

  • exclude_archived: Skip archived repositories during backup
  • exclude_repositories: Exclude specific repos by exact name
  • exclude_patterns: Exclude repos matching regex patterns
  • Improved logging: Excluded repos shown in formatted multi-column list

Code Quality

  • Type hints updated to Python 3.9+ style (list, dict, set)
  • Ruff configuration updated to use [tool.ruff.lint] section
  • All 55 tests passing on Python 3.9-3.12
  • 88% code coverage

Security

All GitHub operations verified READ-ONLY:

  • Only get_organization(), get_repos(), and property access
  • Only git clone --mirror (download-only, never pushes)
  • Source repositories are never modified

Full Changelog

https://github.com/QuantEcon/workflow-backups/blob/main/CHANGELOG.md

v0.1.0

02 Dec 00:48

Choose a tag to compare

Features

  • Individual repository backup - Use repositories: config for exact repo names
  • Pattern-based backup - Use patterns: config with regex matching
  • Skip existing backups - Automatically skips same-day backups
  • PAT authentication - Support for private repos via REPO_BACKUP_TOKEN
  • S3 upload - Uploads with SHA256 checksums for integrity
  • Backup reporting - Generate reports on backup status
  • Issue reporting - Creates/updates GitHub issue for weekly runs
  • Dry-run mode - Preview what would be backed up
  • Force backup - Override skip-existing behavior

Tested & Validated

  • ✅ 8 repositories backed up successfully
  • ✅ Restore process verified (full git history, branches, tags)
  • ✅ All 44 unit tests passing

Usage

python -m src.main --config config.yml --task backup
python -m src.main --config config.yml --task backup --dry-run
python -m src.main --config config.yml --task report

See README.md for full documentation.