General Guide to Textdeltas.... basic use of interfaces. (Yes, the interfaces are a bit simplified. :) ) To SEND textdeltas ------------------ 1. txdelta_stream = svn_txdelta (source_stream, target_stream); 2. Get window handler to do something with delta. If using an "editor" to transmit information: window_consumer_func = editor->apply_textdelta (file_baton); If you want raw vcdiff data for embedding in XML or HTTP transactions: window_consumer_func = svn_txdelta_to_vcdiff (txdelta_stream); 3. Loop until there are no more windows: txdelta_window = svn_txdelta_next_window (txdelta_stream); window_consumer_func (txdelta_window); svn_txdelta_free_window (txdelta_window); Be sure to call window_consumer_func with a NULL window when there are no more windows to consume. 4. svn_txdelta_free (txdelta_stream); To RECEIVE textdeltas --------------------- If implementing "apply_textdelta" within an editor: 1. Get window handler to apply the text delta: apply_handler = svn_txdelta_apply (read_func, write_func) where read_func reads from the delta source and write_func writes to the target. 2. If you don't need to do any special cleanup, you can return apply_handler to the caller directly. If you do need to do cleanup, write your own window_consumer_func which invokes apply_handler. In this case, your window handler will receive a NULL window argument when there are no more windows to consume, and you can do cleanup then. Be sure to pass a NULL window to apply_handler when that happens so that it can clean up its own stuff. If you want to receive raw vcdiff data from XML or HTTP transactions, get or write a window consumer function and call: vcdiff_parser = svn_make_vcdiff_parser (window_consumer_func); Loop over vcdiff data: svn_vcdiff_parse (vcdiff_parser, data);