File tree 4 files changed +50
-7
lines changed
tests/revision/spec/parse/anchor
4 files changed +50
-7
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 ( ) ;
Original file line number Diff line number Diff line change @@ -27,14 +27,18 @@ mod revision {
27
27
fn date ( ) -> crate :: Result {
28
28
let repo = crate :: named_repo ( "make_rev_parse_repo.sh" ) ?;
29
29
let actual = repo
30
- . rev_parse_single ( "old@{10 years ago}" )
30
+ . rev_parse_single ( "old@{20 years ago}" )
31
31
. expect ( "it returns the oldest possible rev when overshooting" ) ;
32
32
assert_eq ! ( actual, hex_to_id( "be2f093f0588eaeb71e1eff7451b18c2a9b1d765" ) ) ;
33
33
34
34
let actual = repo
35
- . rev_parse_single ( "old@{1 month ago }" )
35
+ . rev_parse_single ( "old@{1732184844 }" )
36
36
. expect ( "it finds something in the middle" ) ;
37
- assert_eq ! ( actual, hex_to_id( "b29405fe9147a3a366c4048fbe295ea04de40fa6" ) ) ;
37
+ assert_eq ! (
38
+ actual,
39
+ hex_to_id( "b29405fe9147a3a366c4048fbe295ea04de40fa6" ) ,
40
+ "It also figures out that we don't mean an index, but a date"
41
+ ) ;
38
42
Ok ( ( ) )
39
43
}
40
44
}
Original file line number Diff line number Diff line change @@ -680,7 +680,7 @@ fn should_skip_all_archive_creation() -> bool {
680
680
}
681
681
682
682
fn is_lfs_pointer_file ( path : & Path ) -> bool {
683
- const PREFIX : & [ u8 ] = b"version https://gix -lfs" ;
683
+ const PREFIX : & [ u8 ] = b"version https://git -lfs" ;
684
684
let mut buf = [ 0_u8 ; PREFIX . len ( ) ] ;
685
685
std:: fs:: OpenOptions :: new ( )
686
686
. read ( true )
You can’t perform that action at this time.
0 commit comments