Skip to content
  • Pierre Habouzit's avatar
    git-checkout: improve error messages, detect ambiguities. · 859fdaba
    Pierre Habouzit authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    The patch is twofold: it moves the option consistency checks just under
    the parse_options call so that it doesn't get in the way of the tree
    reference vs. pathspecs desambiguation.
    
    The other part rewrites the way to understand arguments so that when
    git-checkout fails it does with an understandable message. Compared to the
    previous behavior we now have:
    
      - a better error message when doing:
    
            git checkout <blob reference> --
    
        now complains about the reference not pointing to a tree, instead of
        things like:
    
            error: pathspec <blob reference> did not match any file(s) known to git.
            error: pathspec '--' did not match any file(s) known to git.
    
      - a better error message when doing:
    
            git checkout <path> --
    
        It now complains about <path> not being a reference instead of the
        completely obscure:
    
            error: pathspec '--' did not match any file(s) known to git.
    
      - an error when -- wasn't used, and the first argument is ambiguous
        (i.e. can be interpreted as both ref and as path).
    
    Signed-off-by: default avatarPierre Habouzit <madcoder@debian.org>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    859fdaba