Skip to content

Commit d28d37c

Browse files
authored
Merge pull request #33 from j0057/gh-release-edit-fix-release-not-found-exception
gh_release_edit: Fix `Release with tag_name latest-tmp not found`` exception
2 parents f0cc6dc + 01cab9e commit d28d37c

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

CHANGES.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
1.5.6
2+
=====
3+
4+
Issues (CLI and Python API)
5+
---------------------------
6+
7+
* ``release`` command:
8+
9+
* ``edit``: If any, remove leftover temporary tag and
10+
avoid ``Release with tag_name latest-tmp not found`` exception.
11+
12+
113
1.5.5
214
=====
315

github_release.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,26 +289,43 @@ def _update_release_sha(repo_name, tag_name, new_release_sha, dry_run):
289289
if not refs:
290290
return
291291
assert len(refs) == 1
292+
293+
# If sha associated with "<tag_name>" is up-to-date, we are done.
292294
previous_release_sha = refs[0]["object"]["sha"]
293295
if previous_release_sha == new_release_sha:
294296
return
297+
295298
tmp_tag_name = tag_name + "-tmp"
296299

300+
# If any, remove leftover temporary tag "<tag_name>-tmp"
301+
refs = get_refs(repo_name, tags=True, pattern="refs/tags/%s" % tmp_tag_name)
302+
if refs:
303+
assert len(refs) == 1
304+
time.sleep(0.1)
305+
gh_ref_delete(repo_name,
306+
"refs/tags/%s" % tmp_tag_name, dry_run=dry_run)
307+
308+
# Update "<tag_name>" release by associating it with the "<tag_name>-tmp"
309+
# and "<new_release_sha>". It will create the temporary tag.
297310
time.sleep(0.1)
298311
patch_release(repo_name, tag_name,
299312
tag_name=tmp_tag_name,
300313
target_commitish=new_release_sha,
301314
dry_run=dry_run)
302315

316+
# Now "<tag_name>-tmp" references "<new_release_sha>", remove "<tag_name>"
303317
time.sleep(0.1)
304318
gh_ref_delete(repo_name, "refs/tags/%s" % tag_name, dry_run=dry_run)
305319

320+
# Finally, update "<tag_name>-tmp" release by associating it with the
321+
# "<tag_name>" and "<new_release_sha>".
306322
time.sleep(0.1)
307323
patch_release(repo_name, tmp_tag_name,
308324
tag_name=tag_name,
309325
target_commitish=new_release_sha,
310326
dry_run=dry_run)
311327

328+
# ... and remove "<tag_name>-tmp"
312329
time.sleep(0.1)
313330
gh_ref_delete(repo_name,
314331
"refs/tags/%s" % tmp_tag_name, dry_run=dry_run)
@@ -356,6 +373,7 @@ def patch_release(repo_name, current_tag_name, **values):
356373
headers={'Content-Type': 'application/json'})
357374
response.raise_for_status()
358375

376+
# In case a new tag name was provided, remove the old one.
359377
if current_tag_name != data["tag_name"]:
360378
gh_ref_delete(
361379
repo_name, "refs/tags/%s" % current_tag_name,

0 commit comments

Comments
 (0)