Hi, I found a little bug in the svn_client_diff7() function: If the function returns an error 'the path must be an immediate child of the directory', Subversion formats it with the paths in internal style.
The error cannot be reproduced via the command line client, but exists in the API. I found it when playing with diff in PoshSvn. [[[ Convert path to local style when rising BAD_RELATIVE_PATH error from diff. * subversion\libsvn_client\diff.c (adjust_paths_for_diff_labels): Invoke svn_dirent_local_style() function when making BAD_RELATIVE_PATH error to create the error with correct paths. ]]] Thanks! -- Timofei Zhakov
Index: subversion/libsvn_client/diff.c =================================================================== --- subversion/libsvn_client/diff.c (revision 1917907) +++ subversion/libsvn_client/diff.c (working copy) @@ -205,7 +205,9 @@ adjust_paths_for_diff_labels(const char **index_pa else if (! strcmp(relative_to_dir, new_path)) new_path = "."; else - return MAKE_ERR_BAD_RELATIVE_PATH(new_path, relative_to_dir); + return MAKE_ERR_BAD_RELATIVE_PATH( + svn_dirent_local_style(new_path, scratch_pool), + svn_dirent_local_style(relative_to_dir, scratch_pool)); } {