You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2010/03/18 12:54:26 UTC

svn commit: r924735 - /subversion/trunk/notes/wc-ng/use-of-tmp-text-base-path

Author: julianfoad
Date: Thu Mar 18 11:54:26 2010
New Revision: 924735

URL: http://svn.apache.org/viewvc?rev=924735&view=rev
Log:
* notes/wc-ng/use-of-tmp-text-base-path: New file.

Added:
    subversion/trunk/notes/wc-ng/use-of-tmp-text-base-path

Added: subversion/trunk/notes/wc-ng/use-of-tmp-text-base-path
URL: http://svn.apache.org/viewvc/subversion/trunk/notes/wc-ng/use-of-tmp-text-base-path?rev=924735&view=auto
==============================================================================
--- subversion/trunk/notes/wc-ng/use-of-tmp-text-base-path (added)
+++ subversion/trunk/notes/wc-ng/use-of-tmp-text-base-path Thu Mar 18 11:54:26 2010
@@ -0,0 +1,118 @@
+
+Call graphs of the use of the WC-1 temporary text base path, as of r924197.
+
+This is to help us eliminate the use of this path and replace it with a more
+encapsulated way of refering to the new text base, as part of migration to a
+WC-NG pristine text store.
+
+
+PRIMARY USES
+============
+
+This call graph shows all the routes by which the WC-1 temporary text base
+path is obtained, and the extent to which it is propagated.
+
+
+                           svn_client_commit4()
+                                |       |^[T]        wc_to_repos_copy()
+                    +-----------+       +--------+         |
+                    |                           ^|         |
+                    |                       svn_client__do_commit()
+  LIBSVN_CLIENT     |                                ^|
+  ..........................................................................
+  LIBSVN_WC         |                                ^|
+                    |                                ^|
+  { svn_wc_process_committed_queue2() }              ^|
+  { svn_wc_process_committed4()       }              ^|
+           |                                         ^|
+    svn_wc__process_committed_internal()             ^|
+           |                                         ^|
+    process_committed_leaf()                         ^|
+           |                              svn_wc_transmit_text_deltas3()
+    svn_wc__wq_add_post_commit()                     ^|
+           |                         svn_wc__internal_transmit_text_deltas()
+    WQ:OP_POSTCOMMIT                                 ^|
+                                                     ^|
+    run_postcommit()                                 ^|
+           |                                         ^|
+    log_do_committed()                               ^|
+           |                                         ^|
+    install_committed_file()                         ^|
+      |         [T]^|                                ^|
+      |            ^|        +------------------------+
+      |            ^|        |^
+      |            ^|        |^
+      |            ^|        |^         { svn_wc_get_update_editor4() }
+      |            ^|        |^         { svn_wc_get_switch_editor4() }
+      |            ^|        |^               |  [1]
+      |            ^|        |^           make_editor()
+      |            ^|        |^                  *  [1]
+      |            ^|        |^                   *         EDITOR
+      |            ^|        |^                    *           |
+      |            ^|        |^                   apply_textdelta()  >>>>v
+      |            ^|        |^                      ^|  [2]             v
+      |            ^|        |^                      ^|                  v
+      |            ^|        |^                      ^|     HB->work_abspath
+      |    { svn_wc__text_base_path(tmp=TRUE) }      ^|           [3]
+      |    { svn_wc__open_writable_base()     } ------+
+      |    {   +--- open_adm_file()           }
+      +--- { svn_wc__sync_text_base()         }
+           { make_adm_subdir()                } --- initialization only
+                      |^
+                      |^
+             extend_with_adm_name(tmp=TRUE)
+
+
+UPDATE EDITOR
+=============
+
+This call graph shows all the uses of the WC-1 temporary text base path
+within the update editor.
+
+
+                         [2]
+                       v<<<<<       apply_textdelta()
+                       v
+              HB->work_abspath
+                       v
+                       v [3]        window_handler()
+                       v
+          FB->new_text_base_abspath
+                       v
+                       v>>>>>         close_file()
+                         [4]              |v
+                                      merge_file()
+                      --------------------------------------
+                        |v              |v      |v      |v
+    svn_wc__internal_\  |v              |v      |v      |v
+      versioned_file_modcheck()         |v      |v      |v
+          |v                 |          |v      |v      |v
+  svn_stream_open_readonly() |          |v      |v      |v
+                             |          |v      |v      |v
+              compare_and_verify()      |v      |v      |v
+                                        |v      |v      |v
+                        svn_wc__loggy_copy()    |v      |v
+                                                |v      |v
+                              svn_wc__internal_merge()  |v
+                                                        |v
+                                            install_text_base()
+                                                    |v
+                                            svn_wc__loggy_move()
+
+
+NOTES
+=====
+
+  All callers are shown if any are shown, except for deprecated wrappers.
+  ^,v,<,> indicates passing of the tmp text base path.
+  { ... } marks a group of functions that all call the same sub-function.
+  [T] Propagation terminates here.
+  [1] These just return an editor that points to
+      update_editor.c:apply_textdelta().  Calls to the editor are not shown.
+  [2] apply_textdelta() puts tmp text base path in HB->work_abspath only.
+  [3] window_handler() copies HB->work_abspath to
+      HB->fb->new_text_base_abspath when it is finished.  (It writes data to
+      a stream, not to the path.)  That is the only use of HB->work_abspath.
+  [4] close_file() passes FB->new_text_base_abspath to merge_file().  That
+      is the only use of FB->new_text_base_abspath.
+