• S
    General ref log reading improvements. · e5229042
    Shawn Pearce 提交于
    Corrected the log starting time displayed in the error message
    (as it was always showing the epoch due to a bad input to strtoul).
    
    Improved the log parser so we only scan backwards towards the
    '\n' from the end of the prior log; during this scan the last '>'
    is remembered to improve performance (rather than scanning forward
    to it).
    
    If the log record matched is the last log record in the file only
    use its new sha1 value if the date matches exactly; otherwise we
    leave the passed in sha1 alone as it already contains the current
    value of the ref.  This way lookups of dates later than the log
    end to stick with the current ref value in case the ref was updated
    without logging.
    
    If it looks like someone changed the ref without logging it and we
    are going to return the sha1 which should have been valid during
    the missing period then warn the user that there might be log data
    missing and thus their query result may not be accurate.  The check
    isn't perfect as its just based on comparing the old and new sha1
    values between the two log records but its better than not checking
    at all.
    
    Implemented test cases based on git-rev-parse for most of the
    boundary conditions.
    Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
    Signed-off-by: NJunio C Hamano <junkio@cox.net>
    e5229042
refs.c 12.0 KB