File tree Expand file tree Collapse file tree 2 files changed +42
-3
lines changed
tests/revision/spec/parse/anchor Expand file tree Collapse file tree 2 files changed +42
-3
lines changed Original file line number Diff line number Diff line change @@ -429,9 +429,23 @@ where
429
429
}
430
430
} else if has_ref_or_implied_name {
431
431
delegate
432
- . reflog ( delegate:: ReflogLookup :: Entry (
433
- n. try_into ( ) . expect ( "non-negative isize fits usize" ) ,
434
- ) )
432
+ . reflog ( if n >= 100000000 {
433
+ let time = nav
434
+ . to_str ( )
435
+ . map_err ( |_| Error :: Time {
436
+ input : nav. into ( ) ,
437
+ source : None ,
438
+ } )
439
+ . and_then ( |date| {
440
+ gix_date:: parse ( date, None ) . map_err ( |err| Error :: Time {
441
+ input : nav. into ( ) ,
442
+ source : err. into ( ) ,
443
+ } )
444
+ } ) ?;
445
+ delegate:: ReflogLookup :: Date ( time)
446
+ } else {
447
+ delegate:: ReflogLookup :: Entry ( n. try_into ( ) . expect ( "non-negative isize fits usize" ) )
448
+ } )
435
449
. ok_or ( Error :: Delegate ) ?;
436
450
} else {
437
451
return Err ( Error :: ReflogLookupNeedsRefName { name : ( * name) . into ( ) } ) ;
Original file line number Diff line number Diff line change @@ -47,6 +47,31 @@ fn reflog_by_date_for_current_branch() {
47
47
assert_eq ! ( rec. calls, 1 ) ;
48
48
}
49
49
50
+ #[ test]
51
+ fn reflog_by_unix_timestamp_for_current_branch ( ) {
52
+ let rec = parse ( "@{100000000}" ) ;
53
+
54
+ assert ! ( rec. kind. is_none( ) ) ;
55
+ assert_eq ! ( rec. find_ref[ 0 ] , None , ) ;
56
+ assert_eq ! (
57
+ rec. prefix[ 0 ] , None ,
58
+ "neither ref nor prefixes are set, straight to navigation"
59
+ ) ;
60
+ assert_eq ! (
61
+ rec. current_branch_reflog_entry[ 0 ] ,
62
+ Some ( "100000000 +0000" . to_string( ) ) ,
63
+ "This number is the first to count as date"
64
+ ) ;
65
+ assert_eq ! ( rec. calls, 1 ) ;
66
+
67
+ let rec = parse ( "@{99999999}" ) ;
68
+ assert_eq ! (
69
+ rec. current_branch_reflog_entry[ 0 ] ,
70
+ Some ( "99999999" . to_string( ) ) ,
71
+ "one less is an offset though"
72
+ ) ;
73
+ }
74
+
50
75
#[ test]
51
76
fn reflog_by_date_with_date_parse_failure ( ) {
52
77
let err = try_parse ( "@{foo}" ) . unwrap_err ( ) ;
You can’t perform that action at this time.
0 commit comments