Skip to content
  • Johannes Schindelin's avatar
    cvsexportcommit: be graceful when "cvs status" reorders the arguments · fef3a7cc
    Johannes Schindelin authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    In my use cases, "cvs status" sometimes reordered the passed filenames,
    which often led to a misdetection of a dirty state (when it was in
    reality a clean state).
    
    I finally tracked it down to two filenames having the same basename.
    
    So no longer trust the order of the results blindly, but actually check
    the file name.
    
    Since "cvs status" only returns the basename (and the complete path on the
    server which is useless for our purposes), run "cvs status" several times
    with lists consisting of files with unique (chomped) basenames.
    
    Be a bit clever about new files: these are reported as "no file <blabla>",
    so in order to discern it from existing files, prepend "no file " to the
    basename.
    
    In other words, one call to "cvs status" will not ask for two files
    "blabla" (which does not yet exist) and "no file blabla" (which exists).
    
    This patch makes cvsexportcommit slightly slower, when the list of changed
    files has non-unique basenames, but at least it is accurate now.
    
    Signed-off-by: default avatarJohannes Schindelin <johannes.schindelin@gmx.de>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    fef3a7cc