@@ -394,7 +394,12 @@ def _assert_rev_parse(self, name):
394
394
"""tries multiple different rev-parse syntaxes with the given name
395
395
:return: parsed object"""
396
396
rev_parse = self .rorepo .rev_parse
397
- obj = rev_parse (name )
397
+ orig_obj = rev_parse (name )
398
+ if orig_obj .type == 'tag' :
399
+ obj = orig_obj .object
400
+ else :
401
+ obj = orig_obj
402
+ # END deref tags by default
398
403
399
404
# try history
400
405
rev = name + "~"
@@ -404,10 +409,9 @@ def _assert_rev_parse(self, name):
404
409
405
410
# history with number
406
411
ni = 11
407
- history = list ()
408
- citer = obj .traverse ()
412
+ history = [obj .parents [0 ]]
409
413
for pn in range (ni ):
410
- history .append (citer . next () )
414
+ history .append (history [ - 1 ]. parents [ 0 ] )
411
415
# END get given amount of commits
412
416
413
417
for pn in range (11 ):
@@ -430,11 +434,14 @@ def _assert_rev_parse(self, name):
430
434
self ._assert_rev_parse_types (rev , obj2 )
431
435
# END for each parent
432
436
433
- return obj
437
+ return orig_obj
434
438
435
439
def test_rev_parse (self ):
436
440
rev_parse = self .rorepo .rev_parse
437
441
442
+ # it works with tags !
443
+ self ._assert_rev_parse ('0.1.4' )
444
+
438
445
# start from reference
439
446
num_resolved = 0
440
447
for ref in Reference .iter_items (self .rorepo ):
@@ -447,7 +454,6 @@ def test_rev_parse(self):
447
454
num_resolved += 1
448
455
except BadObject :
449
456
print "failed on %s" % path_section
450
- raise
451
457
# is fine, in case we have something like 112, which belongs to remotes/rname/merge-requests/112
452
458
pass
453
459
# END exception handling
@@ -467,6 +473,12 @@ def test_rev_parse(self):
467
473
468
474
# dereference tag using ^{} notation
469
475
476
+ # ref^0 returns commit being pointed to, same with ref~0
477
+ tag = rev_parse ('0.1.4' )
478
+ for token in ('~^' ):
479
+ assert tag .object == rev_parse ('0.1.4%s0' % token )
480
+ # END handle multiple tokens
481
+
470
482
# missing closing brace commit^{tree
471
483
472
484
# missing starting brace
0 commit comments