fast-import: don't allow 'ls' of path with empty components
authorJonathan Nieder <jrnieder@gmail.com>
Sat, 10 Mar 2012 04:07:22 +0000 (22:07 -0600)
committerJonathan Nieder <jrnieder@gmail.com>
Sat, 10 Mar 2012 04:07:22 +0000 (22:07 -0600)
commit178e1deaae33f879ea687e85ac72455b3072b0d8
tree649d84cda0fd2ee79be730bd3aa37764dc98c6ab
parentc27e559da5b26faa31858fe6dc5492d4f605b867
fast-import: don't allow 'ls' of path with empty components

As the fast-import manual explains:

The value of <path> must be in canonical form. That is it must
not:
. contain an empty directory component (e.g. foo//bar is invalid),
. end with a directory separator (e.g. foo/ is invalid),
. start with a directory separator (e.g. /foo is invalid),

Unfortunately the "ls" command accepts these invalid syntaxes and
responds by declaring that the indicated path is missing.  This is too
subtle and causes importers to silently misbehave; better to error out
so the operator knows what's happening.

The C, R, and M commands already error out for such paths.

Reported-by: Andrew Sayers <andrew-git@pileofstuff.org>
Analysis-by: David Barr <davidbarr@google.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
fast-import.c
t/t9300-fast-import.sh