Mercurial > hgsubversion
view tests/fixtures/externals.svndump @ 937:fb6f6b7fa5a5
editor: implement file batons
The concept of current.file is incorrect, svn_delta.h documents open
file lifetime as:
* 5. When the producer calls @c open_file or @c add_file, either:
*
* (a) The producer must follow with any changes to the file
* (@c change_file_prop and/or @c apply_textdelta, as applicable),
* followed by a @c close_file call, before issuing any other file
* or directory calls, or
*
* (b) The producer must follow with a @c change_file_prop call if
* it is applicable, before issuing any other file or directory
* calls; later, after all directory batons including the root
* have been closed, the producer must issue @c apply_textdelta
* and @c close_file calls.
So, an open file can be kept open until after the root directory is
closed and have deltas applied afterwards. In the meantime, other files
may have been opened and patched, overwriting the current.file variable.
This patch fixes it by introducing file batons bound to file paths, and
using them to deduce the correct target in apply_textdelta(). In theory,
open files could be put in a staging area until they are closed and
moved in the RevisionData. But the current code registers files copied
during a directory copy as open files and these will not receive a
close_file() event. This separation will be enforced later.
author | Patrick Mezard <patrick@mezard.eu> |
---|---|
date | Sun, 23 Sep 2012 19:52:48 +0200 |
parents | a5be5ca638de |
children |
line wrap: on
line source
SVN-fs-dump-format-version: 2 UUID: 2fcff1c7-6cef-40bf-9072-468ceec83032 Revision-number: 0 Prop-content-length: 56 Content-length: 56 K 8 svn:date V 27 2011-02-25T14:33:01.299441Z PROPS-END Revision-number: 1 Prop-content-length: 114 Content-length: 114 K 7 svn:log V 12 init project K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:01.321997Z PROPS-END Node-path: branches Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: externals Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: trunk Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Revision-number: 2 Prop-content-length: 130 Content-length: 130 K 7 svn:log V 28 configure externals projects K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:02.082464Z PROPS-END Node-path: externals/project1 Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: externals/project1/a Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 2 Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3 Text-content-sha1: 3f786850e387550fdab836ed7e6dc881de23001b Content-length: 12 PROPS-END a Node-path: externals/project2 Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: externals/project2/b Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 2 Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3 Text-content-sha1: 3f786850e387550fdab836ed7e6dc881de23001b Content-length: 12 PROPS-END a Revision-number: 3 Prop-content-length: 120 Content-length: 120 K 7 svn:log V 18 set externals on . K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:03.076026Z PROPS-END Node-path: trunk Node-kind: dir Node-action: change Prop-content-length: 70 Content-length: 70 K 13 svn:externals V 35 ^/externals/project1 deps/project1 PROPS-END Node-path: trunk/a Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 2 Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3 Text-content-sha1: 3f786850e387550fdab836ed7e6dc881de23001b Content-length: 12 PROPS-END a Revision-number: 4 Prop-content-length: 123 Content-length: 123 K 7 svn:log V 21 update externals on . K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:04.058124Z PROPS-END Node-path: trunk Node-kind: dir Node-action: change Prop-content-length: 169 Content-length: 169 K 13 svn:externals V 133 # A comment, then an empty line, then a blank line ^/externals/project1 deps/project1 -r2 ^/externals/project2@2 deps/project2 PROPS-END Revision-number: 5 Prop-content-length: 115 Content-length: 115 K 7 svn:log V 13 add on subdir K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:05.096545Z PROPS-END Node-path: trunk Node-kind: dir Node-action: change Prop-content-length: 76 Content-length: 76 K 13 svn:externals V 41 -r2 ^/externals/project2@2 deps/project2 PROPS-END Node-path: trunk/subdir Node-kind: dir Node-action: add Prop-content-length: 70 Content-length: 70 K 13 svn:externals V 35 ^/externals/project1 deps/project1 PROPS-END Node-path: trunk/subdir2 Node-kind: dir Node-action: add Prop-content-length: 70 Content-length: 70 K 13 svn:externals V 35 ^/externals/project1 deps/project1 PROPS-END Revision-number: 6 Prop-content-length: 122 Content-length: 122 K 7 svn:log V 20 externals in subtree K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:08.059874Z PROPS-END Node-path: branches/branch1 Node-kind: dir Node-action: add Node-copyfrom-rev: 5 Node-copyfrom-path: trunk Node-path: branches/branch1/subdir2 Node-kind: dir Node-action: change Prop-content-length: 10 Content-length: 10 PROPS-END Revision-number: 7 Prop-content-length: 139 Content-length: 139 K 7 svn:log V 37 externals in subtree, removed on root K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:10.059295Z PROPS-END Node-path: branches/branch2 Node-kind: dir Node-action: add Node-copyfrom-rev: 5 Node-copyfrom-path: trunk Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: branches/branch2/subdir2 Node-kind: dir Node-action: change Prop-content-length: 10 Content-length: 10 PROPS-END Revision-number: 8 Prop-content-length: 125 Content-length: 125 K 7 svn:log V 23 remove externals subdir K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:11.058317Z PROPS-END Node-path: trunk/subdir Node-action: delete Revision-number: 9 Prop-content-length: 126 Content-length: 126 K 7 svn:log V 24 remove externals subdir2 K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:12.058270Z PROPS-END Node-path: trunk/subdir2 Node-kind: dir Node-action: change Prop-content-length: 10 Content-length: 10 PROPS-END Revision-number: 10 Prop-content-length: 127 Content-length: 127 K 7 svn:log V 25 remove externals project2 K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:14.058780Z PROPS-END Node-path: externals/project2 Node-action: delete Revision-number: 11 Prop-content-length: 109 Content-length: 109 K 7 svn:log V 8 change a K 10 svn:author V 7 pmezard K 8 svn:date V 27 2011-02-25T14:33:15.045928Z PROPS-END Node-path: trunk/a Node-kind: file Node-action: change Text-content-length: 4 Text-content-md5: 0d227f1abf8c2932d342e9b99cc957eb Text-content-sha1: d7c8127a20a396cff08af086a1c695b0636f0c29 Content-length: 4 a a