@@ -281,6 +281,16 @@ def incremental_build(
281
281
return output_lines
282
282
283
283
284
+ def get_next_tag_name_after_version (tags : Iterable [GitTag ], version : str ) -> str | None :
285
+ it = iter (tag .name for tag in tags )
286
+ for name in it :
287
+ if name == version :
288
+ return next (it , None )
289
+
290
+ raise NoCommitsFoundError (f"Could not find a valid revision range. { version = } " )
291
+
292
+
293
+ # TODO: unused, deprecate this?
284
294
def get_smart_tag_range (
285
295
tags : Sequence [GitTag ], newest : str , oldest : str | None = None
286
296
) -> list [GitTag ]:
@@ -308,7 +318,7 @@ def get_smart_tag_range(
308
318
309
319
310
320
def get_oldest_and_newest_rev (
311
- tags : Sequence [GitTag ],
321
+ tags : Iterable [GitTag ],
312
322
version : str ,
313
323
rules : TagRules ,
314
324
) -> tuple [str | None , str ]:
@@ -331,15 +341,13 @@ def get_tag_name(v: str) -> str:
331
341
newest_tag_name = get_tag_name (newest_version )
332
342
oldest_tag_name = get_tag_name (oldest_version ) if oldest_version else None
333
343
334
- tags_range = get_smart_tag_range (tags , newest_tag_name , oldest_tag_name )
335
- if not tags_range :
336
- raise NoCommitsFoundError ("Could not find a valid revision range." )
337
-
338
- oldest_rev : str | None = tags_range [- 1 ].name
344
+ oldest_rev = get_next_tag_name_after_version (
345
+ tags , oldest_tag_name or newest_tag_name
346
+ )
339
347
340
348
# Return None for oldest_rev if:
341
349
# 1. The oldest tag is the last tag in the list and matches the requested oldest tag
342
350
# 2. The oldest and the newest tag are the same
343
- if oldest_rev == oldest_tag_name == tags [ - 1 ]. name or oldest_rev == newest_tag_name :
344
- oldest_rev = None
351
+ if oldest_rev == newest_tag_name :
352
+ return None , newest_tag_name
345
353
return oldest_rev , newest_tag_name
0 commit comments