You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/11/09 18:32:14 UTC

svn commit: r1033111 - in /subversion/branches/1.6.x: ./ subversion/libsvn_repos/ subversion/tests/cmdline/ subversion/tests/cmdline/svnsync_tests_data/

Author: hwright
Date: Tue Nov  9 17:32:13 2010
New Revision: 1033111

URL: http://svn.apache.org/viewvc?rev=1033111&view=rev
Log:
Merge r962377, r962378 from trunk:

 * r962377, r962378
   Fix svnsync handling of directory copyfrom.
   Justification:
     Could lead to sync'd repositories being different from the master.
   Concerns:
     http://article.gmane.org/gmane.comp.version-control.subversion.devel/120590
   Votes:
     +1: danielsh, philip, cmpilato


Added:
    subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests_data/descend_into_replace.dump
      - copied unchanged from r962377, subversion/trunk/subversion/tests/cmdline/svnsync_tests_data/descend_into_replace.dump
    subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests_data/descend_into_replace.expected.dump
      - copied unchanged from r962377, subversion/trunk/subversion/tests/cmdline/svnsync_tests_data/descend_into_replace.expected.dump
Modified:
    subversion/branches/1.6.x/   (props changed)
    subversion/branches/1.6.x/STATUS
    subversion/branches/1.6.x/subversion/libsvn_repos/replay.c
    subversion/branches/1.6.x/subversion/tests/cmdline/merge_tests.py   (props changed)
    subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests.py

Propchange: subversion/branches/1.6.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov  9 17:32:13 2010
@@ -93,4 +93,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,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,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,904301,904394,904594,905303,905326,906256,906305,906587,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,946767,948512,948916,949307,950931,950933,951753,952992,953317,955369,957507,958024,959004,959760,961055,961970,964167,964767,965405,965469,965508,979045,979429,980811,981449,981921,984928,984931,997457,997466,1000038,1000060,1000607,1000612,1001009,1002094
+/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,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,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,904301,904394,904594,905303,905326,906256,906305,906587,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,946767,948512,948916,949307,950931,950933,951753,952992,953317,955369,957507,958024,959004,959760,961055,961970,962377-962378,964167,964767,965405,965469,965508,979045,979429,980811,981449,981921,984928,984931,997457,997466,1000038,1000060,1000607,1000612,1001009,1002094

Modified: subversion/branches/1.6.x/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/STATUS?rev=1033111&r1=1033110&r2=1033111&view=diff
==============================================================================
--- subversion/branches/1.6.x/STATUS (original)
+++ subversion/branches/1.6.x/STATUS Tue Nov  9 17:32:13 2010
@@ -362,13 +362,3 @@ Veto-blocked changes:
 
 Approved changes:
 =================
-
- * r962377, r962378
-   Fix svnsync handling of directory copyfrom.
-   Justification:
-     Could lead to sync'd repositories being different from the master.
-   Concerns:
-     http://article.gmane.org/gmane.comp.version-control.subversion.devel/120590
-   Votes:
-     +1: danielsh, philip, cmpilato
-

Modified: subversion/branches/1.6.x/subversion/libsvn_repos/replay.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_repos/replay.c?rev=1033111&r1=1033110&r2=1033111&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_repos/replay.c (original)
+++ subversion/branches/1.6.x/subversion/libsvn_repos/replay.c Tue Nov  9 17:32:13 2010
@@ -194,6 +194,8 @@ add_subdir(svn_fs_root_t *source_root,
       svn_fs_path_change2_t *change;
       svn_boolean_t readable = TRUE;
       svn_fs_dirent_t *dent;
+      const char *copyfrom_path = NULL;
+      svn_revnum_t copyfrom_rev = SVN_INVALID_REVNUM;
       const char *new_path;
       void *val;
 
@@ -216,6 +218,13 @@ add_subdir(svn_fs_root_t *source_root,
           /* If it's a delete, skip this entry. */
           if (change->change_kind == svn_fs_path_change_delete)
             continue;
+          else if (change->change_kind == svn_fs_path_change_replace)
+            {
+              /* ### Can this assert fail? */
+              SVN_ERR_ASSERT(change->copyfrom_known);
+              copyfrom_path = change->copyfrom_path;
+              copyfrom_rev = change->copyfrom_rev;
+            }
         }
 
       if (authz_read_func)
@@ -227,12 +236,31 @@ add_subdir(svn_fs_root_t *source_root,
 
       if (dent->kind == svn_node_dir)
         {
+          svn_fs_root_t *new_source_root;
+          const char *new_source_path;
           void *new_dir_baton;
 
-          SVN_ERR(add_subdir(source_root, target_root, editor, edit_baton,
+          if (copyfrom_path)
+            {
+              svn_fs_t *fs = svn_fs_root_fs(source_root);
+              SVN_ERR(svn_fs_revision_root(&new_source_root, fs, copyfrom_rev, pool));
+              new_source_path = copyfrom_path;
+            }
+          else
+            {
+              new_source_root = source_root;
+              new_source_path = svn_path_join(source_path, dent->name,
+                                              subpool);
+            }
+
+          /* ### authz considerations?
+           *
+           * I think not; when path_driver_cb_func() calls add_subdir(), it
+           * passes SOURCE_ROOT and SOURCE_PATH that are unreadable.
+           */
+          SVN_ERR(add_subdir(new_source_root, target_root, editor, edit_baton,
                              new_path, *dir_baton,
-                             svn_path_join(source_path, dent->name,
-                                           subpool),
+                             new_source_path,
                              authz_read_func, authz_read_baton,
                              changed_paths, subpool, &new_dir_baton));
 

Propchange: subversion/branches/1.6.x/subversion/tests/cmdline/merge_tests.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov  9 17:32:13 2010
@@ -93,4 +93,4 @@
 /subversion/branches/tree-conflicts/subversion/tests/cmdline/merge_tests.py:868291-873154
 /subversion/branches/tree-conflicts-notify/subversion/tests/cmdline/merge_tests.py:873926-874008
 /subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py:953878
-/subversion/trunk/subversion/tests/cmdline/merge_tests.py: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,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,877459,877472,877544,877553,877565,877568,877573,877593,877595,877597,877601,877612,877665,877667,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,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,87
 9293,879357,879375-879376,879403,879631,879635-879636,879688,879709-879711,879747,879902,879916,879954,879961,879966,879971,880082,880095,880105,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,904301,904394,904594,905303,905326,906256,906305,906587,908980-908981,917640,918211,922516,923389,923391,926151,926167,927323,927328,931209,931211,931392,931568,932942,933299,934599,934603,935631,935992,935996,937610,944635,945350,946767,948512,948916,949307,950931,950933,951753,952992,953317,955369,957507,958024,959004,959760,961055,961970,964167,964767,965405,965469,965508,979045,979429,981921,984928,984931,1000038,1000060,1000607,1000612,1001009,1002094
+/subversion/trunk/subversion/tests/cmdline/merge_tests.py: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,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,877459,877472,877544,877553,877565,877568,877573,877593,877595,877597,877601,877612,877665,877667,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,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,87
 9293,879357,879375-879376,879403,879631,879635-879636,879688,879709-879711,879747,879902,879916,879954,879961,879966,879971,880082,880095,880105,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,904301,904394,904594,905303,905326,906256,906305,906587,908980-908981,917640,918211,922516,923389,923391,926151,926167,927323,927328,931209,931211,931392,931568,932942,933299,934599,934603,935631,935992,935996,937610,944635,945350,946767,948512,948916,949307,950931,950933,951753,952992,953317,955369,957507,958024,959004,959760,961055,961970,962377-962378,964167,964767,965405,965469,965508,979045,979429,981921,984928,984931,1000038,1000060,1000607,1000612,1001009,1002094

Modified: subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests.py?rev=1033111&r1=1033110&r2=1033111&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests.py (original)
+++ subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests.py Tue Nov  9 17:32:13 2010
@@ -761,6 +761,11 @@ def commit_a_copy_of_root(sbox):
   #Testcase for issue 3438.
   run_test(sbox, "repo_with_copy_of_root_dir.dump")
 
+# issue #3641
+def descend_into_replace(sbox):
+  "descending into replaced dir looks in src"
+  run_test(sbox, "descend_into_replace.dump", subdir='/trunk/H',
+           exp_dump_file_name = "descend_into_replace.expected.dump")
 
 ########################################################################
 # Run the tests
@@ -800,6 +805,7 @@ test_list = [ None,
               copy_bad_line_endings,
               delete_svn_props,
               commit_a_copy_of_root,
+              descend_into_replace,
              ]
 
 if __name__ == '__main__':



Potential authz issue in an already-approved backport (Re: svn commit: r1033111 - in /subversion/branches/1.6.x: ./ subversion/libsvn_repos/ subversion/tests/cmdline/ subversion/tests/cmdline/svnsync_tests_data/)

Posted by Daniel Shahaf <d....@daniel.shahaf.name>.
Can someone please review the 

         /* ### authz considerations? */

line in this patch, and decide whether there are no issues and we should
remove that line, or there indeed are issues[1] and we should fix them
and backport the fix?

Thanks,

Daniel


[1] perhaps a call to authz_read_func() at the copyfrom calculation is missing?

hwright@apache.org wrote on Tue, Nov 09, 2010 at 17:32:14 -0000:
> Author: hwright
> Date: Tue Nov  9 17:32:13 2010
> New Revision: 1033111
> 
> URL: http://svn.apache.org/viewvc?rev=1033111&view=rev
> Log:
> Merge r962377, r962378 from trunk:
> 
>  * r962377, r962378
>    Fix svnsync handling of directory copyfrom.
>    Justification:
>      Could lead to sync'd repositories being different from the master.
>    Concerns:
>      http://article.gmane.org/gmane.comp.version-control.subversion.devel/120590
>    Votes:
>      +1: danielsh, philip, cmpilato
> 
> 
> Modified: subversion/branches/1.6.x/subversion/libsvn_repos/replay.c
> URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_repos/replay.c?rev=1033111&r1=1033110&r2=1033111&view=diff
> ==============================================================================
> --- subversion/branches/1.6.x/subversion/libsvn_repos/replay.c (original)
> +++ subversion/branches/1.6.x/subversion/libsvn_repos/replay.c Tue Nov  9 17:32:13 2010
> @@ -194,6 +194,8 @@ add_subdir(svn_fs_root_t *source_root,
>        svn_fs_path_change2_t *change;
>        svn_boolean_t readable = TRUE;
>        svn_fs_dirent_t *dent;
> +      const char *copyfrom_path = NULL;
> +      svn_revnum_t copyfrom_rev = SVN_INVALID_REVNUM;
>        const char *new_path;
>        void *val;
>  
> @@ -216,6 +218,13 @@ add_subdir(svn_fs_root_t *source_root,
>            /* If it's a delete, skip this entry. */
>            if (change->change_kind == svn_fs_path_change_delete)
>              continue;
> +          else if (change->change_kind == svn_fs_path_change_replace)
> +            {
> +              /* ### Can this assert fail? */
> +              SVN_ERR_ASSERT(change->copyfrom_known);
> +              copyfrom_path = change->copyfrom_path;
> +              copyfrom_rev = change->copyfrom_rev;
> +            }
>          }
>  
>        if (authz_read_func)
> @@ -227,12 +236,31 @@ add_subdir(svn_fs_root_t *source_root,
>  
>        if (dent->kind == svn_node_dir)
>          {
> +          svn_fs_root_t *new_source_root;
> +          const char *new_source_path;
>            void *new_dir_baton;
>  
> -          SVN_ERR(add_subdir(source_root, target_root, editor, edit_baton,
> +          if (copyfrom_path)
> +            {
> +              svn_fs_t *fs = svn_fs_root_fs(source_root);
> +              SVN_ERR(svn_fs_revision_root(&new_source_root, fs, copyfrom_rev, pool));
> +              new_source_path = copyfrom_path;
> +            }
> +          else
> +            {
> +              new_source_root = source_root;
> +              new_source_path = svn_path_join(source_path, dent->name,
> +                                              subpool);
> +            }
> +
> +          /* ### authz considerations?
> +           *
> +           * I think not; when path_driver_cb_func() calls add_subdir(), it
> +           * passes SOURCE_ROOT and SOURCE_PATH that are unreadable.
> +           */
> +          SVN_ERR(add_subdir(new_source_root, target_root, editor, edit_baton,
>                               new_path, *dir_baton,
> -                             svn_path_join(source_path, dent->name,
> -                                           subpool),
> +                             new_source_path,
>                               authz_read_func, authz_read_baton,
>                               changed_paths, subpool, &new_dir_baton));
>  
> 
> Modified: subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests.py
> URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests.py?rev=1033111&r1=1033110&r2=1033111&view=diff
> ==============================================================================
> --- subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests.py (original)
> +++ subversion/branches/1.6.x/subversion/tests/cmdline/svnsync_tests.py Tue Nov  9 17:32:13 2010
> @@ -761,6 +761,11 @@ def commit_a_copy_of_root(sbox):
>    #Testcase for issue 3438.
>    run_test(sbox, "repo_with_copy_of_root_dir.dump")
>  
> +# issue #3641
> +def descend_into_replace(sbox):
> +  "descending into replaced dir looks in src"
> +  run_test(sbox, "descend_into_replace.dump", subdir='/trunk/H',
> +           exp_dump_file_name = "descend_into_replace.expected.dump")
>  
>  ########################################################################
>  # Run the tests
> @@ -800,6 +805,7 @@ test_list = [ None,
>                copy_bad_line_endings,
>                delete_svn_props,
>                commit_a_copy_of_root,
> +              descend_into_replace,
>               ]
>  
>  if __name__ == '__main__':
> 
>