svn commit: r1100937 - /subversion/trunk/subversion/libsvn_subr/svn_string.c
Author: danielsh Date: Mon May 9 10:02:49 2011 New Revision: 1100937 URL: http://svn.apache.org/viewvc?rev=1100937view=rev Log: * subversion/libsvn_subr/svn_string.c (svn_cstring_strtoui64, svn_cstring_strtoi64): Remove superfluous svn_error_return() wrappers. Modified: subversion/trunk/subversion/libsvn_subr/svn_string.c Modified: subversion/trunk/subversion/libsvn_subr/svn_string.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/svn_string.c?rev=1100937r1=1100936r2=1100937view=diff == --- subversion/trunk/subversion/libsvn_subr/svn_string.c (original) +++ subversion/trunk/subversion/libsvn_subr/svn_string.c Mon May 9 10:02:49 2011 @@ -725,16 +725,14 @@ svn_cstring_strtoui64(apr_uint64_t *n, c * ### APR needs a apr_strtoui64() function. */ val = apr_strtoi64(str, endptr, base); if (errno == EINVAL || endptr == str || str[0] == '\0' || *endptr != '\0') -return svn_error_return( - svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, - _(Could not convert '%s' into a number), - str)); +return svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, + _(Could not convert '%s' into a number), + str); if ((errno == ERANGE (val == APR_INT64_MIN || val == APR_INT64_MAX)) || val 0 || (apr_uint64_t)val minval || (apr_uint64_t)val maxval) -return svn_error_return( - svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, - _(Number '%s' is out of range '[%llu, %llu]'), - str, minval, maxval)); +return svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, + _(Number '%s' is out of range '[%llu, %llu]'), + str, minval, maxval); *n = val; return SVN_NO_ERROR; } @@ -769,16 +767,14 @@ svn_cstring_strtoi64(apr_int64_t *n, con val = apr_strtoi64(str, endptr, base); if (errno == EINVAL || endptr == str || str[0] == '\0' || *endptr != '\0') -return svn_error_return( - svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, - _(Could not convert '%s' into a number), - str)); +return svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, + _(Could not convert '%s' into a number), + str); if ((errno == ERANGE (val == APR_INT64_MIN || val == APR_INT64_MAX)) || val minval || val maxval) -return svn_error_return( - svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, - _(Number '%s' is out of range '[%lld, %lld]'), - str, minval, maxval)); +return svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, + _(Number '%s' is out of range '[%lld, %lld]'), + str, minval, maxval); *n = val; return SVN_NO_ERROR; }
svn commit: r1100941 - /subversion/trunk/subversion/libsvn_wc/externals.c
Author: julianfoad Date: Mon May 9 10:11:07 2011 New Revision: 1100941 URL: http://svn.apache.org/viewvc?rev=1100941view=rev Log: * subversion/libsvn_wc/externals.c (svn_wc__crawl_file_external): Rename a local variable to avoid shadowing an different variable of the same name. Modified: subversion/trunk/subversion/libsvn_wc/externals.c Modified: subversion/trunk/subversion/libsvn_wc/externals.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/externals.c?rev=1100941r1=1100940r2=1100941view=diff == --- subversion/trunk/subversion/libsvn_wc/externals.c (original) +++ subversion/trunk/subversion/libsvn_wc/externals.c Mon May 9 10:11:07 2011 @@ -1020,10 +1020,10 @@ svn_wc__crawl_file_external(svn_wc_conte { if (restore_files) { - svn_node_kind_t kind; - SVN_ERR(svn_io_check_path(local_abspath, kind, scratch_pool)); + svn_node_kind_t disk_kind; + SVN_ERR(svn_io_check_path(local_abspath, disk_kind, scratch_pool)); - if (kind == svn_node_none) + if (disk_kind == svn_node_none) { err = svn_wc_restore(wc_ctx, local_abspath, use_commit_times, scratch_pool);
svn commit: r1100942 - /subversion/trunk/subversion/libsvn_wc/update_editor.c
Author: julianfoad Date: Mon May 9 10:13:40 2011 New Revision: 1100942 URL: http://svn.apache.org/viewvc?rev=1100942view=rev Log: Simplify some code. * subversion/libsvn_wc/update_editor.c (create_tree_conflict): Assert that the 'their_relpath' parameter is non-null, as it always is now. Remove temporary code to handle null. (check_tree_conflict): Assert that 'their_relpath' is null, as above. Modified: subversion/trunk/subversion/libsvn_wc/update_editor.c Modified: subversion/trunk/subversion/libsvn_wc/update_editor.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/update_editor.c?rev=1100942r1=1100941r2=1100942view=diff == --- subversion/trunk/subversion/libsvn_wc/update_editor.c (original) +++ subversion/trunk/subversion/libsvn_wc/update_editor.c Mon May 9 10:13:40 2011 @@ -1139,6 +1139,7 @@ create_tree_conflict(svn_wc_conflict_des *pconflict = NULL; SVN_ERR_ASSERT(reason != SVN_WC_CONFLICT_REASON_NONE); + SVN_ERR_ASSERT(their_relpath != NULL); /* Get the source-left information, i.e. the local state of the node * before any changes were made to the working copy, i.e. the state the @@ -1227,23 +1228,8 @@ create_tree_conflict(svn_wc_conflict_des * to which we would like to update. */ if (eb-switch_relpath) { - /* If this is a 'switch' operation, try to construct the switch - * target's REPOS_RELPATH. */ - if (their_relpath != NULL) -right_repos_relpath = their_relpath; - else -{ - /* The complete source-right URL is not available, but it - * is somewhere below the SWITCH_URL. For now, just go - * without it. - * ### TODO: Construct a proper THEIR_URL in some of the - * delete cases that still pass NULL for THEIR_URL when - * calling this function. Do that on the caller's side. */ - right_repos_relpath = eb-switch_relpath; - right_repos_relpath = apr_pstrcat(result_pool, right_repos_relpath, -_THIS_IS_INCOMPLETE, -(char *)NULL); -} + /* This is a 'switch' operation. */ + right_repos_relpath = their_relpath; } else { @@ -1343,6 +1329,8 @@ check_tree_conflict(svn_wc_conflict_desc svn_boolean_t modified = FALSE; svn_boolean_t all_mods_are_deletes = FALSE; + SVN_ERR_ASSERT(their_relpath != NULL); + *pconflict = NULL; /* Find out if there are any local changes to this node that may
svn commit: r1100943 - /subversion/trunk/subversion/libsvn_subr/svn_string.c
Author: danielsh Date: Mon May 9 10:25:45 2011 New Revision: 1100943 URL: http://svn.apache.org/viewvc?rev=1100943view=rev Log: Fix incorrect format strings. Note: this un-marks the strings for translation. * subversion/libsvn_subr/svn_string.c (svn_cstring_strtoui64, svn_cstring_strtoi64): Use the right apr_pvsprintf() format strings. Modified: subversion/trunk/subversion/libsvn_subr/svn_string.c Modified: subversion/trunk/subversion/libsvn_subr/svn_string.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/svn_string.c?rev=1100943r1=1100942r2=1100943view=diff == --- subversion/trunk/subversion/libsvn_subr/svn_string.c (original) +++ subversion/trunk/subversion/libsvn_subr/svn_string.c Mon May 9 10:25:45 2011 @@ -730,8 +730,10 @@ svn_cstring_strtoui64(apr_uint64_t *n, c str); if ((errno == ERANGE (val == APR_INT64_MIN || val == APR_INT64_MAX)) || val 0 || (apr_uint64_t)val minval || (apr_uint64_t)val maxval) +/* ### Mark this for translation when gettext doesn't choke on macros. */ return svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, - _(Number '%s' is out of range '[%llu, %llu]'), + Number '%s' is out of range + '[% APR_UINT64_T_FMT , % APR_UINT64_T_FMT ]', str, minval, maxval); *n = val; return SVN_NO_ERROR; @@ -772,8 +774,10 @@ svn_cstring_strtoi64(apr_int64_t *n, con str); if ((errno == ERANGE (val == APR_INT64_MIN || val == APR_INT64_MAX)) || val minval || val maxval) +/* ### Mark this for translation when gettext doesn't choke on macros. */ return svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, - _(Number '%s' is out of range '[%lld, %lld]'), + Number '%s' is out of range + '[% APR_INT64_T_FMT , % APR_INT64_T_FMT ]', str, minval, maxval); *n = val; return SVN_NO_ERROR;
svn commit: r1100962 - /subversion/branches/1.6.x/STATUS
Author: julianfoad Date: Mon May 9 11:21:02 2011 New Revision: 1100962 URL: http://svn.apache.org/viewvc?rev=1100962view=rev Log: * STATUS: Veto r1084575+r1084581. Modified: subversion/branches/1.6.x/STATUS Modified: subversion/branches/1.6.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/STATUS?rev=1100962r1=1100961r2=1100962view=diff == --- subversion/branches/1.6.x/STATUS (original) +++ subversion/branches/1.6.x/STATUS Mon May 9 11:21:02 2011 @@ -266,6 +266,9 @@ Candidate changes: http://mid.gmane.org/25d5db7a-ad59-4b48-8ba1-2d3d034c4...@ryandesign.com Votes: +1: danielsh, pburba + -1: julianfoad (r1084581 changes the user-agent string; see + dev@ email New)(?) Subversion client user-agent string ugliness. + http://svn.haxx.se/dev/archive-2011-05/0219.shtml) * r1091881 Fix issue #3853, svn cleanup fails with obstructed directories
svn commit: r1100964 - /subversion/site/publish/docs/release-notes/1.7.html
Author: stsp Date: Mon May 9 11:25:35 2011 New Revision: 1100964 URL: http://svn.apache.org/viewvc?rev=1100964view=rev Log: * site/publish/docs/release-notes/1.7.html (svn-help-merge): Fix a typo and tweak wording. Modified: subversion/site/publish/docs/release-notes/1.7.html Modified: subversion/site/publish/docs/release-notes/1.7.html URL: http://svn.apache.org/viewvc/subversion/site/publish/docs/release-notes/1.7.html?rev=1100964r1=1100963r2=1100964view=diff == --- subversion/site/publish/docs/release-notes/1.7.html (original) +++ subversion/site/publish/docs/release-notes/1.7.html Mon May 9 11:25:35 2011 @@ -654,13 +654,13 @@ implicitly./p /div !-- diff-git -- div class=h4 id=svn-help-merge -h4svn merge help text as been enhanced +h4svn merge help text has been enhanced a class=sectionlink href=#svn-help-merge title=Link to this sectionpara;/a /h4 pThe help text for the codesvn merge/code command has been enhanced. It now explains common use cases and includes small examples, making it -more useful as a quick reference than the old help text. +more useful for quick reference. /div !-- svn-help-merge --
svn commit: r1100970 - /subversion/branches/1.6.x/STATUS
Author: julianfoad Date: Mon May 9 11:51:06 2011 New Revision: 1100970 URL: http://svn.apache.org/viewvc?rev=1100970view=rev Log: * STATUS: Remove my veto and instead approve r1084575+r1084581. Modified: subversion/branches/1.6.x/STATUS Modified: subversion/branches/1.6.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/STATUS?rev=1100970r1=1100969r2=1100970view=diff == --- subversion/branches/1.6.x/STATUS (original) +++ subversion/branches/1.6.x/STATUS Mon May 9 11:51:06 2011 @@ -258,18 +258,6 @@ Candidate changes: +1: danielsh (trusting Philip's explanation that the noderev offset,length are cached to be the correct values for a non-corrupt file) - * r1084575, r1084581 - Change the version string from (dev build) to (under development). - Justification: - Same as for trunk: clarification that 1.6.17 (dev build) is actually a - off-the-branch build and not a blessed release. - http://mid.gmane.org/25d5db7a-ad59-4b48-8ba1-2d3d034c4...@ryandesign.com - Votes: - +1: danielsh, pburba - -1: julianfoad (r1084581 changes the user-agent string; see - dev@ email New)(?) Subversion client user-agent string ugliness. - http://svn.haxx.se/dev/archive-2011-05/0219.shtml) - * r1091881 Fix issue #3853, svn cleanup fails with obstructed directories Justification: @@ -398,3 +386,12 @@ Approved changes: that are currently nominated...so my +1 is conditional on that fix being applied first.) +1: danielsh (pburba: a fix to #3641 was committed to trunk) + + * r1084575, r1084581 + Change the version string from (dev build) to (under development). + Justification: + Same as for trunk: clarification that 1.6.17 (dev build) is actually a + off-the-branch build and not a blessed release. + http://mid.gmane.org/25d5db7a-ad59-4b48-8ba1-2d3d034c4...@ryandesign.com + Votes: + +1: danielsh, pburba, julianfoad
svn propchange: r1084581 - svn:log
Author: julianfoad Revision: 1084581 Modified property: svn:log Modified: svn:log at Mon May 9 12:19:38 2011 -- --- svn:log (original) +++ svn:log Mon May 9 12:19:38 2011 @@ -1,7 +1,17 @@ Change the descriptive version identifier text from '1.x.y (under development)' to '1.x.y-dev (under development)' to help clarify that it's not merely a build with debug symbols included or something like that. This -is the second part of a change started in r1084575. +change is a companion to r1084575 which changed '(dev build)' to '(under +development)'. + +While 'svn --version --quiet' has always shown an in-development version +string in the format '1.7.0-dev', this change makes 'svn --version' show the +version like this: + svn, version 1.7.0-dev (under development) +whereas previously it omitted the '-dev' like this: + svn, version 1.7.0 (under development) + +Version strings for released versions are unchanged. * subversion/include/svn_version.h (SVN_VERSION): Include the tagged version number before the parenthesis.
svn commit: r1100991 - in /subversion/branches/1.6.x: ./ STATUS subversion/include/svn_version.h subversion/tests/cmdline/getopt_tests.py
Author: hwright Date: Mon May 9 12:42:36 2011 New Revision: 1100991 URL: http://svn.apache.org/viewvc?rev=1100991view=rev Log: Merge r1084575, r1084581 from trunk: * r1084575, r1084581 Change the version string from (dev build) to (under development). Justification: Same as for trunk: clarification that 1.6.17 (dev build) is actually a off-the-branch build and not a blessed release. http://mid.gmane.org/25d5db7a-ad59-4b48-8ba1-2d3d034c4...@ryandesign.com Votes: +1: danielsh, pburba, julianfoad Modified: subversion/branches/1.6.x/ (props changed) subversion/branches/1.6.x/STATUS subversion/branches/1.6.x/subversion/include/svn_version.h subversion/branches/1.6.x/subversion/tests/cmdline/getopt_tests.py Propchange: subversion/branches/1.6.x/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Mon May 9 12:42:36 2011 @@ -106,4 +106,4 @@ /subversion/branches/tc_url_rev:874351-874483 /subversion/branches/tree-conflicts:868291-873154 /subversion/branches/tree-conflicts-notify:873926-874008 -/subversion/trunk:875965,875968,876004,876012,876017,876019,876022,876024,876032,876041-876042,876048,876051,876055-876056,876059,876083,876091,876097,876101,876104,876109,876123-876125,876129,876132,876138,876160,876167,876175,876180,876185,876205,876223-876225,876230,876233,876245,876252,876256,876283,876287,876312,876326-876327,876330,876366,876372,876374,876376,876383,876386,876442,876456-876457,876462-876464,876467,876469,876480,876486,876495-876497,876516-876518,876524,876526,876583,876601,876614-876615,876628,876633,876641,876645,876659,876687,876689,876705,876715,876726,876760,876763,876794,876804,876815-876816,876821,876825,876837,876840-876841,876843,876849,876857-876858,876862,876873,876890,876897,876905,876908,876925,876931,876934,876948-876949,876953,876987,876993,877011,877014,877016,877028-877029,877038,877119,877127,877146,877157,877191,877195,877203,877211,877230,877234,877237,877243,877249,877259,877261,877304,877319,877407,877437,877441-877442,877453,87745 9,877472,877544,877553,877565,877568,877573,877593,877595,877597,877601,877612,877665,877667,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,877814-877815,877819,877821,877842,877848,877853,877867,877869,877873,877901,877909,877916,877931,877942,877953,877964,877968,877970,877981-877982,878005,878013,878015,878020,878046,878053,878062,878074,878080,878089,878091,878093,878095,878127,878129,878131,878142,878173-878176,878216,878240,878242,878255,878269,878272,878279,878296-878297,878303,878321,878335,878338,878341,878343,878353,878364,878367-878368,878385,878399,878423,878426,878447,878462,878484,878491,878498,878532,878595,878646,878659,878673,878682-878683,878690-878691,878693,878723,878760-878761,878873,878875,878877,878879,878905,878910-878911,878915-878916,878924-878925,878946,878949,878955,878960,878970,878981,879001,879033,879056,879074,879076,879081-879082,879093,879105,879126,879148,879170,879198-879199,879201,879271,879293,879357,879375-879376, 879403,879631,879635-879636,879688,879709-879711,879747,879902,879916,879954,879961,879966,879971,880082,880095,880105,880146,880162,880226,880274-880275,880370,880450,880461,880474,880525-880526,880552,881905,884842,886164,886197,888715,888979,889081,889840,891672,892050,892085,895514,895653,896522,896915,898048,898963,899826,899828,900797,901304,901752,902093,902467,904301,904394,904594,905303,905326,906256,906305,906587,907644,908980-908981,917640,918211,922516,923389,923391,926151,926167,927323,927328,931209,931211,931392,931568,932942,933299,934599,934603,935631,935992,935996,937610,939375-939376,944635,945350,946355,946767,947006,948512,948916,949307,950931,950933,951753,952992,953317,955369,957507,958024,959004,959760,961055,961970,964167,964349,964767,965405,965469,965508,979045,979429,980811,981449,981921,984565,984928,984931,991534,996884,997026,997070,997457,997466,997471,997474,138,160,1000607,1000612,1001009,1002094,1005446,1022675,1024269,1027957,102810 8,1031165,1031186,1032808,1033166,1033290,1033665,1033685,1033921,1034557,1035745,1036534,1038792,1039040,1041438,1051632,1051638,1051744-1051745,1051751,1053185,1053208,1058269,1058722,1064839,1068988,1070912,1071239,1071307,1072084,1072953,1076759,1094692,1095654
svn commit: r1100999 - /subversion/trunk/subversion/libsvn_repos/rev_hunt.c
Author: stsp Date: Mon May 9 12:53:55 2011 New Revision: 1100999 URL: http://svn.apache.org/viewvc?rev=1100999view=rev Log: * subversion/libsvn_repos/rev_hunt.c (svn_repos_trace_node_locations): Remember to destroy local pools before returning because of unreadable paths. Modified: subversion/trunk/subversion/libsvn_repos/rev_hunt.c Modified: subversion/trunk/subversion/libsvn_repos/rev_hunt.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_repos/rev_hunt.c?rev=1100999r1=1100998r2=1100999view=diff == --- subversion/trunk/subversion/libsvn_repos/rev_hunt.c (original) +++ subversion/trunk/subversion/libsvn_repos/rev_hunt.c Mon May 9 12:53:55 2011 @@ -731,6 +731,9 @@ svn_repos_trace_node_locations(svn_fs_t authz_read_baton, currpool)); if (! readable) { + svn_pool_destroy(lastpool); + svn_pool_destroy(currpool); + return SVN_NO_ERROR; } }
svn commit: r1101028 - in /subversion/trunk/subversion: libsvn_client/cleanup.c svn/cleanup-cmd.c
Author: pburba Date: Mon May 9 13:54:04 2011 New Revision: 1101028 URL: http://svn.apache.org/viewvc?rev=1101028view=rev Log: Follow-up to r1100349, move error for issue #3835 from libsvn_client to svn. * subversion/libsvn_client/cleanup.c (svn_client_cleanup): Fix last Friday's brain cramp: Revert r1100349, moving error to the the *real* client... * subversion/svn/cleanup-cmd.c (): ...here. See http://svn.haxx.se/dev/archive-2011-05/0179.shtml Modified: subversion/trunk/subversion/libsvn_client/cleanup.c subversion/trunk/subversion/svn/cleanup-cmd.c Modified: subversion/trunk/subversion/libsvn_client/cleanup.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/cleanup.c?rev=1101028r1=1101027r2=1101028view=diff == --- subversion/trunk/subversion/libsvn_client/cleanup.c (original) +++ subversion/trunk/subversion/libsvn_client/cleanup.c Mon May 9 13:54:04 2011 @@ -59,23 +59,6 @@ svn_client_cleanup(const char *path, err = svn_wc_cleanup3(ctx-wc_ctx, local_abspath, ctx-cancel_func, ctx-cancel_baton, scratch_pool); - if (err err-apr_err == SVN_ERR_WC_LOCKED) -{ - const char *wcroot_abspath; - svn_error_t *err2 = svn_wc_get_wc_root(wcroot_abspath, ctx-wc_ctx, - local_abspath, scratch_pool, - scratch_pool); - if (err2) -err = svn_error_compose_create(err, err2); - else -err = svn_error_createf(SVN_ERR_WC_LOCKED, err, -_(Working copy locked; trying running - 'svn cleanup' on the root of the working - copy (%s) instead.), - svn_dirent_local_style(wcroot_abspath, - scratch_pool)); -} - svn_io_sleep_for_timestamps(path, scratch_pool); return svn_error_return(err); } Modified: subversion/trunk/subversion/svn/cleanup-cmd.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/cleanup-cmd.c?rev=1101028r1=1101027r2=1101028view=diff == --- subversion/trunk/subversion/svn/cleanup-cmd.c (original) +++ subversion/trunk/subversion/svn/cleanup-cmd.c Mon May 9 13:54:04 2011 @@ -74,10 +74,38 @@ svn_cl__cleanup(apr_getopt_t *os, for (i = 0; i targets-nelts; i++) { const char *target = APR_ARRAY_IDX(targets, i, const char *); + svn_error_t *err; svn_pool_clear(subpool); SVN_ERR(svn_cl__check_cancel(ctx-cancel_baton)); - SVN_ERR(svn_client_cleanup(target, ctx, subpool)); + err = svn_client_cleanup(target, ctx, subpool); + if (err err-apr_err == SVN_ERR_WC_LOCKED) +{ + const char *target_abspath; + svn_error_t *err2 = svn_dirent_get_absolute(target_abspath, + target, subpool); + if (err2) +{ + err = svn_error_compose_create(err, err2); +} + else +{ + const char *wcroot_abspath; + + err2 = svn_wc_get_wc_root(wcroot_abspath, ctx-wc_ctx, +target_abspath, subpool, subpool); + if (err2) +err = svn_error_compose_create(err, err2); + else +err = svn_error_createf(SVN_ERR_WC_LOCKED, err, +_(Working copy locked; trying running + 'svn cleanup' on the root of the + working copy (%s) instead.), + svn_dirent_local_style(wcroot_abspath, + subpool)); +} +} + SVN_ERR(err); } svn_pool_destroy(subpool);
Re: svn commit: r1100704 - /subversion/trunk/subversion/libsvn_wc/wc_db.c
On Sun, May 8, 2011 at 3:34 AM, rhuij...@apache.org wrote: Author: rhuijben Date: Sun May 8 08:34:56 2011 New Revision: 1100704 URL: http://svn.apache.org/viewvc?rev=1100704view=rev Log: * subversion/libsvn_wc/wc_db.c (scan_addition_txn, wclock_obtain_cb, svn_wc__db_wclock_obtain, svn_wc__db_wclock_release): Following up on r1100353, resolve a few warnings. Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1100704r1=1100703r2=1100704view=diff == --- subversion/trunk/subversion/libsvn_wc/wc_db.c (original) +++ subversion/trunk/subversion/libsvn_wc/wc_db.c Sun May 8 08:34:56 2011 @@ -8167,7 +8167,7 @@ scan_addition_txn(void *baton, op_depth = svn_sqlite__column_int64(stmt, 0); current_relpath = local_relpath; - for (i = relpath_depth(local_relpath); i op_depth; --i) + for (i = (int)relpath_depth(local_relpath); i op_depth; --i) { /* Calculate the path of the operation root */ repos_prefix_path = @@ -8265,7 +8265,7 @@ scan_addition_txn(void *baton, op_depth = svn_sqlite__column_int64(stmt, 0); /* Skip to op_depth */ - for (i = relpath_depth(current_relpath); i op_depth; i--) + for (i = (int)relpath_depth(current_relpath); i op_depth; i--) { /* Calculate the path of the operation root */ repos_prefix_path = @@ -9570,7 +9570,7 @@ wclock_obtain_cb(void *baton, SVN_ERR(svn_sqlite__get_statement(stmt, wcroot-sdb, STMT_FIND_WC_LOCK)); SVN_ERR(svn_sqlite__bindf(stmt, is, wcroot-wc_id, filter)); - lock_depth = relpath_depth(local_relpath); + lock_depth = (int)relpath_depth(local_relpath); max_depth = lock_depth + bt-levels_to_lock; SVN_ERR(svn_sqlite__step(got_row, stmt)); @@ -9641,7 +9641,7 @@ wclock_obtain_cb(void *baton, { int levels = svn_sqlite__column_int(stmt, 0); if (levels = 0) - levels += relpath_depth(lock_relpath); + levels += (int)relpath_depth(lock_relpath); SVN_ERR(svn_sqlite__reset(stmt)); @@ -9717,7 +9717,7 @@ svn_wc__db_wclock_obtain(svn_wc__db_t *d if (!steal_lock) { int i; - int depth = relpath_depth(local_relpath); + int depth = (int)relpath_depth(local_relpath); for (i = 0; i wcroot-owned_locks-nelts; i++) { @@ -9880,7 +9880,7 @@ wclock_owns_lock(svn_boolean_t *own_lock *own_lock = FALSE; owned_locks = wcroot-owned_locks; - lock_level = relpath_depth(local_relpath); + lock_level = (int)relpath_depth(local_relpath); if (exact) { Instead of all the casting, why don't we just change the types of the various local variables? -Hyrum
RE: svn commit: r1100704 - /subversion/trunk/subversion/libsvn_wc/wc_db.c
-Original Message- From: Hyrum K Wright [mailto:hy...@hyrumwright.org] Sent: maandag 9 mei 2011 16:32 To: d...@subversion.apache.org Cc: commits@subversion.apache.org Subject: Re: svn commit: r1100704 - /subversion/trunk/subversion/libsvn_wc/wc_db.c Instead of all the casting, why don't we just change the types of the various local variables? I don't think I'll live the day where normal path lengths don't fit in an 32 bit integer. For a 32 bit signed op-depth overflow we need at least 4GB bytes in a path name. Bert
Re: svn commit: r1100704 - /subversion/trunk/subversion/libsvn_wc/wc_db.c
Hyrum K Wright wrote: On Sun, May 8, 2011 at 3:34 AM, rhuij...@apache.org wrote: -for (i = relpath_depth(local_relpath); i op_depth; --i) +for (i = (int)relpath_depth(local_relpath); i op_depth; --i) -for (i = relpath_depth(current_relpath); i op_depth; i--) +for (i = (int)relpath_depth(current_relpath); i op_depth; i--) - lock_depth = relpath_depth(local_relpath); + lock_depth = (int)relpath_depth(local_relpath); -levels += relpath_depth(lock_relpath); +levels += (int)relpath_depth(lock_relpath); - int depth = relpath_depth(local_relpath); + int depth = (int)relpath_depth(local_relpath); - lock_level = relpath_depth(local_relpath); + lock_level = (int)relpath_depth(local_relpath); Instead of all the casting, why don't we just change the types of the various local variables? Alternatively... I'd like to change all our uses of apr_int64_t for (wc_id, repos_id, op_depth) to plain int. I think that would be better because it would only occupy one syllable of thought-space rather than eight syllables. And I believe there's no functional or programmatic reason or benefit for having these three types be int64_t. To do that, I would need to introduce an additional type letter into the bindf format, because some parameters will still need to be int64_t (I can't remember what, but I looked at this before and there were some). Note that revnum_t is not relevant because it already has its own type letter r. I was thinking like this, in sequential steps: 1. In bindf introduce letter I for int64_t (in parallel with the current i which is currently for int64_t). 2. Change bindf's callers to use I for any parameters that are still going to be using int64_t (i.e. not wc_id, repos_id, or op_depth). 3. Change the types of (wc_id, repos_id, op_depth) variables throughout the code to int, and simultaneously change bindf so type code i means plain int. Thoughts? - Julian
Re: svn commit: r1100756 - in /subversion/trunk/subversion/libsvn_wc: update_editor.c wc.h
On Sun, May 8, 2011 at 10:22 AM, rhuij...@apache.org wrote: Author: rhuijben Date: Sun May 8 15:22:01 2011 New Revision: 1100756 URL: http://svn.apache.org/viewvc?rev=1100756view=rev Log: Extract some logic from the update_editor's merge_file code to its own function to allow reusing it from the file external editor. This in preparation for moving file externals from the NODES table to their own EXTERNALS table in wc.db. Wow, that's a pretty big planned change. Could you write up a high-level view of what's happening here, both for those of us attempting to follow along, as well as those who may come along in the future. It isn't readily apparent what is going on here. For instance, I just don't know what problem you're trying to solve that requires the addition of another table (and a corresponding set of queries and joins). ... -Hyrum
svn commit: r1101060 - /subversion/trunk/subversion/libsvn_subr/properties.c
Author: hwright Date: Mon May 9 15:19:41 2011 New Revision: 1101060 URL: http://svn.apache.org/viewvc?rev=1101060view=rev Log: * subversion/libsvn_subr/properties.c (svn_property_kind): Quash a couple of warnings with casts (we can't change the variable type because it is part of the public API). Modified: subversion/trunk/subversion/libsvn_subr/properties.c Modified: subversion/trunk/subversion/libsvn_subr/properties.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/properties.c?rev=1101060r1=1101059r2=1101060view=diff == --- subversion/trunk/subversion/libsvn_subr/properties.c (original) +++ subversion/trunk/subversion/libsvn_subr/properties.c Mon May 9 15:19:41 2011 @@ -72,14 +72,14 @@ svn_property_kind(int *prefix_len, if (strncmp(prop_name, SVN_PROP_WC_PREFIX, wc_prefix_len) == 0) { if (prefix_len) -*prefix_len = wc_prefix_len; +*prefix_len = (int) wc_prefix_len; return svn_prop_wc_kind; } if (strncmp(prop_name, SVN_PROP_ENTRY_PREFIX, entry_prefix_len) == 0) { if (prefix_len) -*prefix_len = entry_prefix_len; +*prefix_len = (int) entry_prefix_len; return svn_prop_entry_kind; }
svn commit: r1101071 - in /subversion/trunk/subversion/libsvn_wc: upgrade.c wc-metadata.sql wc_db.c
Author: rhuijben Date: Mon May 9 15:43:56 2011 New Revision: 1101071 URL: http://svn.apache.org/viewvc?rev=1101071view=rev Log: Prepare some things for a future version 29 format bump and at the same time document some of my ideas. * subversion/libsvn_wc/upgrade.c (bump_to_29): New function. Malfunctioning just to be sure. (svn_wc__upgrade_sdb): Call bump_to_29 when the format is bumped. * subversion/libsvn_wc/wc-metadata.sql (STMT_CREATE_EXTERNALS): Add new statement (untested). (STMT_UPGRADE_TO_29): Update documentation. * subversion/libsvn_wc/wc_db.c (create_db): Execute STMT_CREATE_EXTERNALS once the format is bumped. Modified: subversion/trunk/subversion/libsvn_wc/upgrade.c subversion/trunk/subversion/libsvn_wc/wc-metadata.sql subversion/trunk/subversion/libsvn_wc/wc_db.c Modified: subversion/trunk/subversion/libsvn_wc/upgrade.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/upgrade.c?rev=1101071r1=1101070r2=1101071view=diff == --- subversion/trunk/subversion/libsvn_wc/upgrade.c (original) +++ subversion/trunk/subversion/libsvn_wc/upgrade.c Mon May 9 15:43:56 2011 @@ -1213,6 +1213,19 @@ bump_to_28(void *baton, svn_sqlite__db_t return SVN_NO_ERROR; } +static svn_error_t * +bump_to_29(void *baton, svn_sqlite__db_t *sdb, apr_pool_t *scratch_pool) +{ + SVN_ERR(svn_sqlite__exec_statements(sdb, STMT_CREATE_EXTERNALS)); + SVN_ERR(svn_sqlite__exec_statements(sdb, STMT_UPGRADE_TO_29)); + + /* ### Before enabling this code we should be able to upgrade existing + ### file externals to their new location */ + SVN_ERR_MALFUNCTION(); + return SVN_NO_ERROR; +} + + struct upgrade_data_t { svn_sqlite__db_t *sdb; const char *root_abspath; @@ -1498,6 +1511,14 @@ svn_wc__upgrade_sdb(int *result_format, *result_format = 28; /* FALLTHROUGH */ +#if SVN_WC__VERSION = SVN_WC__HAS_EXTERNALS_STORE + case 28: +SVN_ERR(svn_sqlite__with_transaction(sdb, bump_to_29, bb, + scratch_pool)); +*result_format = 29; +/* FALLTHROUGH */ +#endif + /* ### future bumps go here. */ #if 0 case XXX-1: Modified: subversion/trunk/subversion/libsvn_wc/wc-metadata.sql URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-metadata.sql?rev=1101071r1=1101070r2=1101071view=diff == --- subversion/trunk/subversion/libsvn_wc/wc-metadata.sql (original) +++ subversion/trunk/subversion/libsvn_wc/wc-metadata.sql Mon May 9 15:43:56 2011 @@ -530,7 +530,64 @@ BEGIN WHERE checksum = OLD.checksum; END; +-- STMT_CREATE_EXTERNALS +CREATE TABLE EXTERNALS ( + /* Working copy location related fields (like NODES)*/ + + wc_id INTEGER NOT NULL REFERENCES WCROOT (id), + local_relpath TEXT NOT NULL, + + /* The working copy root can't be recorded as an external in itself + so this will never be NULL. */ + parent_relpath TEXT NOT NULL, + + /* Repository location fields */ + + /* Always set for file and symlink externals. NULL for directory externals */ + repos_id INTEGER REFERENCES REPOSITORY (id), + repos_path TEXT, + revision INTEGER, + + /* Content fields */ + + /* the kind of the external. */ + kind TEXT NOT NULL, + + /* Variouse information (NULL for directories; see NODES for explanation) */ + properties BLOB, + checksum TEXT REFERENCES PRISTINE (checksum), + symlink_target TEXT, + + /* Last-Change fields (NULL for directories; see NODES for explanation) */ + changed_revision INTEGER, + changed_date INTEGER, + changed_authorTEXT, + + /* Various cache fields (NULL for directories; see NODES for explanation) */ + translated_size INTEGER, + last_mod_time INTEGER, + dav_cache BLOB, + + + /* The local relpath of the directory NODE defining this external + (Defaults to the parent directory of the file external after upgrade) */ + record_relpath TEXT NOT NULL, + + /* The url of the external as used in the definition */ + recorded_url TEXT NOT NULL, + + /* The operational (peg) and node revision if this is a revision fixed + external; otherwise NULL. (Usually these will both have the same value) */ + recorded_operational_revision TEXT NOT NULL, + recorded_revision TEXT NOT NULL, + + PRIMARY KEY (wc_id, local_relpath) +); + +CREATE INDEX I_EXTERNALS_PARENT ON EXTERNALS (wc_id, parent_relpath); +CREATE UNIQUE INDEX I_EXTERNALS_RECORDED ON EXTERNALS (wc_id, record_relpath, + local_relpath); /* Format 20 introduces NODES and removes BASE_NODE and WORKING_NODE */ @@ -664,7 +721,8 @@ PRAGMA user_version = 28; /* - */ -/* Format 29 introduces ... */ +/* Format 29 introduces the
Re: svn commit: r1100704 - /subversion/trunk/subversion/libsvn_wc/wc_db.c
Julian Foad julian.f...@wandisco.com writes: Alternatively... I'd like to change all our uses of apr_int64_t for (wc_id, repos_id, op_depth) to plain int. I think that would be better because it would only occupy one syllable of thought-space rather than eight syllables. And I believe there's no functional or programmatic reason or benefit for having these three types be int64_t. To do that, I would need to introduce an additional type letter into the bindf format, because some parameters will still need to be int64_t I think that is a bad idea unless there is some way to automatically catch a mismatch between an integer argument and multiple integer format letters. We regularly made mistakes in svn_error_createf before we added the gcc stuff to do printf checking. I don't know if we can use that for bindf as I'm not sure if it would handle our t that consumes two arguments, but until we have some sort of automatic checking the fewer format letters the better. While we rely on manual checking the rule all bound integers are 64bit is easier to verify. -- Philip
svn commit: r1101086 - in /subversion/trunk/subversion/tests/cmdline: basic_tests.py blame_tests.py info_tests.py
Author: rhuijben Date: Mon May 9 16:13:24 2011 New Revision: 1101086 URL: http://svn.apache.org/viewvc?rev=1101086view=rev Log: Move two recently added 'basic' tests to their proper location. * subversion/tests/cmdline/basic_tests.py (info_multiple_targets): Move to info_tests.py. (blame_multiple_targets): Move to blame_tests.py (test_list): Updated. * subversion/tests/cmdline/blame_tests.py (blame_multiple_targets): Moved here from basic_tests.py (test_list): Updated. * subversion/tests/cmdline/info_tests.py (info_multiple_targets): Moved here from basic_tests.py (test_list): Updated. Modified: subversion/trunk/subversion/tests/cmdline/basic_tests.py subversion/trunk/subversion/tests/cmdline/blame_tests.py subversion/trunk/subversion/tests/cmdline/info_tests.py Modified: subversion/trunk/subversion/tests/cmdline/basic_tests.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/basic_tests.py?rev=1101086r1=1101085r2=1101086view=diff == --- subversion/trunk/subversion/tests/cmdline/basic_tests.py (original) +++ subversion/trunk/subversion/tests/cmdline/basic_tests.py Mon May 9 16:13:24 2011 @@ -2816,122 +2816,7 @@ def add_multiple_targets(sbox): svntest.actions.run_and_verify_svn(None, expected_status, [], 'status', wc_dir) -def info_multiple_targets(sbox): - info multiple targets - sbox.build(read_only = True) - wc_dir = sbox.wc_dir - - def multiple_wc_targets(): -multiple wc targets - -alpha = sbox.ospath('A/B/E/alpha') -beta = sbox.ospath('A/B/E/beta') -non_existent_path = os.path.join(wc_dir, 'non-existent') - -# All targets are existing -svntest.actions.run_and_verify_svn2(None, None, [], -0, 'info', alpha, beta) - -# One non-existing target -expected_err = .*W155010.*\n\n.*E29.* -expected_err_re = re.compile(expected_err, re.DOTALL) - -exit_code, output, error = svntest.main.run_svn(1, 'info', alpha, -non_existent_path, beta) - -# Verify error -if not expected_err_re.match(.join(error)): - raise svntest.Failure('info failed: expected error %s, but received ' -'%s' % (expected_err, .join(error))) - - def multiple_url_targets(): -multiple url targets - -alpha = sbox.repo_url + '/A/B/E/alpha' -beta = sbox.repo_url + '/A/B/E/beta' -non_existent_url = sbox.repo_url + '/non-existent' - -# All targets are existing -svntest.actions.run_and_verify_svn2(None, None, [], -0, 'info', alpha, beta) - -# One non-existing target -expected_err = .*W17.*\n\n.*E29.* -expected_err_re = re.compile(expected_err, re.DOTALL) - -exit_code, output, error = svntest.main.run_svn(1, 'info', alpha, -non_existent_url, beta) - -# Verify error -if not expected_err_re.match(.join(error)): - raise svntest.Failure('info failed: expected error %s, but received ' -'%s' % (expected_err, .join(error))) - # Test one by one - multiple_wc_targets() - multiple_url_targets() - -def blame_multiple_targets(sbox): - blame multiple target - - sbox.build() - - def multiple_wc_targets(): -multiple wc targets - -# First, make a new revision of iota. -iota = os.path.join(sbox.wc_dir, 'iota') -non_existent = os.path.join(sbox.wc_dir, 'non-existent') -svntest.main.file_append(iota, New contents for iota\n) -svntest.main.run_svn(None, 'ci', - '-m', '', iota) - -expected_output = [ - 1jrandom This is the file 'iota'.\n, - 2jrandom New contents for iota\n, - ] - -expected_err = .*W155010.*\n.*E29.* -expected_err_re = re.compile(expected_err, re.DOTALL) - -exit_code, output, error = svntest.main.run_svn(1, 'blame', -non_existent, iota) - -# Verify error -if not expected_err_re.match(.join(error)): - raise svntest.Failure('blame failed: expected error %s, but received ' -'%s' % (expected_err, .join(error))) - - def multiple_url_targets(): -multiple url targets - -# First, make a new revision of iota. -iota = os.path.join(sbox.wc_dir, 'iota') -iota_url = sbox.repo_url + '/iota' -non_existent = sbox.repo_url + '/non-existent' -svntest.main.file_append(iota, New contents for iota\n) -svntest.main.run_svn(None, 'ci', - '-m', '', iota) - -expected_output = [ - 1jrandom This is the file 'iota'.\n, - 2jrandom New contents for iota\n, - ] - -expected_err = .*(W160017|W160013).*\n.*E29.* -expected_err_re =
svn commit: r1101089 - in /subversion/site/publish/docs/api/1.6: ./ search/
Author: hwright Date: Mon May 9 16:24:33 2011 New Revision: 1101089 URL: http://svn.apache.org/viewvc?rev=1101089view=rev Log: Update the static 1.6 doxygen markup on the public website from doxygen based on version 1.6.6 to that based on 1.6.16. While we both know that there isn't any material diffence between the two, in the interests of appearing to update the website and content (and give users warm fuzzies), I'm doing this update. * publish/docs/api/1.6: Replace 1.6.6 docs with 1.6.16. [This commit notification would consist of 126 parts, which exceeds the limit of 50 ones, so it was shortened to the summary.]
svn commit: r1101091 - /subversion/trunk/subversion/libsvn_subr/cache-membuffer.c
Author: stefan2 Date: Mon May 9 16:28:16 2011 New Revision: 1101091 URL: http://svn.apache.org/viewvc?rev=1101091view=rev Log: Fix a number of conversion and formatting issues. * subversion/libsvn_subr/cache-membuffer.c (MIN_SEGMENT_SIZE): ensure that cache sizes 4GB work (svn_cache__membuffer_cache_create): formatting fixes; add missing cast Modified: subversion/trunk/subversion/libsvn_subr/cache-membuffer.c Modified: subversion/trunk/subversion/libsvn_subr/cache-membuffer.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/cache-membuffer.c?rev=1101091r1=1101090r2=1101091view=diff == --- subversion/trunk/subversion/libsvn_subr/cache-membuffer.c (original) +++ subversion/trunk/subversion/libsvn_subr/cache-membuffer.c Mon May 9 16:28:16 2011 @@ -115,7 +115,7 @@ /* Don't create cache segments smaller than this value unless the total * cache size itself is smaller. */ -#define MIN_SEGMENT_SIZE 0x200 +#define MIN_SEGMENT_SIZE 0x200ull /* Invalid index reference value. Equivalent to APR_UINT32_T(-1) */ @@ -925,13 +925,13 @@ svn_cache__membuffer_cache_create(svn_me * Segments should not be smaller than 32MB and max. cachable item * size should grow as fast as segmentation. */ - while ((2 * MIN_SEGMENT_SIZE (2 * segment_count_shift)) total_size) + while (((2 * MIN_SEGMENT_SIZE) (2 * segment_count_shift)) total_size) ++segment_count_shift; segment_count = 1 segment_count_shift; /* allocate cache as an array of segments / cache objects */ - c = apr_palloc(pool, segment_count * sizeof(*c)); + c = (svn_membuffer_t *)apr_palloc(pool, segment_count * sizeof(*c)); /* Split total cache size into segments of equal size */ @@ -966,7 +966,7 @@ svn_cache__membuffer_cache_create(svn_me directory_size = group_count * sizeof(entry_group_t); } -for (seg = 0; seg segment_count; ++seg) + for (seg = 0; seg segment_count; ++seg) { /* allocate buffers and initialize cache members */
svn commit: r1101095 - /subversion/trunk/subversion/libsvn_wc/upgrade.c
Author: danielsh Date: Mon May 9 16:31:57 2011 New Revision: 1101095 URL: http://svn.apache.org/viewvc?rev=1101095view=rev Log: * subversion/libsvn_wc/ugprade.c (bump_to_29): Fail fast, i.e., before making any changes. Modified: subversion/trunk/subversion/libsvn_wc/upgrade.c Modified: subversion/trunk/subversion/libsvn_wc/upgrade.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/upgrade.c?rev=1101095r1=1101094r2=1101095view=diff == --- subversion/trunk/subversion/libsvn_wc/upgrade.c (original) +++ subversion/trunk/subversion/libsvn_wc/upgrade.c Mon May 9 16:31:57 2011 @@ -1216,12 +1216,12 @@ bump_to_28(void *baton, svn_sqlite__db_t static svn_error_t * bump_to_29(void *baton, svn_sqlite__db_t *sdb, apr_pool_t *scratch_pool) { - SVN_ERR(svn_sqlite__exec_statements(sdb, STMT_CREATE_EXTERNALS)); - SVN_ERR(svn_sqlite__exec_statements(sdb, STMT_UPGRADE_TO_29)); - /* ### Before enabling this code we should be able to upgrade existing ### file externals to their new location */ SVN_ERR_MALFUNCTION(); + + SVN_ERR(svn_sqlite__exec_statements(sdb, STMT_CREATE_EXTERNALS)); + SVN_ERR(svn_sqlite__exec_statements(sdb, STMT_UPGRADE_TO_29)); return SVN_NO_ERROR; }
Re: svn commit: r1100738 - /subversion/trunk/subversion/libsvn_subr/cache-membuffer.c
On 08.05.2011 18:40, Daniel Shahaf wrote: A few questions: stef...@apache.org wrote on Sun, May 08, 2011 at 13:48:33 -: Author: stefan2 Date: Sun May 8 13:48:33 2011 New Revision: 1100738 URL: http://svn.apache.org/viewvc?rev=1100738view=rev Log: Make membuffer cache segmentation dynamic, i.e. don't segment smaller caches. That will allow for much larger objects to be cached such as large directories. Remember: max cachable item size = cache size / (4 * #segments) * subversion/libsvn_subr/cache-membuffer.c (CACHE_SEGMENTS): drop constant (MIN_SEGMENT_SIZE): introduce segmentation threshold constant (svn_membuffer_t): add segment count variable (get_group_index): adapt cache segment selection (svn_cache__membuffer_cache_create): determine number of segments dynamically (svn_membuffer_cache_get_info): adapt to variable segment count Modified: subversion/trunk/subversion/libsvn_subr/cache-membuffer.c Modified: subversion/trunk/subversion/libsvn_subr/cache-membuffer.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/cache-membuffer.c?rev=1100738r1=1100737r2=1100738view=diff == --- subversion/trunk/subversion/libsvn_subr/cache-membuffer.c (original) +++ subversion/trunk/subversion/libsvn_subr/cache-membuffer.c Sun May 8 13:48:33 2011 @@ -619,7 +621,7 @@ get_group_index(svn_membuffer_t **cache, memcpy(to_find, checksum-digest, APR_MD5_DIGESTSIZE); /* select the cache segment to use */ - *cache =(*cache)[to_find[0] % CACHE_SEGMENTS]; + *cache =(*cache)[to_find[0] ((*cache)-segment_count -1)]; Why did you switch from modulo to bitwise-and ? For speed. This is on a critical path (cache lookups are frequent and modulo is a very expensive operation). The previous code also used the bitwise operator because the compiler knew that CACHE_SEGMENTS was a power of 2. /* Get the group that *must* contain the entry. Fold the hash value * just to be sure (it should not be necessary for perfect hashes). @@ -903,16 +905,38 @@ svn_cache__membuffer_cache_create(svn_me svn_boolean_t thread_safe, apr_pool_t *pool) { - /* allocate cache as an array of segments / cache objects */ - svn_membuffer_t *c = apr_palloc(pool, CACHE_SEGMENTS * sizeof(*c)); + svn_membuffer_t *c; + + apr_uint32_t segment_count_shift = 0; + apr_uint32_t segment_count = 1; + apr_uint32_t seg; apr_uint32_t group_count; apr_uint64_t data_size; + /* Determine a reasonable number of cache segments. Segmentation is + * only useful for multi-threaded / multi-core servers as it reduces + * lock contention on these systems. + * + * But on these systems, we can assume that ample memory has been + * allocated to this cache. Smaller caches should not be segmented + * as this severely limites the maximum size of cachable items. + * + * Segments should not be smaller than 32MB and max. cachable item + * size should grow as fast as segmentation. + */ + while ((2 * MIN_SEGMENT_SIZE (2 * segment_count_shift)) total_size) +++segment_count_shift; + x * y z, confusing to parse for precedence, but the result is the same either way. There was a less obvious issue behind that as segment_count_shift being 32 bits makes the whole left-hand side 32 bits only. Fixed in r1101091. As to shifting by 2*segment_count_shift... if I understand correctly that is in order to balance the size of a segment[1] v. the number of segments? [1] (and via that the maximum cacheable item size?) Exactly. @@ -942,10 +966,12 @@ svn_cache__membuffer_cache_create(svn_me directory_size = group_count * sizeof(entry_group_t); } - for (seg = 0; seg CACHE_SEGMENTS; ++seg) +for (seg = 0; seg segment_count; ++seg) { Wrong indentation change. Fixed in r1101091. -- Stefan^2.
svn commit: r1101124 - /subversion/trunk/CHANGES
Author: hwright Date: Mon May 9 17:50:56 2011 New Revision: 1101124 URL: http://svn.apache.org/viewvc?rev=1101124view=rev Log: * CHANGES (1.6.17): Add section. Modified: subversion/trunk/CHANGES Modified: subversion/trunk/CHANGES URL: http://svn.apache.org/viewvc/subversion/trunk/CHANGES?rev=1101124r1=1101123r2=1101124view=diff == --- subversion/trunk/CHANGES (original) +++ subversion/trunk/CHANGES Mon May 9 17:50:56 2011 @@ -169,6 +169,19 @@ the 1.6 release: http://subversion.apac * fix type mapping of svn_txdelta_window_t in python bindings (issue #3688) +Version 1.6.17 +(16 May 2011, from /branches/1.6.x) +http://svn.apache.org/repos/asf/subversion/tags/1.6.17 + + User-visible changes: +* improve checkout speed on Windows (issue #3719) +* make 'blame -g' more efficient on with large mergeinfo (r1094692) +* avoid some invalid handle exceptions on Windows (r1095654) +* preserve log message with a non-zero editor exit (r1072084) + + Developer-visible changes: + + Version 1.6.16 (02 Mar 2011, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.16
svn commit: r1101126 - /subversion/trunk/subversion/libsvn_ra_neon/commit.c
Author: philip Date: Mon May 9 18:01:59 2011 New Revision: 1101126 URL: http://svn.apache.org/viewvc?rev=1101126view=rev Log: * subversion/libsvn_ra_neon/commit.c (commit_open_root): Use VTXN stubs with VTXN name. Modified: subversion/trunk/subversion/libsvn_ra_neon/commit.c Modified: subversion/trunk/subversion/libsvn_ra_neon/commit.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_neon/commit.c?rev=1101126r1=1101125r2=1101126view=diff == --- subversion/trunk/subversion/libsvn_ra_neon/commit.c (original) +++ subversion/trunk/subversion/libsvn_ra_neon/commit.c Mon May 9 18:01:59 2011 @@ -782,19 +782,27 @@ static svn_error_t * commit_open_root(vo /* Check the response headers for either the virtual transaction details, or the real transaction details. We need to have one or the other of those! */ - header_val = ne_get_response_header(req-ne_req, - SVN_DAV_VTXN_NAME_HEADER); - if (! header_val) -header_val = ne_get_response_header(req-ne_req, -SVN_DAV_TXN_NAME_HEADER); - if (! header_val) + if ((header_val = ne_get_response_header(req-ne_req, + SVN_DAV_VTXN_NAME_HEADER))) +{ + cc-txn_url = svn_path_url_add_component2(cc-ras-vtxn_stub, +header_val, cc-pool); + cc-txn_root_url += svn_path_url_add_component2(cc-ras-vtxn_root_stub, + header_val, cc-pool); +} + else if ((header_val = ne_get_response_header(req-ne_req, +SVN_DAV_TXN_NAME_HEADER))) +{ + cc-txn_url = svn_path_url_add_component2(cc-ras-txn_stub, +header_val, cc-pool); + cc-txn_root_url = svn_path_url_add_component2(cc-ras-txn_root_stub, + header_val, cc-pool); +} + else return svn_error_createf(SVN_ERR_RA_DAV_REQUEST_FAILED, NULL, _(POST request did not return transaction information)); - cc-txn_url = svn_path_url_add_component2(cc-ras-txn_stub, -header_val, cc-pool); - cc-txn_root_url = svn_path_url_add_component2(cc-ras-txn_root_stub, - header_val, cc-pool); root-rsrc = NULL; root-txn_root_url = svn_path_url_add_component2(cc-txn_root_url,
svn commit: r1101171 - in /subversion/trunk/subversion: libsvn_wc/wc-queries.sql libsvn_wc/wc_db.c tests/libsvn_wc/db-test.c
Author: rhuijben Date: Mon May 9 19:49:44 2011 New Revision: 1101171 URL: http://svn.apache.org/viewvc?rev=1101171view=rev Log: Implement the insertion and reading of nodes in the EXTERNALS table. * subversion/libsvn_wc/wc-queries.sql (STMT_INSERT_EXTERNAL): New query. (STMT_SELECT_EXTERNAL_INFO, STMT_SELECT_EXTERNAL_INFO_WITH_LOCK): New queries for external_read() (STMT_SELECT_EXTERNAL_CHILDREN, STMT_SELECT_EXTERNALS_DEFINED): New queries for fetching file externals in a directory and defined on a parent dir. * subversion/libsvn_wc/wc_db.c (insert_external_node): Implement for format 29. (svn_wc__db_external_read): Implement for format 29. Make sure old error text matches the new one. * subversion/tests/libsvn_wc/db-test.c (create_fake_wc): Insert externals table. (test_externals_store): New function to test the new (or the old) file externals storage. (test_funcs): Add test_externals_store. Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql subversion/trunk/subversion/libsvn_wc/wc_db.c subversion/trunk/subversion/tests/libsvn_wc/db-test.c Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-queries.sql?rev=1101171r1=1101170r2=1101171view=diff == --- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original) +++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Mon May 9 19:49:44 2011 @@ -814,6 +814,43 @@ WHERE wc_id = ?1 AND local_relpath = ?2 -- STMT_SELECT_ACTUAL_CHILDREN SELECT 1 FROM actual_node WHERE wc_id = ?1 AND parent_relpath = ?2 +-- STMT_INSERT_EXTERNAL +INSERT OR REPLACE INTO externals ( +wc_id, local_relpath, parent_relpath, repos_id, repos_path, revision, +kind, symlink_target, changed_revision, changed_date, changed_author, +record_relpath, recorded_url, recorded_operational_revision, +recorded_revision, checksum, properties, dav_cache) +VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, +?17, ?18) + +-- STMT_SELECT_EXTERNAL_INFO +SELECT kind, revision, repos_id, repos_path, properties, checksum, +symlink_target, changed_revision, changed_date, changed_author, +translated_size, last_mod_time, record_relpath, recorded_url, +recorded_operational_revision, recorded_revision, +FROM externals WHERE wc_id = ?1 AND local_relpath = ?2 +LIMIT 1 + +-- STMT_SELECT_EXTERNAL_INFO_WITH_LOCK +SELECT kind, revision, externals.repos_id, externals.repos_path, properties, +checksum, symlink_target, changed_revision, changed_date, changed_author, +translated_size, last_mod_time, record_relpath, recorded_url, +recorded_operational_revision, recorded_revision, +lock_token, lock_owner, lock_comment, lock_date +FROM externals +LEFT OUTER JOIN lock ON externals.repos_id = lock.repos_id + AND externals.repos_path = lock.repos_relpath + WHERE wc_id = ?1 AND local_relpath = ?2 +LIMIT 1 + +-- STMT_SELECT_EXTERNAL_CHILDREN +SELECT local_relpath +FROM externals WHERE wc_id = ?1 AND parent_relpath = ?2 + +-- STMT_SELECT_EXTERNALS_DEFINED +SELECT local_relpath +FROM externals WHERE wc_id = ?1 AND record_relpath = ?2 + /* - */ /* these are used in entries.c */ Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1101171r1=1101170r2=1101171view=diff == --- subversion/trunk/subversion/libsvn_wc/wc_db.c (original) +++ subversion/trunk/subversion/libsvn_wc/wc_db.c Mon May 9 19:49:44 2011 @@ -2613,7 +2613,70 @@ insert_external_node(void *baton, } return SVN_NO_ERROR; #else - NOT_IMPLEMENTED(); + apr_int64_t repos_id; + svn_sqlite__stmt_t *stmt; + + if (ieb-repos_id != INVALID_REPOS_ID) +repos_id = ieb-repos_id; + else +SVN_ERR(create_repos_id(repos_id, ieb-repos_root_url, ieb-repos_uuid, +wcroot-sdb, scratch_pool)); + + SVN_ERR(svn_sqlite__get_statement(stmt, wcroot-sdb, STMT_INSERT_EXTERNAL)); + + if (ieb-kind != svn_wc__db_kind_dir) +{ + SVN_ERR(svn_sqlite__bindf(stmt, issisrtsrisss, +wcroot-wc_id, +local_relpath, +svn_relpath_dirname(local_relpath, +scratch_pool), +repos_id, +ieb-repos_relpath, +ieb-revision, +kind_map, ieb-kind, +(ieb-kind == svn_wc__db_kind_symlink) +? ieb-target +: NULL, +
svn commit: r1101195 - /subversion/trunk/subversion/libsvn_client/merge.c
Author: pburba Date: Mon May 9 20:03:50 2011 New Revision: 1101195 URL: http://svn.apache.org/viewvc?rev=1101195view=rev Log: Don't create subpools in merge svn_wc_diff_callbacks4_t callbacks when there are already scratch_pools available. Suggested by: rhuijben * subversion/libsvn_client/merge.c (merge_file_changed, merge_file_added, merge_file_deleted, merge_dir_added, merge_dir_deleted): Modified: subversion/trunk/subversion/libsvn_client/merge.c Modified: subversion/trunk/subversion/libsvn_client/merge.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1101195r1=1101194r2=1101195view=diff == --- subversion/trunk/subversion/libsvn_client/merge.c (original) +++ subversion/trunk/subversion/libsvn_client/merge.c Mon May 9 20:03:50 2011 @@ -1319,7 +1319,6 @@ merge_file_changed(svn_wc_notify_state_t apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = baton; - apr_pool_t *subpool; enum svn_wc_merge_outcome_t merge_outcome; svn_node_kind_t wc_kind; svn_boolean_t is_deleted; @@ -1395,8 +1394,6 @@ merge_file_changed(svn_wc_notify_state_t return SVN_NO_ERROR; } - subpool = svn_pool_create(merge_b-pool); - /* ### TODO: Thwart attempts to merge into a path that has ### unresolved conflicts. This needs to be smart enough to deal ### with tree conflicts! @@ -1431,7 +1428,6 @@ merge_file_changed(svn_wc_notify_state_t if (tree_conflicted != NULL) *tree_conflicted = TRUE; - svn_pool_destroy(subpool); return SVN_NO_ERROR; } } @@ -1441,7 +1437,6 @@ merge_file_changed(svn_wc_notify_state_t /* Easy out: We are only applying mergeinfo differences. */ if (merge_b-record_only) { - svn_pool_destroy(subpool); if (content_state) *content_state = svn_wc_notify_state_unchanged; return SVN_NO_ERROR; @@ -1455,10 +1450,10 @@ merge_file_changed(svn_wc_notify_state_t '.merge-right.r%ld' strings are used to tag onto a file name in case of a merge conflict */ const char *target_label = _(.working); - const char *left_label = apr_psprintf(subpool, + const char *left_label = apr_psprintf(scratch_pool, _(.merge-left.r%ld), older_rev); - const char *right_label = apr_psprintf(subpool, + const char *right_label = apr_psprintf(scratch_pool, _(.merge-right.r%ld), yours_rev); conflict_resolver_baton_t conflict_baton = { 0 }; @@ -1466,7 +1461,7 @@ merge_file_changed(svn_wc_notify_state_t const svn_wc_conflict_version_t *right; SVN_ERR(svn_wc_text_modified_p2(has_local_mods, merge_b-ctx-wc_ctx, - mine_abspath, FALSE, subpool)); + mine_abspath, FALSE, scratch_pool)); conflict_baton.wrapped_func = merge_b-ctx-conflict_func2; conflict_baton.wrapped_baton = merge_b-ctx-conflict_baton2; @@ -1484,7 +1479,7 @@ merge_file_changed(svn_wc_notify_state_t conflict_resolver, conflict_baton, merge_b-ctx-cancel_func, merge_b-ctx-cancel_baton, -subpool)); +scratch_pool)); if (content_state) { @@ -1502,7 +1497,6 @@ merge_file_changed(svn_wc_notify_state_t } } - svn_pool_destroy(subpool); return SVN_NO_ERROR; } @@ -1526,7 +1520,6 @@ merge_file_added(svn_wc_notify_state_t * apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = baton; - apr_pool_t *subpool = svn_pool_create(merge_b-pool); svn_node_kind_t kind; int i; apr_hash_t *file_props; @@ -1536,7 +1529,6 @@ merge_file_added(svn_wc_notify_state_t * /* Easy out: We are only applying mergeinfo differences. */ if (merge_b-record_only) { - svn_pool_destroy(subpool); if (content_state) *content_state = svn_wc_notify_state_unchanged; if (prop_state) @@ -1551,7 +1543,7 @@ merge_file_added(svn_wc_notify_state_t * *prop_state = svn_wc_notify_state_unknown; /* Apply the prop changes to a new hash table. */ - file_props = apr_hash_copy(subpool, original_props); + file_props = apr_hash_copy(scratch_pool, original_props); for (i = 0; i prop_changes-nelts; ++i) { const svn_prop_t *prop = APR_ARRAY_IDX(prop_changes, i, svn_prop_t); @@ -1600,12 +1592,11 @@ merge_file_added(svn_wc_notify_state_t * else if (content_state) *content_state = obstr_state; -svn_pool_destroy(subpool); return SVN_NO_ERROR; } } - SVN_ERR(svn_io_check_path(mine_abspath, kind,
svn commit: r1101196 - /subversion/trunk/subversion/libsvn_wc/wc_db_private.h
Author: julianfoad Date: Mon May 9 20:04:15 2011 New Revision: 1101196 URL: http://svn.apache.org/viewvc?rev=1101196view=rev Log: * subversion/libsvn_wc/wc_db_private.h Change the include-guard name to 'WC_DB_PRIVATE_H' to match the file name. Modified: subversion/trunk/subversion/libsvn_wc/wc_db_private.h Modified: subversion/trunk/subversion/libsvn_wc/wc_db_private.h URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db_private.h?rev=1101196r1=1101195r2=1101196view=diff == --- subversion/trunk/subversion/libsvn_wc/wc_db_private.h (original) +++ subversion/trunk/subversion/libsvn_wc/wc_db_private.h Mon May 9 20:04:15 2011 @@ -27,8 +27,8 @@ #error You should not be using these data structures directly #endif /* SVN_WC__I_AM_WC_DB */ -#ifndef WC_DB_PDH_H -#define WC_DB_PDH_H +#ifndef WC_DB_PRIVATE_H +#define WC_DB_PRIVATE_H #include wc_db.h @@ -185,4 +185,4 @@ svn_wc__db_with_txn(svn_wc__db_wcroot_t apr_pool_t *scratch_pool); -#endif /* WC_DB_PDH_H */ +#endif /* WC_DB_PRIVATE_H */
svn commit: r1101205 - in /subversion/trunk/subversion/libsvn_client: diff.c merge.c
Author: pburba Date: Mon May 9 20:18:16 2011 New Revision: 1101205 URL: http://svn.apache.org/viewvc?rev=1101205view=rev Log: Follow-up to r1101195, remove some unnecessary subpools from svn_wc_diff_callbacks4_t callback helpers. * subversion/libsvn_client/diff.c (diff_props_changed): Use the readily available scratch pool rather than creating a new subpool. * subversion/libsvn_client/merge.c (merge_props_changed): Ditto. Modified: subversion/trunk/subversion/libsvn_client/diff.c subversion/trunk/subversion/libsvn_client/merge.c Modified: subversion/trunk/subversion/libsvn_client/diff.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/diff.c?rev=1101205r1=1101204r2=1101205view=diff == --- subversion/trunk/subversion/libsvn_client/diff.c (original) +++ subversion/trunk/subversion/libsvn_client/diff.c Mon May 9 20:18:16 2011 @@ -801,9 +801,9 @@ diff_props_changed(svn_wc_notify_state_t struct diff_cmd_baton *diff_cmd_baton = diff_baton; apr_array_header_t *props; svn_boolean_t show_diff_header; - apr_pool_t *subpool = svn_pool_create(diff_cmd_baton-pool); - SVN_ERR(svn_categorize_props(propchanges, NULL, NULL, props, subpool)); + SVN_ERR(svn_categorize_props(propchanges, NULL, NULL, props, + scratch_pool)); if (apr_hash_get(diff_cmd_baton-visited_paths, path, APR_HASH_KEY_STRING)) show_diff_header = FALSE; @@ -828,7 +828,7 @@ diff_props_changed(svn_wc_notify_state_t diff_cmd_baton-ra_session, diff_cmd_baton-wc_ctx, diff_cmd_baton-wc_root_abspath, - subpool)); + scratch_pool)); /* We've printed the diff header so now we can mark the path as * visited. */ @@ -842,7 +842,6 @@ diff_props_changed(svn_wc_notify_state_t if (tree_conflicted) *tree_conflicted = FALSE; - svn_pool_destroy(subpool); return SVN_NO_ERROR; } Modified: subversion/trunk/subversion/libsvn_client/merge.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1101205r1=1101204r2=1101205view=diff == --- subversion/trunk/subversion/libsvn_client/merge.c (original) +++ subversion/trunk/subversion/libsvn_client/merge.c Mon May 9 20:18:16 2011 @@ -1064,19 +1064,19 @@ merge_props_changed(svn_wc_notify_state_ apr_array_header_t *props; merge_cmd_baton_t *merge_b = baton; svn_client_ctx_t *ctx = merge_b-ctx; - apr_pool_t *subpool = svn_pool_create(merge_b-pool); svn_error_t *err; SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath)); - SVN_ERR(svn_categorize_props(propchanges, NULL, NULL, props, subpool)); + SVN_ERR(svn_categorize_props(propchanges, NULL, NULL, props, + scratch_pool)); /* If we are only applying mergeinfo changes then we need to do additional filtering of PROPS so it contains only mergeinfo changes. */ if (merge_b-record_only props-nelts) { apr_array_header_t *mergeinfo_props = -apr_array_make(subpool, 1, sizeof(svn_prop_t)); +apr_array_make(scratch_pool, 1, sizeof(svn_prop_t)); int i; for (i = 0; i props-nelts; i++) @@ -1110,13 +1110,13 @@ merge_props_changed(svn_wc_notify_state_ merge_b-reintegrate_merge, merge_b-ra_session2, merge_b-ctx, - subpool)); + scratch_pool)); err = svn_wc_merge_props3(state, ctx-wc_ctx, local_abspath, NULL, NULL, original_props, props, merge_b-dry_run, ctx-conflict_func2, ctx-conflict_baton2, ctx-cancel_func, ctx-cancel_baton, -subpool); +scratch_pool); /* If this is not a dry run then make a record in BATON if we find a PATH where mergeinfo is added where none existed previously or PATH @@ -1176,14 +1176,12 @@ merge_props_changed(svn_wc_notify_state_ if (tree_conflicted) *tree_conflicted = TRUE; svn_error_clear(err); - svn_pool_destroy(subpool); return SVN_NO_ERROR; } else if (err) return svn_error_return(err); } - svn_pool_destroy(subpool); return SVN_NO_ERROR; }
svn commit: r1101219 - /subversion/trunk/notes/knobs
Author: stefan2 Date: Mon May 9 20:54:37 2011 New Revision: 1101219 URL: http://svn.apache.org/viewvc?rev=1101219view=rev Log: * notes/knobs: reformat; add all SVN-specific defines used by #ifdef or #ifndef Modified: subversion/trunk/notes/knobs Modified: subversion/trunk/notes/knobs URL: http://svn.apache.org/viewvc/subversion/trunk/notes/knobs?rev=1101219r1=1101218r2=1101219view=diff == --- subversion/trunk/notes/knobs (original) +++ subversion/trunk/notes/knobs Mon May 9 20:54:37 2011 @@ -1,62 +1,339 @@ +0 Content += -This files documents various debugging knobs in Subversion. - -The usual namespace rules apply: only names that begin with SVN_ and don't -contain double underscores are considered part of the public API. Everything -else is not officially supported. - -Compile-time: -= - -* SUFFIX_LINES_TO_KEEP - Scope: libsvn_diff - Purpose: control the identical prefix / identical suffix diff(blame) optimizations. - Range: natural integers - Default: 50 +1 Introduction +2 Condensed list of defines and environment variables +3 Defines tweaking SVN defaults +4 Defines enabling or disabling features +5 Defines controling debug support +6 Defines that affect unit tests +7 Environment variables + + +1 Introduction +== + +The SVN source code boasts a number of enviroment variable or C pre- +processor enabled tweaks that are mainly aimed at developer support. +If you introduce new ones, please document them here. + +The usual namespace rules apply: only names that begin with SVN_ +and don't contain double underscores are considered part of the public +API. Everything else is not officially supported. + + +2 Defines and Environment Variables +=== + +2.1 Defaults + +DEFAULT_FS_TYPE +MAX_SECS_TO_LINGER +SUFFIX_LINES_TO_KEEP +SVN_FS_FS_DEFAULT_MAX_FILES_PER_DIR +SVN_UNALIGNED_ACCESS_IS_OK + +2.2 Features + +CHECK_FOR_SAME_FILE +SVN_DIFF3_HAS_DIFF_PROGRAM_ARG +SVN_DISABLE_ENTRY_CACHE +SVN_MERGE__ALLOW_ALL_FORWARD_MERGES_FROM_SELF +SVN_USE_WIN32_CRASHHANDLER +SVN_SERF_SEND_VTXN_NAME + +2.3 Debugging Support + +SVN_DBG_QUIET +SVN_DEBUG +SVN_CLIENT_COMMIT_DEBUG +DEBUG_CACHE_DUMP_STATS +DEBUG_CACHE_MEMBUFFER +DEBUG_WORK_QUEUE +PACK_AFTER_EVERY_COMMIT +DEBUG_DOUBLE_FREE +SERF_VERBOSE +SSL_VERBOSE + +2.4 Test-only + +QUOPRINT_SVNDIFFS +SVN_ENABLE_DEPRECATION_WARNINGS_IN_TESTS +TEST16K_ADD + +2.5 Environment Variables + +SVNSYNC_UNSUPPORTED_STRIP_MERGEINFO +SVNSYNC_UNSUPPORTED_MIGRATE_SVNMERGE +SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_RELOCATE_VALIDATION +SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_SLEEP_FOR_TIMESTAMPS +SVN_I_LOVE_PANGALACTIC_GARGLE_BLASTERS +SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2 + + +3 Defines tweaking SVN defaults +=== + +3.1 DEFAULT_FS_TYPE + + Scope: (global) + Purpose: selects the default FS type to be used for a new repository + if no type is provided + Range: strings fsfs, bdb + Default: fsfs + Suggested: fsfs + +3.2 MAX_SECS_TO_LINGER + + Scope: svn protocol + Purpose: + Range: + Default: 30 + Suggested: + +3.3 SUFFIX_LINES_TO_KEEP + + Scope: libsvn_diff + Purpose: control the identical prefix / identical suffix diff(blame) + optimizations. + Range: natural integers + Default: 50 Suggested: 0, 1, 99 -* PACK_AFTER_EVERY_COMMIT - Scope: libsvn_fs (only affects libsvn_fs_fs) - Purpose: stress test - Range: boolean - -* SVN_DEPRECATED - Scope: (everywhere) - Purpose: disable deprecated function calls warnings - Range: function declaration decorator - Default: (compiler dependant) - Suggested: (disable those warnings) - -* SVN_FS_FS_DEFAULT_MAX_FILES_PER_DIR - Scope: libsvn_fs_fs - Purpose: set fsfs default shard size - Default: 1000 - Range: natural integers +3.4 SVN_FS_FS_DEFAULT_MAX_FILES_PER_DIR + + Scope: libsvn_fs_fs + Purpose: set fsfs default shard size + Default: 1000 + Range: natural integers Suggested: 1, 2, 3, 4, 5, 7, 11 -* SVN_UNALIGNED_ACCESS_IS_OK - Scope: ? - Purpose: enable memory operations optimizations - Range: boolean values (must be defined) - Default: platform dependant +3.5 SVN_UNALIGNED_ACCESS_IS_OK + + Scope: (global) + Purpose: enable data accesss optimizations. + If your target CPU supports unaligned memory access without + significant performance penalties, you should enable this + optimization as it allows for processing 4 or 8 bytes at + once instead of just one byte at a time. + Range: 0 1 + Default: platform dependant (see svn_types.h) Suggested: 0 -* (TODO: others) -Environment variables: -== +4 Defines enabling or disabling features + + +4.1 CHECK_FOR_SAME_FILE + + Scope: libsvn_subr (file copy) + Purpose: +
svn commit: r1101220 - /subversion/trunk/subversion/libsvn_wc/status.c
Author: rhuijben Date: Mon May 9 20:57:05 2011 New Revision: 1101220 URL: http://svn.apache.org/viewvc?rev=1101220view=rev Log: Optimize the status walker a bit for the specific case where it is used on an single target inside a huge directory. Fix two pool lifetime issues and a small lock retrieve problem identified by running the test suite with the original version of this patch. This specific case is used when you do 'svn rm file' and this severly impacts the delete performance when you have a directory with about 16k files. * subversion/libsvn_wc/status.c (read_info): Allocate result in the right pool. Fetch the lock from BASE if necessary. (get_repos_root_url_relpath): Allocate result in the result pool. (get_dir_status): Use subpool for function wide allocations, iterpool for temp work. Avoid the svn_wc__db_read_children_info when we only need a single node in this directory. Simplify another depth check. Modified: subversion/trunk/subversion/libsvn_wc/status.c Modified: subversion/trunk/subversion/libsvn_wc/status.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/status.c?rev=1101220r1=1101219r2=1101220view=diff == --- subversion/trunk/subversion/libsvn_wc/status.c (original) +++ subversion/trunk/subversion/libsvn_wc/status.c Mon May 9 20:57:05 2011 @@ -247,7 +247,7 @@ read_info(const struct svn_wc__db_info_t apr_pool_t *result_pool, apr_pool_t *scratch_pool) { - struct svn_wc__db_info_t *mtb = apr_pcalloc(scratch_pool, sizeof(*mtb)); + struct svn_wc__db_info_t *mtb = apr_pcalloc(result_pool, sizeof(*mtb)); SVN_ERR(svn_wc__db_read_info(mtb-status, mtb-kind, mtb-revnum, mtb-repos_relpath, @@ -262,6 +262,19 @@ read_info(const struct svn_wc__db_info_t db, local_abspath, result_pool, scratch_pool)); + /* Maybe we have to get some shadowed lock from BASE to make our test suite + happy... (It might be completely unrelated, but...) */ + if (mtb-have_base + (mtb-status == svn_wc__db_status_added + || mtb-status == svn_wc__db_status_deleted)) +{ + SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, + mtb-lock, NULL, NULL, NULL, + db, local_abspath, + result_pool, scratch_pool)); +} + #ifdef HAVE_SYMLINK if (mtb-had_props || mtb-props_mod) { @@ -308,7 +321,7 @@ get_repos_root_url_relpath(const char ** *repos_relpath = svn_relpath_join(parent_repos_relpath, svn_dirent_basename(local_abspath, NULL), -scratch_pool); +result_pool); *repos_root_url = parent_repos_root_url; } else if (info-status == svn_wc__db_status_added) @@ -1044,12 +1057,7 @@ get_dir_status(const struct walk_status_ iterpool = svn_pool_create(subpool); - /* ### Performance: Use read_info() on single path if selected != NULL */ - SVN_ERR(svn_wc__db_read_children_info(nodes, conflicts, -wb-db, local_abspath, -subpool, iterpool)); - - err = svn_io_get_dirents3(dirents, local_abspath, FALSE, subpool, subpool); + err = svn_io_get_dirents3(dirents, local_abspath, FALSE, subpool, iterpool); if (err (APR_STATUS_IS_ENOENT(err-apr_err) || SVN__APR_STATUS_IS_ENOTDIR(err-apr_err))) @@ -1062,26 +1070,60 @@ get_dir_status(const struct walk_status_ if (!dir_info) SVN_ERR(read_info(dir_info, local_abspath, wb-db, - scratch_pool, scratch_pool)); + subpool, iterpool)); SVN_ERR(get_repos_root_url_relpath(dir_repos_relpath, dir_repos_root_url, dir_info, parent_repos_relpath, parent_repos_root_url, wb-db, local_abspath, - scratch_pool, scratch_pool)); + subpool, iterpool)); if (selected == NULL) { /* Create a hash containing all children. The source hashes don't all map the same types, but only the keys of the result hash are subsequently used. */ + SVN_ERR(svn_wc__db_read_children_info(nodes, conflicts, +wb-db, local_abspath, +subpool, iterpool)); + all_children = apr_hash_overlay(subpool, nodes, dirents); if (apr_hash_count(conflicts) 0) all_children =
svn commit: r1101224 - in /subversion/trunk/subversion/libsvn_wc: wc-queries.sql wc_db.c
Author: gstein Date: Mon May 9 21:21:25 2011 New Revision: 1101224 URL: http://svn.apache.org/viewvc?rev=1101224view=rev Log: Simplify the changelist change-notifications. We never need to filter the notifications (unlike revert), so if it is in the table: we notify. * subversion/libsvn_wc/wc-queries.sql: (STMT_CREATE_CHANGELIST_LIST): update docco for one UPDATE case (STMT_DELETE_CHANGELIST_LIST_RECURSIVE): removed (STMT_SELECT_CHANGELIST_LIST_RECURSIVE): removed (STMT_DROP_CHANGELIST_LIST): new statement (STMT_SELECT_CHANGELIST_LIST): select all changelist notifications (STMT_CREATE_DELETE_LIST): leave note that we should record wc_id * subversion/libsvn_wc/wc_db.c: (svn_wc__db_op_set_changelist): remove LIKE_ARG and simplify the loop selecting rows for the database. remove the no-row optimization since we want the exiting-statement to drop the table. adjust column indices to account for selecting wc_id (unused for now). on exit, drop the table rather than the special row deletion code. Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql subversion/trunk/subversion/libsvn_wc/wc_db.c Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-queries.sql?rev=1101224r1=1101223r2=1101224view=diff == --- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original) +++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Mon May 9 21:21:25 2011 @@ -386,7 +386,7 @@ CREATE INDEX changelist_list_index ON ch Action Old CL New CL Notification -- -- -- UPDATE ACTUAL NULLNOT NULLcl-set -UPDATE ACTUAL NOT NULLNOT NULLcl-clear / cl-set +UPDATE ACTUAL NOT NULLNOT NULLcl-set UPDATE ACTUAL NOT NULLNULLcl-clear Of the following triggers, the first address the first case, and the second @@ -430,15 +430,13 @@ DROP TRIGGER IF EXISTS trigger_changelis INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) VALUES (?1, ?2, ?3, ?4) --- STMT_DELETE_CHANGELIST_LIST_RECURSIVE -DELETE FROM changelist_list -WHERE wc_id = ?1 AND local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#' +-- STMT_DROP_CHANGELIST_LIST +DROP TABLE IF EXISTS changelist_list --- STMT_SELECT_CHANGELIST_LIST_RECURSIVE -SELECT local_relpath, notify, changelist +-- STMT_SELECT_CHANGELIST_LIST +SELECT wc_id, local_relpath, notify, changelist FROM changelist_list -WHERE wc_id = ?1 AND local_relpath = ?2 or local_relpath LIKE ?3 ESCAPE '#' -ORDER BY local_relpath +ORDER BY wc_id, local_relpath -- STMT_DELETE_ACTUAL_EMPTY DELETE FROM actual_node @@ -1079,6 +1077,8 @@ WHERE local_relpath = ?1 OR local_relpat -- STMT_CREATE_DELETE_LIST DROP TABLE IF EXISTS delete_list; CREATE TEMPORARY TABLE delete_list ( +/* ### we should put the wc_id in here in case a delete spans multiple + ### working copies. queries, etc will need to be adjusted. */ local_relpath TEXT PRIMARY KEY ) Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1101224r1=1101223r2=1101224view=diff == --- subversion/trunk/subversion/libsvn_wc/wc_db.c (original) +++ subversion/trunk/subversion/libsvn_wc/wc_db.c Mon May 9 21:21:25 2011 @@ -4858,7 +4858,6 @@ svn_wc__db_op_set_changelist(svn_wc__db_ struct with_triggers_baton_t wtb = { STMT_CREATE_CHANGELIST_LIST, STMT_DROP_CHANGELIST_LIST_TRIGGERS, NULL, NULL }; - const char *like_arg; svn_sqlite__stmt_t *stmt; svn_boolean_t have_row; apr_pool_t *iterpool = svn_pool_create(scratch_pool); @@ -4906,20 +4905,15 @@ svn_wc__db_op_set_changelist(svn_wc__db_ return SVN_NO_ERROR; } - like_arg = construct_like_arg(local_relpath, scratch_pool); - SVN_ERR(svn_sqlite__get_statement(stmt, wcroot-sdb, -STMT_SELECT_CHANGELIST_LIST_RECURSIVE)); - SVN_ERR(svn_sqlite__bindf(stmt, iss, wcroot-wc_id, local_relpath, -like_arg)); +STMT_SELECT_CHANGELIST_LIST)); SVN_ERR(svn_sqlite__step(have_row, stmt)); - if (!have_row) -return svn_error_return(svn_sqlite__reset(stmt)); /* optimise for no row */ while (have_row) { - const char *notify_relpath = svn_sqlite__column_text(stmt, 0, NULL); - svn_wc_notify_action_t action = svn_sqlite__column_int(stmt, 1); + /* ### wc_id is column 0. use it one day... */ + const char *notify_relpath = svn_sqlite__column_text(stmt, 1, NULL); + svn_wc_notify_action_t action = svn_sqlite__column_int(stmt, 2);
svn commit: r1101226 - in /subversion/trunk/subversion/libsvn_wc: wc-metadata.sql wc-queries.sql
Author: rhuijben Date: Mon May 9 21:26:28 2011 New Revision: 1101226 URL: http://svn.apache.org/viewvc?rev=1101226view=rev Log: Rename a few columns while we still can to match our latest thoughts about this (instead of the old names in NODES). * subversion/libsvn_wc/wc-metadata.sql (STMT_CREATE_EXTERNALS): Rename several columns and remove NULL constraint from the two revisions. Update index. * subversion/libsvn_wc/wc-queries.sql (STMT_INSERT_EXTERNAL, STMT_SELECT_EXTERNAL_INFO, STMT_SELECT_EXTERNAL_INFO_WITH_LOCK, STMT_SELECT_EXTERNALS_DEFINED): Update column names in queries. Suggested by: gstein Modified: subversion/trunk/subversion/libsvn_wc/wc-metadata.sql subversion/trunk/subversion/libsvn_wc/wc-queries.sql Modified: subversion/trunk/subversion/libsvn_wc/wc-metadata.sql URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-metadata.sql?rev=1101226r1=1101225r2=1101226view=diff == --- subversion/trunk/subversion/libsvn_wc/wc-metadata.sql (original) +++ subversion/trunk/subversion/libsvn_wc/wc-metadata.sql Mon May 9 21:26:28 2011 @@ -565,28 +565,29 @@ CREATE TABLE EXTERNALS ( changed_authorTEXT, /* Various cache fields (NULL for directories; see NODES for explanation) */ - translated_size INTEGER, - last_mod_time INTEGER, + recorded_size INTEGER, + recorded_mod_time INTEGER, dav_cache BLOB, /* The local relpath of the directory NODE defining this external (Defaults to the parent directory of the file external after upgrade) */ - record_relpath TEXT NOT NULL, + def_local_relpath TEXT NOT NULL, /* The url of the external as used in the definition */ - recorded_url TEXT NOT NULL, + def_repos_relpath TEXT NOT NULL, /* The operational (peg) and node revision if this is a revision fixed external; otherwise NULL. (Usually these will both have the same value) */ - recorded_operational_revision TEXT NOT NULL, - recorded_revision TEXT NOT NULL, + def_operational_revision TEXT, + def_revision TEXT, PRIMARY KEY (wc_id, local_relpath) ); CREATE INDEX I_EXTERNALS_PARENT ON EXTERNALS (wc_id, parent_relpath); -CREATE UNIQUE INDEX I_EXTERNALS_RECORDED ON EXTERNALS (wc_id, record_relpath, +CREATE UNIQUE INDEX I_EXTERNALS_RECORDED ON EXTERNALS (wc_id, + def_local_relpath, local_relpath); /* Format 20 introduces NODES and removes BASE_NODE and WORKING_NODE */ Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-queries.sql?rev=1101226r1=1101225r2=1101226view=diff == --- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original) +++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Mon May 9 21:26:28 2011 @@ -816,24 +816,24 @@ SELECT 1 FROM actual_node WHERE wc_id = INSERT OR REPLACE INTO externals ( wc_id, local_relpath, parent_relpath, repos_id, repos_path, revision, kind, symlink_target, changed_revision, changed_date, changed_author, -record_relpath, recorded_url, recorded_operational_revision, -recorded_revision, checksum, properties, dav_cache) +def_local_relpath, def_repos_relpath, def_operational_revision, +def_revision, checksum, properties, dav_cache) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18) -- STMT_SELECT_EXTERNAL_INFO SELECT kind, revision, repos_id, repos_path, properties, checksum, symlink_target, changed_revision, changed_date, changed_author, -translated_size, last_mod_time, record_relpath, recorded_url, -recorded_operational_revision, recorded_revision, +recorded_size, recorded_mod_time, def_local_relpath, def_repos_relpath, +def_operational_revision, def_revision FROM externals WHERE wc_id = ?1 AND local_relpath = ?2 LIMIT 1 -- STMT_SELECT_EXTERNAL_INFO_WITH_LOCK SELECT kind, revision, externals.repos_id, externals.repos_path, properties, checksum, symlink_target, changed_revision, changed_date, changed_author, -translated_size, last_mod_time, record_relpath, recorded_url, -recorded_operational_revision, recorded_revision, +recorded_size, recorded_mod_time, def_local_relpath, def_repos_relpath, +def_operational_revision, def_revision, lock_token, lock_owner, lock_comment, lock_date FROM externals LEFT OUTER JOIN lock ON externals.repos_id = lock.repos_id @@ -847,7 +847,7 @@ FROM externals WHERE wc_id = ?1 AND pare -- STMT_SELECT_EXTERNALS_DEFINED SELECT local_relpath -FROM externals WHERE wc_id = ?1 AND record_relpath = ?2 +FROM externals WHERE wc_id = ?1 AND def_local_relpath = ?2 /*
svn commit: r1101227 - /subversion/trunk/tools/dev/benchmarks/large_dirs/create_bigdir.sh
Author: danielsh Date: Mon May 9 21:28:44 2011 New Revision: 1101227 URL: http://svn.apache.org/viewvc?rev=1101227view=rev Log: * tools/dev/benchmarks/large_dirs/create_bigdir.sh (get_sequence): Use a Python 3 -compatible syntax. Suggested by: arfrever Modified: subversion/trunk/tools/dev/benchmarks/large_dirs/create_bigdir.sh Modified: subversion/trunk/tools/dev/benchmarks/large_dirs/create_bigdir.sh URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dev/benchmarks/large_dirs/create_bigdir.sh?rev=1101227r1=1101226r2=1101227view=diff == --- subversion/trunk/tools/dev/benchmarks/large_dirs/create_bigdir.sh (original) +++ subversion/trunk/tools/dev/benchmarks/large_dirs/create_bigdir.sh Mon May 9 21:28:44 2011 @@ -103,7 +103,7 @@ ${SVN} co $URL $WC /dev/null get_sequence() { # three equivalents... - (jot - $1 $2 1 2/dev/null || seq -s ' ' $1 $2 2/dev/null || python -c for i in range($1,$2+1): print i) + (jot - $1 $2 1 2/dev/null || seq -s ' ' $1 $2 2/dev/null || python -c for i in range($1,$2+1): print(i)) } # functions that execute an SVN command
svn commit: r1101235 - in /subversion/trunk/subversion: libsvn_client/status.c libsvn_wc/update_editor.c
Author: rhuijben Date: Mon May 9 21:42:14 2011 New Revision: 1101235 URL: http://svn.apache.org/viewvc?rev=1101235view=rev Log: Stop handling an old entry error message that will never be returned from our new apis. * subversion/libsvn_client/status.c (svn_client_status5): SVN_ERR_WC_MISSING won't be returned... ever. * subversion/libsvn_wc/update_editor.c (open_root): Just check the result of the function instead of performing a db call. Modified: subversion/trunk/subversion/libsvn_client/status.c subversion/trunk/subversion/libsvn_wc/update_editor.c Modified: subversion/trunk/subversion/libsvn_client/status.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/status.c?rev=1101235r1=1101234r2=1101235view=diff == --- subversion/trunk/subversion/libsvn_client/status.c (original) +++ subversion/trunk/subversion/libsvn_client/status.c Mon May 9 21:42:14 2011 @@ -294,18 +294,7 @@ svn_client_status5(svn_revnum_t *result_ svn_node_kind_t kind, disk_kind; SVN_ERR(svn_io_check_path(target_abspath, disk_kind, pool)); -err = svn_wc_read_kind(kind, ctx-wc_ctx, target_abspath, FALSE, pool); - -if (err (err-apr_err == SVN_ERR_WC_MISSING)) - { -/* Calling code expects SVN_ERR_WC_NOT_WORKING_COPY. */ -svn_error_clear(err); -return svn_error_createf(SVN_ERR_WC_NOT_WORKING_COPY, NULL, - _('%s' is not a working copy), - svn_dirent_local_style(path, pool)); - } -else if (err) - return err; +SVN_ERR(svn_wc_read_kind(kind, ctx-wc_ctx, target_abspath, FALSE, pool)); /* Dir must be an existing directory or the status editor fails */ if (kind == svn_node_dir disk_kind == svn_node_dir) Modified: subversion/trunk/subversion/libsvn_wc/update_editor.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/update_editor.c?rev=1101235r1=1101234r2=1101235view=diff == --- subversion/trunk/subversion/libsvn_wc/update_editor.c (original) +++ subversion/trunk/subversion/libsvn_wc/update_editor.c Mon May 9 21:42:14 2011 @@ -953,25 +953,18 @@ open_root(void *edit_baton, SVN_ERR(make_dir_baton(db, NULL, eb, NULL, FALSE, pool)); *dir_baton = db; - SVN_ERR(svn_wc__db_read_kind(kind, eb-db, db-local_abspath, TRUE, pool)); + err = already_in_a_tree_conflict(already_conflicted, eb-db, + db-local_abspath, pool); - if (kind == svn_wc__db_kind_dir) + if (err) { - err = already_in_a_tree_conflict(already_conflicted, eb-db, - db-local_abspath, pool); + if (err-apr_err != SVN_ERR_WC_PATH_NOT_FOUND) +return svn_error_return(err); - if (err err-apr_err == SVN_ERR_WC_MISSING) -{ - svn_error_clear(err); - already_conflicted = FALSE; -} - else -SVN_ERR(err); + svn_error_clear(err); + already_conflicted = FALSE; } - else -already_conflicted = FALSE; - - if (already_conflicted) + else if (already_conflicted) { db-skip_this = TRUE; db-already_notified = TRUE;
svn commit: r1101241 - in /subversion/site/publish: download.cgi download.html
Author: hwright Date: Mon May 9 21:57:30 2011 New Revision: 1101241 URL: http://svn.apache.org/viewvc?rev=1101241view=rev Log: Start to support mirroring releases on ASF infrastructure, by introducing a shell download script. This is still pretty rough, so changes to prose and formatting are most welcomed. This isn't linked to by anything yet, but I suspect it will eventually replace source-code.html (or at least compliment it). * publish/download.cgi publish/download.html: New. Added: subversion/site/publish/download.cgi (with props) subversion/site/publish/download.html (with props) Added: subversion/site/publish/download.cgi URL: http://svn.apache.org/viewvc/subversion/site/publish/download.cgi?rev=1101241view=auto == --- subversion/site/publish/download.cgi (added) +++ subversion/site/publish/download.cgi Mon May 9 21:57:30 2011 @@ -0,0 +1,6 @@ +#!/bin/sh +# Wrapper script around mirrors.cgi script +# (we must change to that directory in order for python to pick up the +# python includes correctly) +cd /www/www.apache.org/dyn/mirrors +/www/www.apache.org/dyn/mirrors/mirrors.cgi $* Propchange: subversion/site/publish/download.cgi -- svn:eol-style = native Propchange: subversion/site/publish/download.cgi -- svn:executable = * Added: subversion/site/publish/download.html URL: http://svn.apache.org/viewvc/subversion/site/publish/download.html?rev=1101241view=auto == --- subversion/site/publish/download.html (added) +++ subversion/site/publish/download.html Mon May 9 21:57:30 2011 @@ -0,0 +1,262 @@ +!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.1//EN + http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd; +html xmlns=http://www.w3.org/1999/xhtml; +head +titleDownload Apache Subversion Sources/title +meta http-equiv=Content-Type content=text/html;charset=utf-8 / +style type=text/css + @import url(/style/site.css); +/style +/head + +body +!--#include virtual=/site-banner.html -- +!--#include virtual=/site-nav.html -- +div id=site-content +!--#include virtual=/site-notice.html -- + +div class=notice +pstrongNote:/strong Subversion 1.7 is emnot released yet/em, and +this page is still under construction. Please see the +a href=/source-code.htmlsource code/a page until this notice +disappears./p +/div + +h1Download Source Code/h1 + +div class=bigpoint +pThe best available version of Apache Subversion + is:nbsp;a href=docs/release-notes/1.7.html1.7.0-aleph0/a/p +/div !-- .bigpoint -- + +pUse the links below to download Apache Subversion from our of our mirrors. + You strongmust/strong a href=#verifyingverify the integrity/a of + the downloaded files using signatures downloaded from our main + directory./p + +pThe following are the currently support versions of Subversion. Older + releases are available from the + a href=http://archive.apache.org/dist/subversion/;archive download + site/a./p + +pThe Apache Subversion project only distributes source code, but a number + of third parties provide binary packages for a number of platforms. To + find a package for your platform, please visit the a href=/packages.html + binary packages/a page./p + +div class=h2 id=mirror +h2Mirror + a class=sectionlink href=#mirror +title=Link to this sectionpara;/a +/h2 + +p[if-any logo] + a href=[link]img align=right src=[logo] border=0 //a + [end] + + The currently selected mirror is b[preferred]/b. If you encounter a + problem with this mirror, please select another mirror. If all + mirrors are failing, there are ibackup/i mirrors (at the end of + the mirrors list) that should be available./p + +form action=[location] method=get id=SelectMirror +Other mirrors: +select name=Preferred + [if-any http] +[for http]option value=[http][http]/option[end] + [end] + [if-any ftp] +[for ftp]option value=[ftp][ftp]/option[end] + [end] + [if-any backup] +[for backup]option value=[backup][backup] (backup)/option[end] + [end] +/select +input type=submit value=Change / +/form + +pYou may also consult the a href=http://www.apache.org/mirrors/;complete + list of mirrors/a./p + +/div !-- #mirror -- + +pYou can install Subversion by compiling + its a href=#source-release source code release/a directly, or + you can install one of the a href=packages.html prepackaged + binaries/a if there is one for your operating system. Unless a + release has ttalpha/tt, ttbeta/tt, or ttrc/tt in + its name, it is tested and considered stable for production + use./p + +pWhen upgrading, just install on top of the older release. + Subversion 1.x is forward-compatible with any newer 1.y. No + repository upgrade is required. As long as client and server both
svn commit: r1101246 - /subversion/trunk/notes/knobs
Author: danielsh Date: Mon May 9 22:18:46 2011 New Revision: 1101246 URL: http://svn.apache.org/viewvc?rev=1101246view=rev Log: * notes/knobs: (Re-)Add 'SVN_DEPRECATED'. Modified: subversion/trunk/notes/knobs Modified: subversion/trunk/notes/knobs URL: http://svn.apache.org/viewvc/subversion/trunk/notes/knobs?rev=1101246r1=1101245r2=1101246view=diff == --- subversion/trunk/notes/knobs (original) +++ subversion/trunk/notes/knobs Mon May 9 22:18:46 2011 @@ -54,6 +54,7 @@ PACK_AFTER_EVERY_COMMIT DEBUG_DOUBLE_FREE SERF_VERBOSE SSL_VERBOSE +SVN_DEPRECATED 2.4 Test-only @@ -268,6 +269,13 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2 Default: not defined Suggested: defined, not defined +5.11 SVN_DEPRECATED + + Scope: (everywhere) + Purpose: disable deprecated function calls warnings + Range: function declaration decorator + Default: (compiler dependant) + Suggested: (disable deprecation warnings), or compiler-specific decorators 6 Defines that affect unit tests
Re: svn commit: r1101219 - /subversion/trunk/notes/knobs
stef...@apache.org wrote on Mon, May 09, 2011 at 20:54:37 -: Author: stefan2 Date: Mon May 9 20:54:37 2011 New Revision: 1101219 URL: http://svn.apache.org/viewvc?rev=1101219view=rev Log: * notes/knobs: reformat; add all SVN-specific defines used by #ifdef or #ifndef Nice :-) Modified: subversion/trunk/notes/knobs Modified: subversion/trunk/notes/knobs URL: http://svn.apache.org/viewvc/subversion/trunk/notes/knobs?rev=1101219r1=1101218r2=1101219view=diff == --- subversion/trunk/notes/knobs (original) +++ subversion/trunk/notes/knobs Mon May 9 20:54:37 2011 @@ -1,62 +1,339 @@
svn commit: r1101247 - /subversion/trunk/notes/knobs
Author: danielsh Date: Mon May 9 22:25:26 2011 New Revision: 1101247 URL: http://svn.apache.org/viewvc?rev=1101247view=rev Log: * notes/knobs: Add 'SVN_FS__TRAIL_DEBUG'. Modified: subversion/trunk/notes/knobs Modified: subversion/trunk/notes/knobs URL: http://svn.apache.org/viewvc/subversion/trunk/notes/knobs?rev=1101247r1=1101246r2=1101247view=diff == --- subversion/trunk/notes/knobs (original) +++ subversion/trunk/notes/knobs Mon May 9 22:25:26 2011 @@ -55,6 +55,7 @@ DEBUG_DOUBLE_FREE SERF_VERBOSE SSL_VERBOSE SVN_DEPRECATED +SVN_FS__TRAIL_DEBUG 2.4 Test-only @@ -277,6 +278,14 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2 Default: (compiler dependant) Suggested: (disable deprecation warnings), or compiler-specific decorators +5.12 SVN_FS__TRAIL_DEBUG + + Scope: libsvn_fs_base + Purpose: + Range: definedness + Default: not defined + Suggested: defined, not defined + 6 Defines that affect unit tests
svn commit: r1101275 - in /subversion/trunk/subversion/libsvn_wc: wc-queries.sql wc_db.c wc_db.h
Author: rhuijben Date: Tue May 10 00:02:30 2011 New Revision: 1101275 URL: http://svn.apache.org/viewvc?rev=1101275view=rev Log: Add more format 29 implementations for file externals. * subversion/libsvn_wc/wc_db.h (svn_wc__db_external_record_fileinfo): New function. * subversion/libsvn_wc/wc_db.c (insert_external_node): Add missing code for inserting work items. (db_external_remove): New function. (svn_wc__db_external_remove): Implement using db_external_remove. (svn_wc__db_external_record_fileinfo): New function. (svn_wc__db_external_read_pristine_props): Implement for format 29. * subversion/libsvn_wc/wc-queries.sql (STMT_UPDATE_EXTERNAL_FILEINFO): New query. (STMT_DELETE_EXTERNAL): New query. Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql subversion/trunk/subversion/libsvn_wc/wc_db.c subversion/trunk/subversion/libsvn_wc/wc_db.h Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-queries.sql?rev=1101275r1=1101274r2=1101275view=diff == --- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original) +++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Tue May 10 00:02:30 2011 @@ -849,6 +849,14 @@ FROM externals WHERE wc_id = ?1 AND pare SELECT local_relpath FROM externals WHERE wc_id = ?1 AND def_local_relpath = ?2 +-- STMT_UPDATE_EXTERNAL_FILEINFO +UPDATE externals SET recorded_size = ?3, recorded_mod_time = ?4 +WHERE wc_id = ?1 AND local_relpath = ?2 + +-- STMT_DELETE_EXTERNAL +DELETE FROM externals +WHERE wc_id = ?1 AND local_relpath = ?2 + /* - */ /* these are used in entries.c */ Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1101275r1=1101274r2=1101275view=diff == --- subversion/trunk/subversion/libsvn_wc/wc_db.c (original) +++ subversion/trunk/subversion/libsvn_wc/wc_db.c Tue May 10 00:02:30 2011 @@ -2675,6 +2675,9 @@ insert_external_node(void *baton, SVN_ERR(svn_sqlite__bind_revnum(stmt, 15, ieb-recorded_revision)); SVN_ERR(svn_sqlite__insert(NULL, stmt)); + /* ### TODO: Implement keeping recorded info */ + + SVN_ERR(add_work_items(wcroot-sdb, ieb-work_items, scratch_pool)); return SVN_NO_ERROR; #endif @@ -2897,6 +2900,21 @@ svn_wc__db_external_add_dir(svn_wc__db_t ieb, scratch_pool)); } +static svn_error_t * +db_external_remove(void *baton, svn_wc__db_wcroot_t *wcroot, + const char *local_relpath, apr_pool_t *scratch_pool) +{ + svn_sqlite__stmt_t *stmt; + + SVN_ERR(svn_sqlite__get_statement(stmt, wcroot-sdb, +STMT_DELETE_EXTERNAL)); + SVN_ERR(svn_sqlite__bindf(stmt, is, wcroot-wc_id, local_relpath)); + SVN_ERR(svn_sqlite__step_done(stmt)); + + /* ### What about actual? */ + return SVN_NO_ERROR; +} + svn_error_t * svn_wc__db_external_remove(svn_wc__db_t *db, const char *local_abspath, @@ -2926,9 +2944,44 @@ svn_wc__db_external_remove(svn_wc__db_t return SVN_NO_ERROR; #else - NOT_IMPLEMENTED(); + SVN_ERR(svn_wc__db_with_txn(wcroot, local_relpath, db_external_remove, NULL, + scratch_pool)); + + return SVN_NO_ERROR; #endif } + +svn_error_t * +svn_wc__db_external_record_fileinfo(svn_wc__db_t *db, +const char *local_abspath, +const char *wri_abspath, +svn_filesize_t recorded_size, +apr_time_t recorded_mod_time, +apr_pool_t *scratch_pool) +{ + svn_wc__db_wcroot_t *wcroot; + const char *local_relpath; + svn_sqlite__stmt_t *stmt; + int affected_rows; + + SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath)); + + SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(wcroot, local_relpath, db, + local_abspath, scratch_pool, scratch_pool)); + VERIFY_USABLE_WCROOT(wcroot); + + SVN_ERR(svn_sqlite__get_statement(stmt, wcroot-sdb, +STMT_UPDATE_EXTERNAL_FILEINFO)); + SVN_ERR(svn_sqlite__bindf(stmt, isii, wcroot-wc_id, local_relpath, +recorded_size, +recorded_mod_time)); + SVN_ERR(svn_sqlite__update(affected_rows, stmt)); + + SVN_ERR_ASSERT(affected_rows == 1); + + return SVN_NO_ERROR; +} + svn_error_t * svn_wc__db_external_read(svn_wc__db_kind_t *kind, svn_revnum_t *revision, @@ -3166,6 +3219,11 @@ svn_wc__db_external_read_pristine_props( { svn_wc__db_wcroot_t *wcroot; const char *local_relpath; +#if SVN_WC__VERSION =
svn commit: r1101278 - /subversion/trunk/subversion/libsvn_wc/wc_db.c
Author: rhuijben Date: Tue May 10 00:20:19 2011 New Revision: 1101278 URL: http://svn.apache.org/viewvc?rev=1101278view=rev Log: * subversion/libsvn_wc/wc_db.c (has_local_mods): Revert accidental change from r1101275. Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1101278r1=1101277r2=1101278view=diff == --- subversion/trunk/subversion/libsvn_wc/wc_db.c (original) +++ subversion/trunk/subversion/libsvn_wc/wc_db.c Tue May 10 00:20:19 2011 @@ -11842,7 +11842,7 @@ has_local_mods(svn_boolean_t *is_modifie { SVN_ERR(svn_wc__internal_file_modified_p(is_modified, NULL, NULL, db, node_abspath, - FALSE, TRUE, NULL, + FALSE, TRUE, iterpool)); if (*is_modified) break;