* tools/hook-scripts/commit-email.pl.in
[svn.git] / notes / txdelta_sanity
blobb79d3669b7142c27cda3751a218dabc9780b19a0
2 General Guide to Textdeltas.... basic use of interfaces.
4 (Yes, the interfaces are a bit simplified.  :)  )
7 To SEND textdeltas
8 ------------------
9  
10  1. txdelta_stream = svn_txdelta (source_stream, target_stream);
12  2. Get window handler to do something with delta.  If using an
13     "editor" to transmit information:
15       window_consumer_func = editor->apply_textdelta (file_baton);
17     If you want raw vcdiff data for embedding in XML or HTTP
18     transactions:
20       window_consumer_func = svn_txdelta_to_vcdiff (txdelta_stream);
22  3. Loop until there are no more windows:
24       txdelta_window = svn_txdelta_next_window (txdelta_stream);
25       window_consumer_func (txdelta_window);
26       svn_txdelta_free_window (txdelta_window);
28     Be sure to call window_consumer_func with a NULL window when there
29     are no more windows to consume.
31  4. svn_txdelta_free (txdelta_stream);
35 To RECEIVE textdeltas
36 ---------------------
37 If implementing "apply_textdelta" within an editor:
39  1. Get window handler to apply the text delta:
41       apply_handler = svn_txdelta_apply (read_func, write_func)
43     where read_func reads from the delta source and write_func writes
44     to the target.
46  2. If you don't need to do any special cleanup, you can return
47     apply_handler to the caller directly.  If you do need to do
48     cleanup, write your own window_consumer_func which invokes
49     apply_handler.  In this case, your window handler will receive a
50     NULL window argument when there are no more windows to consume,
51     and you can do cleanup then.  Be sure to pass a NULL window to
52     apply_handler when that happens so that it can clean up its own
53     stuff.
55 If you want to receive raw vcdiff data from XML or HTTP transactions,
56 get or write a window consumer function and call:
58       vcdiff_parser = svn_make_vcdiff_parser (window_consumer_func);
60       Loop over vcdiff data:
61           svn_vcdiff_parse (vcdiff_parser, data);