svn commit: r1100937 - /subversion/trunk/subversion/libsvn_subr/svn_string.c

2011-05-09 Thread danielsh
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

2011-05-09 Thread julianfoad
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

2011-05-09 Thread julianfoad
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

2011-05-09 Thread danielsh
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

2011-05-09 Thread julianfoad
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

2011-05-09 Thread stsp
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

2011-05-09 Thread julianfoad
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

2011-05-09 Thread julianfoad
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

2011-05-09 Thread hwright
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

2011-05-09 Thread stsp
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

2011-05-09 Thread pburba
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

2011-05-09 Thread Hyrum K Wright
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

2011-05-09 Thread Bert Huijben
 -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

2011-05-09 Thread Julian Foad
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

2011-05-09 Thread Hyrum K Wright
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

2011-05-09 Thread hwright
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

2011-05-09 Thread rhuijben
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

2011-05-09 Thread Philip Martin
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

2011-05-09 Thread rhuijben
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/

2011-05-09 Thread hwright
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

2011-05-09 Thread stefan2
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

2011-05-09 Thread danielsh
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

2011-05-09 Thread Stefan Fuhrmann

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

2011-05-09 Thread hwright
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

2011-05-09 Thread philip
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

2011-05-09 Thread rhuijben
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

2011-05-09 Thread pburba
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

2011-05-09 Thread julianfoad
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

2011-05-09 Thread pburba
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

2011-05-09 Thread stefan2
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

2011-05-09 Thread rhuijben
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

2011-05-09 Thread gstein
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

2011-05-09 Thread rhuijben
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

2011-05-09 Thread danielsh
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

2011-05-09 Thread rhuijben
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

2011-05-09 Thread hwright
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

2011-05-09 Thread danielsh
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

2011-05-09 Thread Daniel Shahaf
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

2011-05-09 Thread danielsh
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

2011-05-09 Thread rhuijben
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

2011-05-09 Thread rhuijben
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;