Currently, svn_ra_dav__get_file() will just push svndiff data at its output stream, if the ra session was created with a base_dir (in other words, the top of a tree in which base texts can be found). See comment in libsvn_client/switch.c:svn_client_switch(), near the bottom of the function, which currently says /* ### FIXME: we shouldn't be passing a NULL base-dir to open_ra_session. This is a just a way of forcing the server to send a fulltext instead of svndiff data against something in our working copy. We need to add a callback to open_ra_session that will fetch a 'source' stream from the WC, so that ra_dav's implementation of get_file() can use the svndiff data to construct a fulltext. */ Note also that svn_client_diff has to do the same trick (pass NULL instead of a base_dir), and it should be tweaked as soon as we finish the solution described in the above comment.