File tree Expand file tree Collapse file tree 4 files changed +50
-7
lines changed
tests/revision/spec/parse/anchor Expand file tree Collapse file tree 4 files changed +50
-7
lines changed Original file line number Diff line number Diff line change @@ -429,9 +429,23 @@ where
429429 }
430430 } else if has_ref_or_implied_name {
431431 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+ } )
435449 . ok_or ( Error :: Delegate ) ?;
436450 } else {
437451 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() {
4747 assert_eq ! ( rec. calls, 1 ) ;
4848}
4949
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+
5075#[ test]
5176fn reflog_by_date_with_date_parse_failure ( ) {
5277 let err = try_parse ( "@{foo}" ) . unwrap_err ( ) ;
Original file line number Diff line number Diff line change @@ -27,14 +27,18 @@ mod revision {
2727 fn date ( ) -> crate :: Result {
2828 let repo = crate :: named_repo ( "make_rev_parse_repo.sh" ) ?;
2929 let actual = repo
30- . rev_parse_single ( "old@{10 years ago}" )
30+ . rev_parse_single ( "old@{20 years ago}" )
3131 . expect ( "it returns the oldest possible rev when overshooting" ) ;
3232 assert_eq ! ( actual, hex_to_id( "be2f093f0588eaeb71e1eff7451b18c2a9b1d765" ) ) ;
3333
3434 let actual = repo
35- . rev_parse_single ( "old@{1 month ago }" )
35+ . rev_parse_single ( "old@{1732184844 }" )
3636 . 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+ ) ;
3842 Ok ( ( ) )
3943 }
4044}
Original file line number Diff line number Diff line change @@ -680,7 +680,7 @@ fn should_skip_all_archive_creation() -> bool {
680680}
681681
682682fn 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" ;
684684 let mut buf = [ 0_u8 ; PREFIX . len ( ) ] ;
685685 std:: fs:: OpenOptions :: new ( )
686686 . read ( true )
You can’t perform that action at this time.
0 commit comments