Jose Diaz-Gonzalez
7615ce6102
Merge pull request #464 from Iamrodos/fix/246-restore-docs
...
docs: clarify no inbuilt restore and GitHub API limitations
2025-12-11 11:49:39 -05:00
Jose Diaz-Gonzalez
3f1ef821c3
Merge pull request #466 from Iamrodos/fix/112-windows-support
...
fix: add Windows support with entry_points and os.replace
2025-12-11 11:48:59 -05:00
Rodos
3684756eaa
fix: add Windows support with entry_points and os.replace
...
- Replace os.rename() with os.replace() for atomic file operations
on Windows (os.rename fails if destination exists on Windows)
- Add entry_points console_scripts for proper .exe generation on Windows
- Create github_backup/cli.py with main() entry point
- Add github_backup/__main__.py for python -m github_backup support
- Keep bin/github-backup as thin wrapper for backwards compatibility
Closes #112
2025-12-11 22:03:45 +11:00
Rodos
75e6f56773
docs: add "Restoring from Backup" section to README
...
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
2025-12-11 20:35:08 +11:00
Jose Diaz-Gonzalez
b991c363a0
Merge pull request #463 from josegonzalez/dependabot/pip/python-packages-9e0978b55f
...
chore(deps): bump urllib3 from 2.6.0 to 2.6.1 in the python-packages group
2025-12-10 09:39:07 -05:00
dependabot[bot]
6d74af9126
chore(deps): bump urllib3 in the python-packages group
...
Bumps the python-packages group with 1 update: [urllib3](https://github.com/urllib3/urllib3 ).
Updates `urllib3` from 2.6.0 to 2.6.1
- [Release notes](https://github.com/urllib3/urllib3/releases )
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst )
- [Commits](https://github.com/urllib3/urllib3/compare/2.6.0...2.6.1 )
---
updated-dependencies:
- dependency-name: urllib3
dependency-version: 2.6.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: python-packages
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-09 13:10:12 +00:00
Jose Diaz-Gonzalez
381d67af96
Merge pull request #462 from josegonzalez/dependabot/pip/python-packages-3a01b12ef5
...
chore(deps): bump the python-packages group with 3 updates
2025-12-08 16:00:24 -05:00
dependabot[bot]
2fbe8d272c
chore(deps): bump the python-packages group with 3 updates
...
Bumps the python-packages group with 3 updates: [black](https://github.com/psf/black ), [pytest](https://github.com/pytest-dev/pytest ) and [platformdirs](https://github.com/tox-dev/platformdirs ).
Updates `black` from 25.11.0 to 25.12.0
- [Release notes](https://github.com/psf/black/releases )
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md )
- [Commits](https://github.com/psf/black/compare/25.11.0...25.12.0 )
Updates `pytest` from 9.0.1 to 9.0.2
- [Release notes](https://github.com/pytest-dev/pytest/releases )
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst )
- [Commits](https://github.com/pytest-dev/pytest/compare/9.0.1...9.0.2 )
Updates `platformdirs` from 4.5.0 to 4.5.1
- [Release notes](https://github.com/tox-dev/platformdirs/releases )
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/CHANGES.rst )
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.5.0...4.5.1 )
---
updated-dependencies:
- dependency-name: black
dependency-version: 25.12.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: python-packages
- dependency-name: pytest
dependency-version: 9.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: python-packages
- dependency-name: platformdirs
dependency-version: 4.5.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: python-packages
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-08 13:09:32 +00:00
GitHub Action
eb5779ac23
Release version 0.55.0
0.55.0
2025-12-07 13:59:35 +00:00
Jose Diaz-Gonzalez
5b52931ebf
Merge pull request #461 from Iamrodos/fix-cli-ux-and-cleanup
...
fix: CLI UX improvements and cleanup
2025-12-07 08:58:59 -05:00
Rodos
1d6d474408
fix: improve error messages for inaccessible repos and empty wikis
2025-12-07 21:50:49 +11:00
Rodos
b80049e96e
test: add missing test coverage for case sensitivity fix
2025-12-07 21:21:37 +11:00
Rodos
58ad1c2378
docs: fix RST formatting in Known blocking errors section
2025-12-07 21:21:26 +11:00
Rodos
6e2a7e521c
fix: --all-starred now clones repos without --repositories
2025-12-07 21:21:14 +11:00
Rodos
aba048a3e9
fix: warn when --private used without authentication
2025-12-07 21:20:54 +11:00
Jose Diaz-Gonzalez
9f7c08166f
Merge pull request #460 from josegonzalez/dependabot/pip/urllib3-2.6.0
...
chore(deps): bump urllib3 from 2.5.0 to 2.6.0
2025-12-06 22:23:09 -05:00
dependabot[bot]
fdfaaec1ba
chore(deps): bump urllib3 from 2.5.0 to 2.6.0
...
Bumps [urllib3](https://github.com/urllib3/urllib3 ) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/urllib3/urllib3/releases )
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst )
- [Commits](https://github.com/urllib3/urllib3/compare/2.5.0...2.6.0 )
---
updated-dependencies:
- dependency-name: urllib3
dependency-version: 2.6.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-06 04:51:42 +00:00
Jose Diaz-Gonzalez
8f9cf7ff89
Merge pull request #459 from Iamrodos/issue-93-starred-gists-warning
...
fix: warn and skip when --starred-gists used for different user
2025-12-03 23:07:29 -05:00
Rodos
899ab5fdc2
fix: warn and skip when --starred-gists used for different user
...
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
2025-12-04 10:07:43 +11:00
GitHub Action
2a9d86a6bf
Release version 0.54.0
0.54.0
2025-12-03 02:17:59 +00:00
Jose Diaz-Gonzalez
4fd3ea9e3c
Merge pull request #457 from Iamrodos/readme-updates
...
docs: update README testing section and add fetch vs pull explanation
2025-12-02 21:15:33 -05:00
Jose Diaz-Gonzalez
041dc013f9
Merge pull request #458 from Iamrodos/fix-logging
...
fix: send INFO/DEBUG to stdout, WARNING/ERROR to stderr
2025-12-02 21:14:49 -05:00
Rodos
12802103c4
fix: send INFO/DEBUG to stdout, WARNING/ERROR to stderr
...
Fixes #182
2025-12-01 16:11:11 +11:00
Rodos
bf28b46954
docs: update README testing section and add fetch vs pull explanation
2025-12-01 15:55:00 +11:00
GitHub Action
ff2681e196
Release version 0.53.0
0.53.0
2025-11-30 04:30:48 +00:00
Jose Diaz-Gonzalez
745b05a63f
Merge pull request #456 from Iamrodos/fix-case
...
fix: case-sensitive username filtering causing silent backup failures
2025-11-29 23:30:07 -05:00
Jose Diaz-Gonzalez
83ff0ae1dd
Merge pull request #455 from Iamrodos/fix-133
...
Avoid rewriting unchanged JSON files for labels, milestones, releases…
2025-11-29 23:29:30 -05:00
Rodos
6ad1959d43
fix: case-sensitive username filtering causing silent backup failures
...
GitHub's API accepts usernames in any case but returns canonical case.
The case-sensitive comparison in filter_repositories() filtered out all
repositories when user-provided case didn't match GitHub's canonical case.
Changed to case-insensitive comparison.
Fixes #198
2025-11-29 21:16:22 +11:00
Rodos
5739ac0745
Avoid rewriting unchanged JSON files for labels, milestones, releases, hooks, followers, and following
...
This change reduces unnecessary writes when backing up metadata that changes
infrequently. The implementation compares existing file content before writing
and skips the write if the content is identical, preserving file timestamps.
Key changes:
- Added json_dump_if_changed() helper that compares content before writing
- Uses atomic writes (temp file + rename) for all metadata files
- NOT applied to issues/pulls (they use incremental_by_files logic)
- Made log messages consistent and past tense ("Saved" instead of "Saving")
- Added informative logging showing skip counts
Fixes #133
2025-11-29 17:21:14 +11:00
GitHub Action
8b7512c8d8
Release version 0.52.0
0.52.0
2025-11-28 23:39:09 +00:00
Jose Diaz-Gonzalez
995b7ede6c
Merge pull request #454 from Iamrodos/http-451
...
Skip DMCA'd repos which return a 451 response
2025-11-28 18:38:32 -05:00
Rodos
7840528fe2
Skip DMCA'd repos which return a 451 response
...
Log a warning and the link to the DMCA notice. Continue backing up
other repositories instead of crashing.
Closes #163
2025-11-29 09:52:02 +11:00
Jose Diaz-Gonzalez
6fb0d86977
Merge pull request #453 from josegonzalez/dependabot/pip/python-packages-42260fba7a
...
chore(deps): bump restructuredtext-lint from 1.4.0 to 2.0.2 in the python-packages group
2025-11-24 15:07:08 -05:00
dependabot[bot]
9f6b401171
chore(deps): bump restructuredtext-lint in the python-packages group
...
Bumps the python-packages group with 1 update: [restructuredtext-lint](https://github.com/twolfson/restructuredtext-lint ).
Updates `restructuredtext-lint` from 1.4.0 to 2.0.2
- [Changelog](https://github.com/twolfson/restructuredtext-lint/blob/master/CHANGELOG.rst )
- [Commits](https://github.com/twolfson/restructuredtext-lint/compare/1.4.0...2.0.2 )
---
updated-dependencies:
- dependency-name: restructuredtext-lint
dependency-version: 2.0.2
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: python-packages
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-24 14:58:52 +00:00
Jose Diaz-Gonzalez
bf638f7aea
Merge pull request #452 from josegonzalez/dependabot/github_actions/actions/checkout-6
...
chore(deps): bump actions/checkout from 5 to 6
2025-11-24 04:42:52 -05:00
dependabot[bot]
c3855a94f1
chore(deps): bump actions/checkout from 5 to 6
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-24 04:09:25 +00:00
Jose Diaz-Gonzalez
c3f4bfde0d
Merge pull request #451 from josegonzalez/dependabot/pip/python-packages-63544ef561
...
chore(deps): bump the python-packages group with 3 updates
2025-11-18 11:44:02 -05:00
dependabot[bot]
d3edef0622
chore(deps): bump the python-packages group with 3 updates
...
Bumps the python-packages group with 3 updates: [click](https://github.com/pallets/click ), [pytest](https://github.com/pytest-dev/pytest ) and [keyring](https://github.com/jaraco/keyring ).
Updates `click` from 8.3.0 to 8.3.1
- [Release notes](https://github.com/pallets/click/releases )
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst )
- [Commits](https://github.com/pallets/click/compare/8.3.0...8.3.1 )
Updates `pytest` from 8.3.3 to 9.0.1
- [Release notes](https://github.com/pytest-dev/pytest/releases )
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst )
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.3...9.0.1 )
Updates `keyring` from 25.6.0 to 25.7.0
- [Release notes](https://github.com/jaraco/keyring/releases )
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst )
- [Commits](https://github.com/jaraco/keyring/compare/v25.6.0...v25.7.0 )
---
updated-dependencies:
- dependency-name: click
dependency-version: 8.3.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: python-packages
- dependency-name: pytest
dependency-version: 9.0.1
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: python-packages
- dependency-name: keyring
dependency-version: 25.7.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: python-packages
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-18 13:24:06 +00:00
GitHub Action
9ef496efad
Release version 0.51.3
0.51.3
2025-11-18 06:55:36 +00:00
Jose Diaz-Gonzalez
42bfe6f79d
Merge pull request #450 from Iamrodos/test/add-pagination-tests
...
test: Add pagination tests for cursor and page-based Link headers
2025-11-18 01:54:54 -05:00
Rodos
5af522a348
test: Add pagination tests for cursor and page-based Link headers
2025-11-17 17:14:29 +11:00
Jose Diaz-Gonzalez
6dfba7a783
Merge pull request #449 from 0x2b3bfa0/patch-1
...
Use cursor based pagination
2025-11-17 00:31:25 -05:00
Helio Machado
7551829677
Use cursor based pagination
2025-11-17 02:09:29 +01:00
GitHub Action
72d35a9b94
Release version 0.51.2
0.51.2
2025-11-16 23:55:36 +00:00
Jose Diaz-Gonzalez
3eae9d78ed
Merge pull request #447 from Iamrodos/master
...
fix: Improve CA certificate detection with fallback chain
2025-11-16 18:54:58 -05:00
Rodos
90ba839c7d
fix: Improve CA certificate detection with fallback chain
...
The previous implementation incorrectly assumed empty get_ca_certs()
meant broken SSL, causing false failures in GitHub Codespaces and other
directory-based cert systems where certificates exist but aren't pre-loaded.
It would then attempt to import certifi as a workaround, but certifi wasn't
listed in requirements.txt, causing the fallback to fail with ImportError
even though the system certificates would have worked fine.
This commit replaces the naive check with a layered fallback approach that
checks multiple certificate sources. First it checks for pre-loaded system
certs (file-based systems). Then it verifies system cert paths exist
(directory-based systems like Ubuntu/Debian/Codespaces). Finally it attempts
to use certifi as an optional fallback only if needed.
This approach eliminates hard dependencies (certifi is now optional), works
in GitHub Codespaces without any setup, and fails gracefully with clear hints
for resolution when SSL is actually broken rather than failing with
ModuleNotFoundError.
Fixes #444
2025-11-16 16:33:10 +11:00
GitHub Action
1ec0820936
Release version 0.51.1
0.51.1
2025-11-16 02:01:39 +00:00
Jose Diaz-Gonzalez
ca463e5cd4
Merge pull request #446 from josegonzalez/dependabot/pip/python-packages-4ff811fbf7
...
chore(deps): bump certifi from 2025.10.5 to 2025.11.12 in the python-packages group
2025-11-15 21:01:01 -05:00
Jose Diaz-Gonzalez
1750d0eff1
Merge pull request #448 from Iamrodos/fix/attachment-duplicate-downloads
...
fix: Prevent duplicate attachment downloads (with tests)
2025-11-15 21:00:00 -05:00
Rodos
e4d1c78993
test: Add pytest infrastructure and attachment tests
...
In making my last fix to attachments, I found it challenging not
having tests to ensure there was no regression.
Added pytest with minimal setup and isolated configuration. Created
a separate test workflow to keep tests isolated from linting.
Tests cover the key elements of the attachment logic:
- URL extraction from issue bodies
- Filename extraction from different URL types
- Filename collision resolution
- Manifest duplicate prevention
2025-11-14 10:28:30 +11:00