@@ -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