Dear Daniel,
first of all thank you for the prompt reply. To reproduce the issue try to do what follows.
Let's assume that there is a file called 'rescheduler.py' and a directory
called 'RESCHEDULE_EXAMPLE' in a svn repository (both under version control), then
> svn diff r<TAB> 

does not complete it as expected, since it suggests only the directory 'RESCHEDULE_EXAMPLE'.
The same odd behavior can be also experienced with 'log' argument (i.e. svn log).
With my patch it should provide all possible completions (i.e. all files and disr in the folder), since I removed completely the smart logic,

which was present in the original functions (i.e. I removed everywhere the -g option and the relative argument of function _file)

I also attempted to reimplement the functions _svn_status and _svn_controlled to restore the original logic as follows


(( $+functions[_svn_controlled] )) ||
_svn_controlled() {
  sta=$(svn status $REPLY) 
  stat=$sta[1]
  [[ $stat != "?" ]]
}

(( $+functions[_svn_status] )) ||
_svn_status() {

  sta=$(svn status  $REPLY) 
 
  [[ "$sta" != "" ]]
}

but I am not sure they work as the original versions…
I agree with you that _svn_conflict could be kept. According
to what you wrote a possible implementation of _svn_deletedfiles could be

sta=$(svn status $REPLY) 
stat=$sta[1]
[[ $stat == “D" ]]

what do you think?

The patch file is attached,

cheers 
Cristiano