Skip to content

Commit 3385c8a

Browse files
committed
Release version 0.65.0
1 parent df21796 commit 3385c8a

2 files changed

Lines changed: 73 additions & 2 deletions

File tree

CHANGES.rst

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,80 @@
11
Changelog
22
=========
33

4-
0.64.2 (2026-07-18)
4+
0.65.0 (2026-07-27)
55
-------------------
66
------------------------
7+
- Refresh issue timelines when cross-references change (#168) [Rodos]
8+
9+
Cross-references do not change an issue's updated_at, so an incremental
10+
run never lists the issue and never re-fetches its timeline. An issue
11+
can be referenced from another repository years after its last activity
12+
and the backup would never see it.
13+
14+
On incremental runs with --issue-timeline, ask GraphQL for each item's
15+
cross-reference count and newest timestamp, compare both against what is
16+
already saved, and re-fetch the timeline of anything that differs. Items
17+
the since listing did not return are fetched individually. Both values
18+
are needed: the count alone would miss a reference being added and
19+
another deleted between runs, and the timestamp alone would miss a
20+
deletion.
21+
22+
Pull requests are swept too when they are being stored as issues, which
23+
is the case unless --pulls is used. They need their own query because
24+
the issues connection excludes them, and because totalCount ignores the
25+
itemTypes filter on a pull request although it honours it on an issue,
26+
so their cross-references are counted from the nodes instead. Where that
27+
count may have been truncated, the comparison falls back to the
28+
timestamp alone rather than re-fetching on every run.
29+
30+
This costs one rate-limit point per 100 items against the GraphQL quota,
31+
measured at 6 requests for a repository with 528 issues and pull
32+
requests, and stores no new state: the comparison is against the
33+
cross-references already in each item's timeline_data. A GraphQL failure
34+
warns and leaves the rest of the backup unaffected.
35+
36+
Closes #168
37+
- Add --issue-timeline flag to capture cross-reference events (#168)
38+
[Rodos]
39+
40+
The issue events endpoint never returns cross-references, so an issue
41+
mentioned from another issue or pull request leaves no trace in the
42+
backup. GitHub only exposes those through the timeline endpoint. Full
43+
backups miss them as well as incremental ones.
44+
45+
Adds --issue-timeline, which stores the timeline under a separate
46+
timeline_data key alongside the unmodified event_data. The two
47+
endpoints are complementary rather than nested: the timeline adds
48+
cross-references, commits and reviews, while events carries
49+
referenced entries the timeline drops, so neither replaces the other.
50+
51+
Timeline entries for comments are filtered out, since --issue-comments
52+
already saves the bodies. Everything else is stored verbatim. The flag
53+
is included in --all.
54+
55+
This makes the data obtainable, but does not change incremental
56+
selection: a cross-reference does not bump the referenced issue's
57+
updated_at, so an incremental run still never lists it. That half of
58+
the issue remains open.
59+
60+
References #168
61+
- Chore(deps): bump actions/setup-python from 6 to 7. [dependabot[bot]]
62+
63+
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6 to 7.
64+
- [Release notes](https://github.com/actions/setup-python/releases)
65+
- [Commits](https://github.com/actions/setup-python/compare/v6...v7)
66+
67+
---
68+
updated-dependencies:
69+
- dependency-name: actions/setup-python
70+
dependency-version: '7'
71+
dependency-type: direct:production
72+
update-type: version-update:semver-major
73+
...
74+
75+
76+
0.64.2 (2026-07-18)
77+
-------------------
778
- Add tests. [Duncan Ogilvie]
879
- Skip fetching gists that have not been updated. [Duncan Ogilvie]
980
- Skip retrieving repositories when not necessary. [Duncan Ogilvie]

github_backup/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.64.2"
1+
__version__ = "0.65.0"

0 commit comments

Comments
 (0)