Skip to content
  • Luke Diamand's avatar
    git-p4: auto-size the block · 3deed5e0
    Luke Diamand authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    git-p4 originally would fetch changes in one query. On large repos this
    could fail because of the limits that Perforce imposes on the number of
    items returned and the number of queries in the database.
    
    To fix this, git-p4 learned to query changes in blocks of 512 changes,
    However, this can be very slow - if you have a few million changes,
    with each chunk taking about a second, it can be an hour or so.
    
    Although it's possible to tune this value manually with the
    "--changes-block-size" option, it's far from obvious to ordinary users
    that this is what needs doing.
    
    This change alters the block size dynamically by looking for the
    specific error messages returned from the Perforce server, and reducing
    the block size if the error is seen, either to the limit reported by the
    server, or to half the current block size.
    
    That means we can start out with a very large block size, and then let
    it automatically drop down to a value that works without error, while
    still failing correctly if some other error occurs.
    
    Signed-off-by: default avatarLuke Diamand <luke@diamand.org>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    3deed5e0