Re: svn commit: r1170836 - in /subversion/trunk/subversion: include/ libsvn_client/ libsvn_delta/ libsvn_ra_neon/ libsvn_ra_serf/ libsvn_ra_svn/ libsvn_repos/ libsvn_wc/ svnrdump/ svnsync/ tests/libsv
Hyrum K Wright wrote on Wed, Sep 14, 2011 at 20:30:03 -0500: > On Wed, Sep 14, 2011 at 5:06 PM, Daniel Shahaf > wrote: > > The rest looks good. > > Thanks. In spite of my prickly attitude a couple of days ago, I do > appreciate the review. :) Thanks. That's the spirit it's intended in (even if I may sound otherwise...)
svn commit: r1170924 - /subversion/trunk/subversion/libsvn_delta/compat.c
Author: hwright Date: Thu Sep 15 01:59:11 2011 New Revision: 1170924 URL: http://svn.apache.org/viewvc?rev=1170924&view=rev Log: Add some skeleton code to facilitate Ev2 shim post-processing. (Note: this code doesn't actually run yet, since we segfault calling the NULL fetch_props_func in the delta editor part of the shim.) * subversion/libsvn_delta/compat.c (editor_baton): Add a paths hash and edit_pool. (set_props_cb): Add our path to the hash. (complete_cb): Sort the paths and iterate over them. (svn_editor_from_delta): Initialize a few baton members. Modified: subversion/trunk/subversion/libsvn_delta/compat.c Modified: subversion/trunk/subversion/libsvn_delta/compat.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_delta/compat.c?rev=1170924&r1=1170923&r2=1170924&view=diff == --- subversion/trunk/subversion/libsvn_delta/compat.c (original) +++ subversion/trunk/subversion/libsvn_delta/compat.c Thu Sep 15 01:59:11 2011 @@ -561,6 +561,9 @@ struct editor_baton { const svn_delta_editor_t *deditor; void *dedit_baton; + + apr_hash_t *paths; + apr_pool_t *edit_pool; }; /* This implements svn_editor_cb_add_directory_t */ @@ -618,6 +621,10 @@ set_props_cb(void *baton, svn_boolean_t complete, apr_pool_t *scratch_pool) { + struct editor_baton *eb = baton; + apr_hash_set(eb->paths, apr_pstrdup(eb->edit_pool, relpath), + APR_HASH_KEY_STRING, (void *)0xdeadbeef); + return SVN_NO_ERROR; } @@ -684,6 +691,24 @@ complete_cb(void *baton, apr_pool_t *scratch_pool) { struct editor_baton *eb = baton; + apr_array_header_t *sorted_hash; + int i; + + /* Sort the paths touched by this edit. + * Ev2 doesn't really have any particular need for depth-first-ness, but + * we want to ensure all parent directories are handled before children in + * the case of adds (which does introduce an element of depth-first-ness). */ + sorted_hash = svn_sort__hash(eb->paths, svn_sort_compare_items_as_paths, + scratch_pool); + + for (i = 0; i < sorted_hash->nelts; i++) +{ + svn_sort__item_t *item = &APR_ARRAY_IDX(sorted_hash, i, svn_sort__item_t); + const char *path = item->key; + + /* ### We should actually do something here, but for now... */ +} + return svn_error_trace(eb->deditor->close_edit(eb->dedit_baton, scratch_pool)); } @@ -726,6 +751,8 @@ svn_editor_from_delta(svn_editor_t **edi eb->deditor = deditor; eb->dedit_baton = dedit_baton; + eb->edit_pool = result_pool; + eb->paths = apr_hash_make(result_pool); SVN_ERR(svn_editor_create(&editor, eb, cancel_func, cancel_baton, result_pool, scratch_pool));
svn commit: r1170919 - /subversion/trunk/subversion/libsvn_delta/compat.c
Author: hwright Date: Thu Sep 15 01:42:51 2011 New Revision: 1170919 URL: http://svn.apache.org/viewvc?rev=1170919&view=rev Log: Capture and use the target revision value in the Ev2 shim. * subversion/libsvn_delta/compat.c (ev2_edit_baton): New member. (ev2_set_target_revision): Update value. (process_actions): Use the target revision. (svn_delta_from_editor): Initialize target revision. Modified: subversion/trunk/subversion/libsvn_delta/compat.c Modified: subversion/trunk/subversion/libsvn_delta/compat.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_delta/compat.c?rev=1170919&r1=1170918&r2=1170919&view=diff == --- subversion/trunk/subversion/libsvn_delta/compat.c (original) +++ subversion/trunk/subversion/libsvn_delta/compat.c Thu Sep 15 01:42:51 2011 @@ -93,6 +93,7 @@ struct ev2_edit_baton { svn_editor_t *editor; apr_hash_t *paths; + svn_revnum_t target_revision; apr_pool_t *edit_pool; svn_delta_fetch_props_cb_func_t fetch_props_func; void *fetch_props_baton; @@ -163,6 +164,8 @@ ev2_set_target_revision(void *edit_baton apr_pool_t *scratch_pool) { struct ev2_edit_baton *eb = edit_baton; + + eb->target_revision = target_revision; return SVN_NO_ERROR; } @@ -464,7 +467,7 @@ process_actions(void *edit_baton, } /* This point, PROPS will contain all the props for this node. */ - SVN_ERR(svn_editor_set_props(eb->editor, path, SVN_INVALID_REVNUM, + SVN_ERR(svn_editor_set_props(eb->editor, path, eb->target_revision, props, TRUE)); } @@ -542,6 +545,7 @@ svn_delta_from_editor(const svn_delta_ed eb->editor = editor; eb->paths = apr_hash_make(pool); + eb->target_revision = SVN_INVALID_REVNUM; eb->edit_pool = pool; eb->fetch_props_func = fetch_props_func; eb->fetch_props_baton = fetch_props_baton;
Re: svn commit: r1170836 - in /subversion/trunk/subversion: include/ libsvn_client/ libsvn_delta/ libsvn_ra_neon/ libsvn_ra_serf/ libsvn_ra_svn/ libsvn_repos/ libsvn_wc/ svnrdump/ svnsync/ tests/libsv
On Wed, Sep 14, 2011 at 5:06 PM, Daniel Shahaf wrote: > hwri...@apache.org wrote on Wed, Sep 14, 2011 at 20:28:39 -: >> @@ -240,12 +243,19 @@ ev2_change_dir_prop(void *dir_baton, >> apr_pool_t *scratch_pool) >> { >> struct ev2_dir_baton *db = dir_baton; >> - struct prop_args *p_args = apr_palloc(db->eb->edit_pool, sizeof(*p_args)); >> >> - p_args->name = apr_pstrdup(db->eb->edit_pool, name); >> - p_args->value = value ? svn_string_dup(value, db->eb->edit_pool) : NULL; >> + if (value) >> + { >> + struct prop_args *p_args = apr_palloc(db->eb->edit_pool, >> sizeof(*p_args)); >> + >> + p_args->name = apr_pstrdup(db->eb->edit_pool, name); >> + p_args->value = value ? svn_string_dup(value, db->eb->edit_pool) : >> NULL; > > The NULL will never be evaluated. (also in ev2_change_file_prop()) Good catch, fixed in r1170915. > The rest looks good. Thanks. In spite of my prickly attitude a couple of days ago, I do appreciate the review. :) -Hyrum -- uberSVN: Apache Subversion Made Easy http://www.uberSVN.com/
svn commit: r1170915 - /subversion/trunk/subversion/libsvn_delta/compat.c
Author: hwright Date: Thu Sep 15 01:28:19 2011 New Revision: 1170915 URL: http://svn.apache.org/viewvc?rev=1170915&view=rev Log: Remove a superfluous trinary operator. Found by: danielsh * subversion/libsvn_delta/compat.c (ev2_change_dir_prop, ev2_change_file_prop): Remove unneeded ?: operation. Modified: subversion/trunk/subversion/libsvn_delta/compat.c Modified: subversion/trunk/subversion/libsvn_delta/compat.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_delta/compat.c?rev=1170915&r1=1170914&r2=1170915&view=diff == --- subversion/trunk/subversion/libsvn_delta/compat.c (original) +++ subversion/trunk/subversion/libsvn_delta/compat.c Thu Sep 15 01:28:19 2011 @@ -250,7 +250,7 @@ ev2_change_dir_prop(void *dir_baton, struct prop_args *p_args = apr_palloc(db->eb->edit_pool, sizeof(*p_args)); p_args->name = apr_pstrdup(db->eb->edit_pool, name); - p_args->value = value ? svn_string_dup(value, db->eb->edit_pool) : NULL; + p_args->value = svn_string_dup(value, db->eb->edit_pool); SVN_ERR(add_action(db->eb, db->path, set_prop, p_args)); } @@ -346,7 +346,7 @@ ev2_change_file_prop(void *file_baton, { struct prop_args *p_args = apr_palloc(fb->eb->edit_pool, sizeof(*p_args)); p_args->name = apr_pstrdup(fb->eb->edit_pool, name); - p_args->value = value ? svn_string_dup(value, fb->eb->edit_pool) : NULL; + p_args->value = svn_string_dup(value, fb->eb->edit_pool); SVN_ERR(add_action(fb->eb, fb->path, set_prop, p_args)); }
svn commit: r1170868 - /subversion/trunk/subversion/libsvn_client/ra.c
Author: danielsh Date: Wed Sep 14 22:10:58 2011 New Revision: 1170868 URL: http://svn.apache.org/viewvc?rev=1170868&view=rev Log: * subversion/libsvn_client/ra.c: Fix whitespace. Modified: subversion/trunk/subversion/libsvn_client/ra.c Modified: subversion/trunk/subversion/libsvn_client/ra.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/ra.c?rev=1170868&r1=1170867&r2=1170868&view=diff == --- subversion/trunk/subversion/libsvn_client/ra.c (original) +++ subversion/trunk/subversion/libsvn_client/ra.c Wed Sep 14 22:10:58 2011 @@ -368,7 +368,7 @@ svn_client__open_ra_session_internal(svn } return SVN_NO_ERROR; - } +} #undef SVN_CLIENT__MAX_REDIRECT_ATTEMPTS
Re: svn commit: r1170836 - in /subversion/trunk/subversion: include/ libsvn_client/ libsvn_delta/ libsvn_ra_neon/ libsvn_ra_serf/ libsvn_ra_svn/ libsvn_repos/ libsvn_wc/ svnrdump/ svnsync/ tests/libsv
hwri...@apache.org wrote on Wed, Sep 14, 2011 at 20:28:39 -: > @@ -240,12 +243,19 @@ ev2_change_dir_prop(void *dir_baton, > apr_pool_t *scratch_pool) > { >struct ev2_dir_baton *db = dir_baton; > - struct prop_args *p_args = apr_palloc(db->eb->edit_pool, sizeof(*p_args)); > > - p_args->name = apr_pstrdup(db->eb->edit_pool, name); > - p_args->value = value ? svn_string_dup(value, db->eb->edit_pool) : NULL; > + if (value) > +{ > + struct prop_args *p_args = apr_palloc(db->eb->edit_pool, > sizeof(*p_args)); > + > + p_args->name = apr_pstrdup(db->eb->edit_pool, name); > + p_args->value = value ? svn_string_dup(value, db->eb->edit_pool) : > NULL; The NULL will never be evaluated. (also in ev2_change_file_prop()) The rest looks good.
svn commit: r1170863 - /subversion/trunk/subversion/libsvn_delta/compat.c
Author: hwright Date: Wed Sep 14 21:59:08 2011 New Revision: 1170863 URL: http://svn.apache.org/viewvc?rev=1170863&view=rev Log: * subversion/libsvn_delta/compat.c (ev2_open_root): Set the path value. Modified: subversion/trunk/subversion/libsvn_delta/compat.c Modified: subversion/trunk/subversion/libsvn_delta/compat.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_delta/compat.c?rev=1170863&r1=1170862&r2=1170863&view=diff == --- subversion/trunk/subversion/libsvn_delta/compat.c (original) +++ subversion/trunk/subversion/libsvn_delta/compat.c Wed Sep 14 21:59:08 2011 @@ -176,6 +176,7 @@ ev2_open_root(void *edit_baton, struct ev2_edit_baton *eb = edit_baton; db->eb = eb; + db->path = ""; *root_baton = db; return SVN_NO_ERROR;
svn commit: r1170843 - /subversion/trunk/subversion/libsvn_delta/compat.c
Author: hwright Date: Wed Sep 14 20:43:21 2011 New Revision: 1170843 URL: http://svn.apache.org/viewvc?rev=1170843&view=rev Log: Move post-edit processing into it's own function for clarity. No functional change. * subversion/libsvn_delta/compat.c (process_actions): New. (ev2_close_edit): Call the new function, rather than embed it. Modified: subversion/trunk/subversion/libsvn_delta/compat.c Modified: subversion/trunk/subversion/libsvn_delta/compat.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_delta/compat.c?rev=1170843&r1=1170842&r2=1170843&view=diff == --- subversion/trunk/subversion/libsvn_delta/compat.c (original) +++ subversion/trunk/subversion/libsvn_delta/compat.c Wed Sep 14 20:43:21 2011 @@ -375,6 +375,102 @@ ev2_absent_file(const char *path, } static svn_error_t * +process_actions(void *edit_baton, +const char *path, +apr_array_header_t *actions, +apr_pool_t *scratch_pool) +{ + struct ev2_edit_baton *eb = edit_baton; + apr_array_header_t *removed_props = NULL; + apr_hash_t *props = NULL; + int i; + + /* Go through all of our actions, populating various datastructures + * dependent on them. */ + for (i = 0; i < actions->nelts; i++) +{ + struct path_action *action = APR_ARRAY_IDX(actions, i, + struct path_action *); + + switch (action->action) +{ + case set_prop: +{ + struct prop_args *p_args = action->args; + + if (!props) +props = apr_hash_make(scratch_pool); + + apr_hash_set(props, p_args->name, APR_HASH_KEY_STRING, + p_args->value); + break; +} + + case remove_prop: +{ + const char *name = action->args; + + if (!removed_props) +removed_props = apr_array_make(scratch_pool, 1, + sizeof(const char *)); + + APR_ARRAY_PUSH(removed_props, const char *) = name; + break; +} + + case delete: +{ + svn_revnum_t *revnum = action->args; + + /* If we get a delete, we'd better not have gotten any + other actions for this path later, so we can go ahead + and call our handler. */ + SVN_ERR(svn_editor_delete(eb->editor, path, *revnum)); + break; +} + + default: +break; +} +} + + /* We've now got a wholistic view of what has happened to this node, + * so we can call our own editor APIs on it. */ + + if (props || removed_props) +{ + /* If we've seen any prop mods, we're going to need to fetch the + existing props so that we can properly drive the editor method + below. */ + apr_hash_t *existing_props; + + SVN_ERR(eb->fetch_props_func(&existing_props, eb->fetch_props_baton, + path, scratch_pool)); + if (props) +props = apr_hash_overlay(scratch_pool, props, existing_props); + else +props = existing_props; + + /* Now delete any props which were deleted in our drive. */ + if (removed_props) +{ + for (i = 0; i < removed_props->nelts; i++) +{ + const char *name = APR_ARRAY_IDX(removed_props, i, + const char *); + apr_hash_set(props, name, APR_HASH_KEY_STRING, NULL); +} +} + + /* This point, PROPS will contain all the props for this node. */ + SVN_ERR(svn_editor_set_props(eb->editor, path, SVN_INVALID_REVNUM, + props, TRUE)); +} + + return SVN_NO_ERROR; +} + +static svn_error_t * ev2_close_edit(void *edit_baton, apr_pool_t *scratch_pool) { @@ -396,95 +492,9 @@ ev2_close_edit(void *edit_baton, svn_sort__item_t *item = &APR_ARRAY_IDX(sorted_hash, i, svn_sort__item_t); apr_array_header_t *actions = item->value; const char *path = item->key; - apr_array_header_t *removed_props = NULL; - apr_hash_t *props = NULL; - int j; svn_pool_clear(iterpool); - - /* Go through all of our actions, populating various datastructures - * dependent on them. */ - for (j = 0; j < actions->nelts; j++) -{ - struct path_action *action = APR_ARRAY_IDX(actions, j, - struct path_action *); - - switch (action->action) -{ - case set_prop: -{ - struct prop_args *p_args = action->args; - - if (!props) -props = apr_hash_make(iterpool); - - apr_hash_set(props, p_
svn commit: r1170838 - /subversion/trunk/subversion/include/svn_editor.h
Author: hwright Date: Wed Sep 14 20:33:34 2011 New Revision: 1170838 URL: http://svn.apache.org/viewvc?rev=1170838&view=rev Log: * subversion/include/svn_editor.h (svn_editor_set_props): Update docstring in answer to a question, and remove said question. Modified: subversion/trunk/subversion/include/svn_editor.h Modified: subversion/trunk/subversion/include/svn_editor.h URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_editor.h?rev=1170838&r1=1170837&r2=1170838&view=diff == --- subversion/trunk/subversion/include/svn_editor.h (original) +++ subversion/trunk/subversion/include/svn_editor.h Wed Sep 14 20:33:34 2011 @@ -771,13 +771,8 @@ svn_editor_add_absent(svn_editor_t *edit /** Drive @a editor's #svn_editor_cb_set_props_t callback. * - * Set or change properties on the existing node at @a relpath. - * ### TODO @todo Does this send *all* properties, always? - * ### HKW: The purist in me says "yes", but the pragmatist says "no". - * ### Writing a backward compat shim is going to be next to impossible, - * ### since we've no way to know about existing props while receiving - * ### props from the delta editor. - * ### + * Set or change properties on the existing node at @a relpath. This + * function sends *all* properties, both existing and changes. * ### TODO @todo What is REVISION for? * ### HKW: This is puzzling to me as well... * ###
svn commit: r1170836 - in /subversion/trunk/subversion: include/ libsvn_client/ libsvn_delta/ libsvn_ra_neon/ libsvn_ra_serf/ libsvn_ra_svn/ libsvn_repos/ libsvn_wc/ svnrdump/ svnsync/ tests/libsvn_de
Author: hwright Date: Wed Sep 14 20:28:39 2011 New Revision: 1170836 URL: http://svn.apache.org/viewvc?rev=1170836&view=rev Log: Add a prop fetching callback to the Ev2 shim code. This allows the shim to retrieve existing props in order to set the new ones. * subversion/libsvn_ra_svn/editorp.c, subversion/libsvn_ra_neon/commit.c, subversion/svnsync/main.c, subversion/svnrdump/dump_editor.c, subversion/tests/libsvn_delta/editor-test.c, subversion/libsvn_wc/diff_editor.c, subversion/libsvn_wc/update_editor.c, subversion/libsvn_wc/status.c, subversion/libsvn_client/repos_diff.c, subversion/libsvn_client/mergeinfo.c, subversion/libsvn_client/export.c, subversion/libsvn_client/commit.c, subversion/libsvn_ra_serf/commit.c, subversion/libsvn_repos/commit.c, subversion/libsvn_repos/dump.c: Update callers. * subversion/include/svn_delta.h (svn_delta_fetch_props_cb_func_t): New. (svn_delta_from_editor, svn_editor__insert_shims): Add callback and baton. * subversion/libsvn_delta/compat.c (ev2_edit_baton): Add callback and baton member. (action): Add the remove_prop action. (ev2_change_dir_prop, ev2_change_file_prop): Differentiate between a changed or added prop and a removed one (since we can't store removed props in a hash). (ev2_close_edit): Handle removed props properly, and fetch the existing props to ensure we don't nuke existing properties. (svn_delta_from_editor): Take and store the prop fetch callback. (svn_editor__insert_shims): Take and use the prop fetch callback. Modified: subversion/trunk/subversion/include/svn_delta.h subversion/trunk/subversion/libsvn_client/commit.c subversion/trunk/subversion/libsvn_client/export.c subversion/trunk/subversion/libsvn_client/mergeinfo.c subversion/trunk/subversion/libsvn_client/repos_diff.c subversion/trunk/subversion/libsvn_delta/compat.c subversion/trunk/subversion/libsvn_ra_neon/commit.c subversion/trunk/subversion/libsvn_ra_serf/commit.c subversion/trunk/subversion/libsvn_ra_svn/editorp.c subversion/trunk/subversion/libsvn_repos/commit.c subversion/trunk/subversion/libsvn_repos/dump.c subversion/trunk/subversion/libsvn_wc/diff_editor.c subversion/trunk/subversion/libsvn_wc/status.c subversion/trunk/subversion/libsvn_wc/update_editor.c subversion/trunk/subversion/svnrdump/dump_editor.c subversion/trunk/subversion/svnsync/main.c subversion/trunk/subversion/tests/libsvn_delta/editor-test.c Modified: subversion/trunk/subversion/include/svn_delta.h URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_delta.h?rev=1170836&r1=1170835&r2=1170836&view=diff == --- subversion/trunk/subversion/include/svn_delta.h (original) +++ subversion/trunk/subversion/include/svn_delta.h Wed Sep 14 20:28:39 2011 @@ -1086,6 +1086,18 @@ typedef struct svn_delta_editor_t svn_delta_editor_t * svn_delta_default_editor(apr_pool_t *pool); +/** Callback to retrieve a node's entire set of properties. This is + * needed by the various editor shims in order to effect backward compat. + * + * @since New in 1.8. + */ +typedef svn_error_t *(*svn_delta_fetch_props_cb_func_t)( + apr_hash_t **props, + void *baton, + const char *path, + apr_pool_t *scratch_pool + ); + /* Return a delta editor and baton which will forward calls to @a editor, * allocated in @a pool. * @@ -1100,6 +1112,8 @@ svn_error_t * svn_delta_from_editor(const svn_delta_editor_t **deditor, void **dedit_baton, svn_editor_t *editor, + svn_delta_fetch_props_cb_func_t fetch_props_func, + void *fetch_props_baton, apr_pool_t *pool); /* Return an editor allocated in @a result_pool which will forward calls @@ -1137,6 +1151,8 @@ svn_editor__insert_shims(const svn_delta void **dedit_baton_out, const svn_delta_editor_t *deditor_in, void *dedit_baton_in, + svn_delta_fetch_props_cb_func_t fetch_props_func, + void *fetch_props_baton, apr_pool_t *result_pool, apr_pool_t *scratch_pool); Modified: subversion/trunk/subversion/libsvn_client/commit.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/commit.c?rev=1170836&r1=1170835&r2=1170836&view=diff == --- subversion/trunk/subversion/libsvn_client/commit.c (original) +++ subversion/trunk/subversion/libsvn_client/commit.c Wed Sep 14 20:28:39 2011 @@ -673,7 +673,7 @@ get_ra_editor(svn_ra_session_t **ra_sess pool)); SVN_ERR(svn_editor__insert_shims(editor, edit_baton, *editor, *edit_baton, - pool, po
svn propchange: r1170776 - svn:log
Author: hwright Revision: 1170776 Modified property: svn:log Modified: svn:log at Wed Sep 14 19:34:29 2011 -- --- svn:log (original) +++ svn:log Wed Sep 14 19:34:29 2011 @@ -1,4 +1,4 @@ -Update news sections of the website to reflect 1.7.0-alpha2. +Update news sections of the website to reflect 1.7.0-rc3. * publish/news.html (news-20110914): New.
svn commit: r1170776 - in /subversion/site/publish: index.html news.html
Author: hwright Date: Wed Sep 14 19:12:04 2011 New Revision: 1170776 URL: http://svn.apache.org/viewvc?rev=1170776&view=rev Log: Update news sections of the website to reflect 1.7.0-alpha2. * publish/news.html (news-20110914): New. * publish/index.html (news-20110914): New. (news-20110724): Remove. Modified: subversion/site/publish/index.html subversion/site/publish/news.html Modified: subversion/site/publish/index.html URL: http://svn.apache.org/viewvc/subversion/site/publish/index.html?rev=1170776&r1=1170775&r2=1170776&view=diff == --- subversion/site/publish/index.html (original) +++ subversion/site/publish/index.html Wed Sep 14 19:12:04 2011 @@ -64,6 +64,32 @@ + +2011-09-14 — Apache Subversion 1.7.0-rc3 Released + ¶ + + +We are pleased to announce to release of Apache Subversion 1.7.0-rc3. This + is another release candidate of Subversion 1.7.0 and is thought to be free + of blocking issues. If none are found will become the final release. For + this reason, we encourage thorough testing in as many environments as + possible. This release candidate continues the four-week "soak" period to + allow for further testing, and barring show-stopping bugs, the final + 1.7.0 release can be expected on or near Sept. 28. + +Please see the + http://svn.haxx.se/dev/archive-2011-09/0358.shtml";>release + announcement for more information about this release, and the + release notes and + http://svn.apache.org/repos/asf/subversion/tags/1.7.0-rc3/CHANGES";> + change log for information about the 1.7.0 release. + +To get this release from the nearest mirror, please visit our + download page. + + + 2011-08-31 — Apache Subversion 1.7.0-rc2 Released - -2011-07-24 — Apache Subversion 1.7.0-beta2 Released - ¶ - - -We are pleased to announce to release of Apache Subversion 1.7.0-beta2. This - release is not intended for production use, but we believe it to be free of - critical issues, and encourage wider testing and feedback from intrepid users - and maintainers. Please see the - http://svn.haxx.se/dev/archive-2011-07/0696.shtml";>release - announcement for more information about this release, and the - release notes and - http://svn.apache.org/repos/asf/subversion/tags/1.7.0-beta2/CHANGES";> - change log for information about what will eventually be - in the 1.7.0 release. - -To get this release from the nearest mirror, please visit our - download page. - -(Note: For those keeping score at home, this is the first 1.7.0 beta - release; 1.7.0-beta1 was not officially released.) - - - [Click here to see all News Modified: subversion/site/publish/news.html URL: http://svn.apache.org/viewvc/subversion/site/publish/news.html?rev=1170776&r1=1170775&r2=1170776&view=diff == --- subversion/site/publish/news.html (original) +++ subversion/site/publish/news.html Wed Sep 14 19:12:04 2011 @@ -22,6 +22,32 @@ + +2011-09-14 — Apache Subversion 1.7.0-rc3 Released + ¶ + + +We are pleased to announce to release of Apache Subversion 1.7.0-rc3. This + is another release candidate of Subversion 1.7.0 and is thought to be free + of blocking issues. If none are found will become the final release. For + this reason, we encourage thorough testing in as many environments as + possible. This release candidate continues the four-week "soak" period to + allow for further testing, and barring show-stopping bugs, the final + 1.7.0 release can be expected on or near Sept. 28. + +Please see the + http://svn.haxx.se/dev/archive-2011-09/0358.shtml";>release + announcement for more information about this release, and the + release notes and + http://svn.apache.org/repos/asf/subversion/tags/1.7.0-rc3/CHANGES";> + change log for information about the 1.7.0 release. + +To get this release from the nearest mirror, please visit our + download page. + + + 2011-08-31 — Apache Subversion 1.7.0-rc2 Released
svn commit: r1170762 - /subversion/site/publish/download/download.html
Author: hwright Date: Wed Sep 14 18:40:57 2011 New Revision: 1170762 URL: http://svn.apache.org/viewvc?rev=1170762&view=rev Log: * publish/download/download.html: Update the website with 1.7.0-rc3. Modified: subversion/site/publish/download/download.html Modified: subversion/site/publish/download/download.html URL: http://svn.apache.org/viewvc/subversion/site/publish/download/download.html?rev=1170762&r1=1170761&r2=1170762&view=diff == --- subversion/site/publish/download/download.html (original) +++ subversion/site/publish/download/download.html Wed Sep 14 18:40:57 2011 @@ -169,7 +169,7 @@ Other mirrors: -Subversion 1.7.0-rc2 +Subversion 1.7.0-rc3 File @@ -177,17 +177,17 @@ Other mirrors: Signatures - subversion-1.7.0-rc2.tar.bz2 - 691fd19a88908b10f4a96cbbd930ed359543d18b - [http://www.apache.org/dist/subversion/subversion-1.7.0-rc2.tar.bz2.asc";>PGP] + subversion-1.7.0-rc3.zip + 0a1e80426720233bfdb8aaab1d97e3e8bd3ae82c + [http://www.apache.org/dist/subversion/subversion-1.7.0-rc3.zip.asc";>PGP] - subversion-1.7.0-rc2.tar.gz - 261ae261bebce283ec3f4941641a536c7ffe7df2 - [http://www.apache.org/dist/subversion/subversion-1.7.0-rc2.tar.gz.asc";>PGP] + subversion-1.7.0-rc3.tar.bz2 + 37c44ac69b132749deece46f853fdbfbe4d8b417 + [http://www.apache.org/dist/subversion/subversion-1.7.0-rc3.tar.bz2.asc";>PGP] - subversion-1.7.0-rc2.zip - e2b3d54b5aafc0414657d88646df8575801ee158 - [http://www.apache.org/dist/subversion/subversion-1.7.0-rc2.zip.asc";>PGP] + subversion-1.7.0-rc3.tar.gz + 6c62df9f66a9eb71df055ad8794e887716cd04a6 + [http://www.apache.org/dist/subversion/subversion-1.7.0-rc3.tar.gz.asc";>PGP]
svn commit: r1170669 - in /subversion/branches/1.7.x: ./ STATUS subversion/libsvn_wc/wc-queries.sql subversion/libsvn_wc/wc_db.c subversion/tests/cmdline/externals_tests.py
Author: hwright Date: Wed Sep 14 15:04:41 2011 New Revision: 1170669 URL: http://svn.apache.org/viewvc?rev=1170669&view=rev Log: Reintegrate the 1.7.x-r1163557 branch: * r1163557 Relax wcng consistency checks for file externals. Justification: Debug build claims wcng DB is inconsistent when it is OK. Branch: 1.7.x-r1163557 Votes: +1: philip, rhuijben, neels Modified: subversion/branches/1.7.x/ (props changed) subversion/branches/1.7.x/STATUS subversion/branches/1.7.x/subversion/libsvn_wc/wc-queries.sql subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.c subversion/branches/1.7.x/subversion/tests/cmdline/externals_tests.py Propchange: subversion/branches/1.7.x/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Sep 14 15:04:41 2011 @@ -8,6 +8,7 @@ /subversion/branches/1.7.x-r1152189:1152759-1154249 /subversion/branches/1.7.x-r1155160:1158704-1159223 /subversion/branches/1.7.x-r1159093:1159097-1159230 +/subversion/branches/1.7.x-r1163557:1163574-1170648 /subversion/branches/atomic-revprop:965046-1000689 /subversion/branches/bdb-reverse-deltas:872050-872529 /subversion/branches/diff-callbacks3:870059-870761 @@ -63,4 +64,4 @@ /subversion/branches/tree-conflicts:868291-873154 /subversion/branches/tree-conflicts-notify:873926-874008 /subversion/branches/uris-as-urls:1060426-1064427 -/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148853,1148877,1148882,1148936,1149105,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,1156085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158187,115 8193-1158194,1158196,1158201,1158207,1158209-1158210,1158217,1158285,1158288,1158303,1158309,1158407,1158419,1158421,1158436,1158455,1158616-1158617,1158634,1158854,1158875,1158886,1158893,1158896,1158919,1158924,1158963,1159093,1159098,1159101,1159132,1159136,1159148,1159230,1159275,1159400,1159686,1159760,1159772,1160605,1160671,1160682,1160704-1160705,1160756,1161063,1161080,1161185,1161210,1161683,1161721,1162024,1162033,1162201,1162516,1162880,1163792,1163953,1164027,1164517,1164535,1164554,1164580,1164645,1164760,1164765,1166500,1166555,1166678,1167062,1167173,1167209,1167269 +/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148853,1148877,1148882,1148936,1149105,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,1156085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158187,115 8193-1158194,1158196,1158201,1158207,1158209-1158210,1158217,1158285,1158288,1158303,1158309,1158407,1158419,1158421,1158436,1158455,1158616-1158617,1158634,1158854,1158875,1158886,1158893,1158896,1158919,1158924,1158963,1159093,1159098,1159101,1159132,1159136,1159148,1159230,1159275,1159400,1159686,1159760,1159772,1160605,1160671,1160682,1160704-1160705,1160756,1161063,1161080,1161185,1161210,1161683,1161721,1162024,1162033,1162201,1162516,1162880,1163557,1163792,1163953,1164027,1164517,1164535,1164554,1164580,1164645,1164760,1164765,1166500,1166555,1166678,1167062,1167173,1167209,1167269 Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1170669&r1=1170668&r2=1170669&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Wed Sep 14 15:04:41 2011 @@ -138,12 +138,3 @@ Veto-blocked chang
svn commit: r1170642 - /subversion/branches/1.7.x/STATUS
Author: neels Date: Wed Sep 14 14:29:45 2011 New Revision: 1170642 URL: http://svn.apache.org/viewvc?rev=1170642&view=rev Log: * STATUS: Vote thrice, approves of r1163557. Changed a +0 to a +1. I thought I'd have more file-in-unversioned-externals fixes ready in a short time to go along, but still not there. So let's get this one out of STATUS, even if it just fixes a small maintainer-mode bug. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1170642&r1=1170641&r2=1170642&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Wed Sep 14 14:29:45 2011 @@ -86,18 +86,6 @@ Candidate changes: Votes: +1: pburba - * r1163557 - Relax wcng consistency checks for file externals. - Justification: - Debug build claims wcng DB is inconsistent when it is OK. - Branch: - 1.7.x-r1163557 - Votes: - +1: philip, rhuijben - +0: neels (Much other code still dismally fails at file externals in -unversioned dirs, e.g. 'status', 'commit'. This apparently -only fixes maintainer-mode 'svn cleanup', IMHO low prio.) - * r1164386 Avoid an expensive database operation in 'svn info'. Justification: @@ -134,7 +122,7 @@ Candidate changes: Justification: Upgrade with file externals breaks working copies. Votes: - +1: philip + +1: philip, neels * r1169650 Make relocate act recursively on all externals, not just immediate ones. @@ -143,10 +131,19 @@ Candidate changes: Notes: Depends on issue 4015 merge. Votes: - +1: philip + +1: philip, neels Veto-blocked changes: = Approved changes: = + + * r1163557 + Relax wcng consistency checks for file externals. + Justification: + Debug build claims wcng DB is inconsistent when it is OK. + Branch: + 1.7.x-r1163557 + Votes: + +1: philip, rhuijben, neels
svn commit: r1170628 - in /subversion/branches/fs-py/subversion/libsvn_fs_py: ./ fs_fs.c tree.c
Author: hwright Date: Wed Sep 14 13:56:48 2011 New Revision: 1170628 URL: http://svn.apache.org/viewvc?rev=1170628&view=rev Log: On the fs-py branch: Bring libsvn_fs_py up-to-date with libsvn_fs_fs. Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/ (props changed) subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c Propchange: subversion/branches/fs-py/subversion/libsvn_fs_py/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Sep 14 13:56:48 2011 @@ -8,7 +8,7 @@ /subversion/branches/double-delete/subversion/libsvn_fs_py:870511-872970 /subversion/branches/explore-wc/subversion/libsvn_fs_py:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997 /subversion/branches/file-externals/subversion/libsvn_fs_py:871779-873302 -/subversion/branches/fs-py/subversion/libsvn_fs_fs:1154225-1163246 +/subversion/branches/fs-py/subversion/libsvn_fs_fs:1154225-1170625 /subversion/branches/fs-rep-sharing/subversion/libsvn_fs_py:869036-873803 /subversion/branches/fsfs-pack/subversion/libsvn_fs_py:873717-874575 /subversion/branches/gnome-keyring/subversion/libsvn_fs_py:870558-871410 Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c?rev=1170628&r1=1170627&r2=1170628&view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c Wed Sep 14 13:56:48 2011 @@ -148,6 +148,9 @@ read_min_unpacked_rev(svn_revnum_t *min_ static svn_error_t * update_min_unpacked_rev(svn_fs_t *fs, apr_pool_t *pool); +static svn_error_t * +get_youngest(svn_revnum_t *youngest_p, const char *fs_path, apr_pool_t *pool); + /* Pathname helper functions */ /* Return TRUE is REV is packed in FS, FALSE otherwise. */ @@ -617,15 +620,13 @@ with_some_lock(svn_fs_t *fs, if (!err) { fs_fs_data_t *ffd = fs->fsap_data; + svn_revnum_t youngest; int format; SVN_ERR(svn_fs_py__get_int_attr(&format, ffd->p_fs, "format")); if (format >= SVN_FS_FS__MIN_PACKED_FORMAT) SVN_ERR(update_min_unpacked_rev(fs, pool)); -#if 0 /* Might be a good idea? */ - SVN_ERR(get_youngest(&ffd->youngest_rev_cache, fs->path, - pool)); -#endif + SVN_ERR(svn_fs_py__youngest_rev(&youngest, fs, pool)); err = body(baton, subpool); } @@ -1213,9 +1214,6 @@ update_min_unpacked_rev(svn_fs_t *fs, ap pool); } -static svn_error_t * -get_youngest(svn_revnum_t *youngest_p, const char *fs_path, apr_pool_t *pool); - svn_error_t * svn_fs_py__open(svn_fs_t *fs, const char *path, apr_pool_t *pool) { @@ -6926,7 +6924,6 @@ struct change_rev_prop_baton { /* The work-horse for svn_fs_py__change_rev_prop, called with the FS write lock. This implements the svn_fs_py__with_write_lock() 'body' callback type. BATON is a 'struct change_rev_prop_baton *'. */ - static svn_error_t * change_rev_prop_body(void *baton, apr_pool_t *pool) { Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c?rev=1170628&r1=1170627&r2=1170628&view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c Wed Sep 14 13:56:48 2011 @@ -1728,7 +1728,7 @@ fs_delete_node(svn_fs_root_t *root, { parent_path_t *parent_path; const char *txn_id = root->txn; - apr_int64_t mergeinfo_count; + apr_int64_t mergeinfo_count = 0; svn_node_kind_t kind; if (! root->is_txn_root) @@ -1759,7 +1759,7 @@ fs_delete_node(svn_fs_root_t *root, txn_id, pool)); /* Update mergeinfo counts for parents */ - if (svn_fs_py__fs_supports_mergeinfo(root->fs) && mergeinfo_count > 0) + if (mergeinfo_count > 0) SVN_ERR(increment_mergeinfo_up_tree(parent_path->parent, -mergeinfo_count, pool)); @@ -2871,7 +2871,7 @@ fs_node_origin_rev(svn_revnum_t *revisio /* Walk the predecessor links back to origin. */ SVN_ERR(fs_node_id(&pred_id, curroot, lastpath->data, predidpool)); -while (pred_id) +do { svn_pool_clear(subpool);
svn commit: r1170622 [7/7] - in /subversion/branches/fs-py: ./ notes/ subversion/bindings/javahl/tests/org/apache/subversion/javahl/ subversion/include/ subversion/include/private/ subversion/libsvn_c
Modified: subversion/branches/fs-py/tools/examples/get-location-segments.py URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/examples/get-location-segments.py?rev=1170622&r1=1170621&r2=1170622&view=diff == --- subversion/branches/fs-py/tools/examples/get-location-segments.py (original) +++ subversion/branches/fs-py/tools/examples/get-location-segments.py Wed Sep 14 13:46:56 2011 @@ -21,6 +21,7 @@ # import sys import os +import getpass from svn import client, ra, core def printer(segment, pool): @@ -71,6 +72,39 @@ def parse_args(args): return url, peg_revision, start_revision, end_revision +def prompt_func_ssl_unknown_cert(realm, failures, cert_info, may_save, pool): + print "The certficate details are as follows:" + print "--" + print "Issuer : " + str(cert_info.issuer_dname) + print "Hostname : " + str(cert_info.hostname) + print "ValidFrom : " + str(cert_info.valid_from) + print "ValidUpto : " + str(cert_info.valid_until) + print "Fingerprint: " + str(cert_info.fingerprint) + print "" + ssl_trust = core.svn_auth_cred_ssl_server_trust_t() + if may_save: +choice = raw_input( "accept (t)temporarily (p)permanently: ") + else: +choice = raw_input( "(r)Reject or accept (t)temporarily: ") + if choice[0] == "t" or choice[0] == "T": +ssl_trust.may_save = False +ssl_trust.accepted_failures = failures + elif choice[0] == "p" or choice[0] == "P": +ssl_trust.may_save = True +ssl_trust.accepted_failures = failures + else: +ssl_trust = None + return ssl_trust + +def prompt_func_simple_prompt(realm, username, may_save, pool): + username = raw_input("username: ") + password = getpass.getpass(prompt="password: ") + simple_cred = core.svn_auth_cred_simple_t() + simple_cred.username = username + simple_cred.password = password + simple_cred.may_save = False + return simple_cred + def main(): try: url, peg_revision, start_revision, end_revision = parse_args(sys.argv[1:]) @@ -93,6 +127,9 @@ ERROR: %s ctx = client.ctx_t() providers = [ client.get_simple_provider(), +core.svn_auth_get_ssl_server_trust_file_provider(), +core.svn_auth_get_simple_prompt_provider(prompt_func_simple_prompt, 2), + core.svn_auth_get_ssl_server_trust_prompt_provider(prompt_func_ssl_unknown_cert), client.get_username_provider(), client.get_ssl_server_trust_file_provider(), client.get_ssl_client_cert_file_provider(),
svn commit: r1170622 [4/7] - in /subversion/branches/fs-py: ./ notes/ subversion/bindings/javahl/tests/org/apache/subversion/javahl/ subversion/include/ subversion/include/private/ subversion/libsvn_c
Modified: subversion/branches/fs-py/subversion/libsvn_wc/wc_db.h URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_wc/wc_db.h?rev=1170622&r1=1170621&r2=1170622&view=diff == --- subversion/branches/fs-py/subversion/libsvn_wc/wc_db.h (original) +++ subversion/branches/fs-py/subversion/libsvn_wc/wc_db.h Wed Sep 14 13:46:56 2011 @@ -1871,6 +1871,8 @@ struct svn_wc__db_info_t { const char *moved_to_abspath; /* Only on op-roots. See svn_wc_status3_t. */ svn_boolean_t moved_here; /* On both op-roots and children. */ + + svn_boolean_t file_external; }; /* Return in *NODES a hash mapping name->struct svn_wc__db_info_t for
svn commit: r1170614 - /subversion/branches/1.7.x/STATUS
Author: neels Date: Wed Sep 14 13:36:16 2011 New Revision: 1170614 URL: http://svn.apache.org/viewvc?rev=1170614&view=rev Log: * STATUS: Indent. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1170614&r1=1170613&r2=1170614&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Wed Sep 14 13:36:16 2011 @@ -121,29 +121,29 @@ Candidate changes: performance should be better, I wonder if that's been tested at all) - * r1167659 -Don't sort an already sorted array in svn_sort__hash(). -Justification: - Possible performance improvement for merges, and doesn't cost anything. - This function is used to sort mergeinfo catalogs, among other things. -Votes: - +1: stsp (for 1.7.1) + * r1167659 + Don't sort an already sorted array in svn_sort__hash(). + Justification: + Possible performance improvement for merges, and doesn't cost anything. + This function is used to sort mergeinfo catalogs, among other things. + Votes: + +1: stsp (for 1.7.1) - * r1167503,r1169524,r1169531 -Fix issue 4015, file externals upgrade to bogus non-external files. -Justification: - Upgrade with file externals breaks working copies. -Votes: - +1: philip + * r1167503,r1169524,r1169531 + Fix issue 4015, file externals upgrade to bogus non-external files. + Justification: + Upgrade with file externals breaks working copies. + Votes: + +1: philip - * r1169650 -Make relocate act recursively on all externals, not just immediate ones. -Justification: - Relocating externals is new 1.7, no reason not to do them all. -Notes: - Depends on issue 4015 merge. -Votes: - +1: philip + * r1169650 + Make relocate act recursively on all externals, not just immediate ones. + Justification: + Relocating externals is new 1.7, no reason not to do them all. + Notes: + Depends on issue 4015 merge. + Votes: + +1: philip Veto-blocked changes: =
Re: svn commit: r1170324 - /subversion/trunk/subversion/include/svn_editor.h
On Tue, Sep 13, 2011 at 5:38 PM, Daniel Shahaf wrote: > (about svn_editor_set_props()) > > hwri...@apache.org wrote on Tue, Sep 13, 2011 at 19:54:14 -: >> Author: hwright >> Date: Tue Sep 13 19:54:14 2011 >> New Revision: 1170324 >> >> URL: http://svn.apache.org/viewvc?rev=1170324&view=rev >> Log: >> * subversion/include/svn_editor.h >> (svn_editor_set_props): Add a couple of notes. >> >> Modified: >> subversion/trunk/subversion/include/svn_editor.h >> > ... >> * Set or change properties on the existing node at @a relpath. >> * ### TODO @todo Does this send *all* properties, always? > > I'd answer "As written, yes" since the props parameter is an apr_hash_t > (and the docstring doesn't make special arrangements for representation > of propdels within that). > >> + * ### HKW: The purist in me says "yes", but the pragmatist says "no". >> + * ### Writing a backward compat shim is going to be next to impossible, >> + * ### since we've no way to know about existing props while receiving >> + * ### props from the delta editor. >> + * ### > > For example, 'svn propset pn pv URL' does not know the remaining > properties of URL. > > That said: isn't this discussion similar to the discussion from last > week about whether svn_editor_set_text() should be taking a full > contents stream or a delta stream? Does the resolution of that > discusion apply here? I think it does: provide a callback to the shim so it can get the existing properties on a node. I arrived at this conclusion when thinking about the problem last night, and then discovered your and Greg's suggestions this morning. Guess I'm on the right track! (Or, we're all wrong together...) -Hyrum -- uberSVN: Apache Subversion Made Easy http://www.uberSVN.com/