Allow users to skip downloading release assets for specific repositories
while still backing up release metadata. Useful for starred repos with
large assets (e.g. syncthing with 27GB+).
Usage: --skip-assets-on repo1 repo2 owner/repo3
Features:
- Space-separated repos (consistent with --exclude)
- Case-insensitive matching
- Supports both repo name and owner/repo format
Add example showing how to pipe a token from stdin using
file:///dev/stdin to avoid storing tokens in environment
variables or command history.
Closes#187
git lfs clone is deprecated - modern git clone handles LFS automatically.
Using git lfs fetch --all ensures all LFS objects across all refs are
backed up, matching the existing bare clone behavior and providing
complete LFS backups.
Closes#379
Clarifies that this tool is backup-only with no inbuilt restore.
Documents that git repos can be pushed back, but issues/PRs have
GitHub API limitations affecting all backup tools.
Closes#246
GitHub's API only allows retrieving starred gists for the authenticated
user. Previously, using --starred-gists when backing up a different user
would silently return no relevant data.
Now warns and skips the retrieval entirely when the target user differs
from the authenticated user. Uses case-insensitive comparison to match
GitHub's username handling.
Fixes#93
Adds new --attachments flag that downloads user-uploaded files from
issue and PR bodies and comments. Key features:
- Determines attachment URLs
- Tracks downloads in manifest.json with metadata
- Supports --skip-existing to avoid re-downloading
- Handles filename collisions with counter suffix
- Smart retry logic for transient vs permanent failures
- Uses Content-Disposition for correct file extensions
Both Python 3.8 and 3.9 have reached end-of-life:
- Python 3.8: EOL October 7, 2024
- Python 3.9: EOL October 31, 2025
Changes:
- Add python_requires=">=3.10" to setup.py
- Remove Python 3.8 and 3.9 from classifiers
- Add Python 3.13 and 3.14 to classifiers
- Update README to document Python 3.10+ requirement
Removed unused permissions, and changed names to those currently used by GitHub.
- code: renamed to contents as used by GitHub
- commit statuses: removed because not used by github-backup
- pages: removed because not used by github-backup
- repository hooks: renamed to webhooks as used by GitHub
The issue with --release producing errors documented in #209 (the linked issue) and #234 appears to have been fixed in #257.
This change removes the associated warning from the README.
Support changing the log level to the desired value easily.
For example, this is useful to suppress progress messages but
keep logging warnings and errors.
By default, private repositories are not included. This is surprising.
It took me a while to figure this out, and making that clear in the
example can help others to be aware of that.