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 2011/05/17 12:10:25 UTC

svn commit: r1104098 - in /subversion/branches/1.6.x: ./ subversion/include/ subversion/include/private/ subversion/libsvn_repos/ subversion/mod_dav_svn/ subversion/tests/cmdline/ subversion/tests/cmdline/svntest/

Author: hwright
Date: Tue May 17 10:10:24 2011
New Revision: 1104098

URL: http://svn.apache.org/viewvc?rev=1104098&view=rev
Log:
Reintegrate the 1.6.x-svn_fs_commit_txn branch branch:

 * 1.6.x-svn_fs_commit_txn branch
   Have all of server-side Subversion, from svn_fs_commit_txn(),
   through to mod_dav_svn, implement the documented (since 1.0.x)
   behavior that svn_fs_commit_txn() and svn_repos_fs_commit_txn()
   should indicate a successful commit by a valid returned revision
   number, not by any returned error.  Now, regardless if
   svn_fs_commit_txn()'s post commit FS processing (that's its new
   official name) fails, svn_repos_fs_commit_txn() will run the
   post-commit hook.  All code that uses svn_fs_commit_txn() and/or
   svn_repos_fs_commit_txn() now uses the revision number to test if
   the commit succeeded.
   Justification:
     Fixes bug reports on users@s.a.o where if post commit FS
       processing fails, the client reports an error but the commit
       succeeded, which is confusing for users.
     Implementing the documented and correct behavior is a good thing.
   Notes:
     For a successful unit test pass, it requires that r1051632,
       r1051638 and r1051751 listed above be merged previously.
     The branch has many commits in it from trunk, which includes some
       churn from reviews on trunk.  I recommend reviewing a cumulative
       diff:
       svn diff -r r1053420:r1053500 ^/subversion/branches/1.6.x-svn_fs_commit_txn
     This merge doesn't address the client side behavior.
   Branch:
     ^/subversion/branches/1.6.x-svn_fs_commit_txn
   Note:
     Adds a new private API, which would break 1.6.16 mod_dav_svn with
     1.6.15 libsvn_repos; thread:
     http://mid.gmane.org/20110214164421.GB19247@daniel3.local
     http://mid.gmane.org/4D9DD614.2000709@collab.net
   Note:
     Found a potential issue in close_edit() during review, I would prefer to
     see it fixed before merge.
   Votes:
     +1: blair, danielsh, cmpilato

Added:
    subversion/branches/1.6.x/subversion/include/private/svn_repos_private.h   (props changed)
      - copied unchanged from r1104095, subversion/branches/1.6.x-svn_fs_commit_txn/subversion/include/private/svn_repos_private.h
Modified:
    subversion/branches/1.6.x/   (props changed)
    subversion/branches/1.6.x/CHANGES   (props changed)
    subversion/branches/1.6.x/STATUS
    subversion/branches/1.6.x/subversion/include/svn_fs.h
    subversion/branches/1.6.x/subversion/include/svn_repos.h
    subversion/branches/1.6.x/subversion/libsvn_repos/commit.c
    subversion/branches/1.6.x/subversion/libsvn_repos/fs-wrap.c
    subversion/branches/1.6.x/subversion/libsvn_repos/load.c
    subversion/branches/1.6.x/subversion/mod_dav_svn/dav_svn.h
    subversion/branches/1.6.x/subversion/mod_dav_svn/lock.c
    subversion/branches/1.6.x/subversion/mod_dav_svn/merge.c
    subversion/branches/1.6.x/subversion/mod_dav_svn/version.c
    subversion/branches/1.6.x/subversion/tests/cmdline/merge_tests.py   (props changed)
    subversion/branches/1.6.x/subversion/tests/cmdline/svntest/main.py   (props changed)

Propchange: subversion/branches/1.6.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 17 10:10:24 2011
@@ -74,6 +74,7 @@
 /subversion/branches/1.6.x-r981921:981922-997253
 /subversion/branches/1.6.x-r991534:1003116-1033219
 /subversion/branches/1.6.x-r997457:997808-1002642
+/subversion/branches/1.6.x-svn_fs_commit_txn:1053419-1104095
 /subversion/branches/1.6.x-wc-ng-check-override:910213-923776
 /subversion/branches/1.6.x-wc-ng-error:929379-929636
 /subversion/branches/bdb-reverse-deltas:872050-872529
@@ -108,4 +109,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,1000038,1000060,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,1063870,1063946,1064839,1066249,1066270,1066276,1068988,1070912,1071239,1071307,1072084,1072953,1076759,1084575,1084581,1094692,1095654,1103665
+/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,1000038,1000060,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,1051733,1051744-1051745,1051751,1051761,1051763,1051775,1051778,1051968,1051978,1051988,1052029,1052041,1052068,1053185,1053208,1053233,1053499,1058269,1058722,1063870,1063946,1064839,1066249,1066270,1066276,1068988,1070912,1071239,1071307,1072084,1072953,1076759,1084575,1084581,1094692,1095654,1103665

Propchange: subversion/branches/1.6.x/CHANGES
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 17 10:10:24 2011
@@ -72,6 +72,7 @@
 /subversion/branches/1.6.x-r981921/CHANGES:981922-997253
 /subversion/branches/1.6.x-r991534/CHANGES:1003116-1033219
 /subversion/branches/1.6.x-r997457/CHANGES:997808-1002642
+/subversion/branches/1.6.x-svn_fs_commit_txn/CHANGES:1053419-1104095
 /subversion/branches/1.6.x-wc-ng-check-override/CHANGES:910213-923776
 /subversion/branches/1.6.x-wc-ng-error/CHANGES:929379-929636
 /subversion/branches/bdb-reverse-deltas/CHANGES:872050-872529
@@ -104,4 +105,4 @@
 /subversion/branches/tc_url_rev/CHANGES:874351-874483
 /subversion/branches/tree-conflicts/CHANGES:868291-873154
 /subversion/branches/tree-conflicts-notify/CHANGES:873926-874008
-/subversion/trunk/CHANGES:837701-841355,875962-1038588,1038792,1041438,1051632,1051638,1051744-1051745,1051751,1053185,1053208,1058722,1063870,1063946,1064839,1066249,1066270,1066276,1068988,1070912,1071239,1071307,1072084,1072953,1076759
+/subversion/trunk/CHANGES:837701-841355,875962-1038588,1038792,1041438,1051632,1051638,1051733,1051744-1051745,1051751,1051761,1051763,1051775,1051778,1051968,1051978,1051988,1052029,1052041,1052068,1053185,1053208,1053233,1053499,1058722,1063870,1063946,1064839,1066249,1066270,1066276,1068988,1070912,1071239,1071307,1072084,1072953,1076759

Modified: subversion/branches/1.6.x/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/STATUS?rev=1104098&r1=1104097&r2=1104098&view=diff
==============================================================================
--- subversion/branches/1.6.x/STATUS (original)
+++ subversion/branches/1.6.x/STATUS Tue May 17 10:10:24 2011
@@ -337,44 +337,6 @@ Approved changes:
                  that fix being applied first.)
      +1: danielsh (pburba: a fix to #3641 was committed to trunk)
 
-
- * 1.6.x-svn_fs_commit_txn branch
-   Have all of server-side Subversion, from svn_fs_commit_txn(),
-   through to mod_dav_svn, implement the documented (since 1.0.x)
-   behavior that svn_fs_commit_txn() and svn_repos_fs_commit_txn()
-   should indicate a successful commit by a valid returned revision
-   number, not by any returned error.  Now, regardless if
-   svn_fs_commit_txn()'s post commit FS processing (that's its new
-   official name) fails, svn_repos_fs_commit_txn() will run the
-   post-commit hook.  All code that uses svn_fs_commit_txn() and/or
-   svn_repos_fs_commit_txn() now uses the revision number to test if
-   the commit succeeded.
-   Justification:
-     Fixes bug reports on users@s.a.o where if post commit FS
-       processing fails, the client reports an error but the commit
-       succeeded, which is confusing for users.
-     Implementing the documented and correct behavior is a good thing.
-   Notes:
-     For a successful unit test pass, it requires that r1051632,
-       r1051638 and r1051751 listed above be merged previously.
-     The branch has many commits in it from trunk, which includes some
-       churn from reviews on trunk.  I recommend reviewing a cumulative
-       diff:
-       svn diff -r r1053420:r1053500 ^/subversion/branches/1.6.x-svn_fs_commit_txn
-     This merge doesn't address the client side behavior.
-   Branch:
-     ^/subversion/branches/1.6.x-svn_fs_commit_txn
-   Note:
-     Adds a new private API, which would break 1.6.16 mod_dav_svn with
-     1.6.15 libsvn_repos; thread:
-     http://mid.gmane.org/20110214164421.GB19247@daniel3.local
-     http://mid.gmane.org/4D9DD614.2000709@collab.net
-   Note:
-     Found a potential issue in close_edit() during review, I would prefer to
-     see it fixed before merge.
-   Votes:
-     +1: blair, danielsh, cmpilato
-
  * r1083883, r1076826
    Fix issue #3816, "file external can cause mixed-revision working
    copy after checkout"

Propchange: subversion/branches/1.6.x/subversion/include/private/svn_repos_private.h
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue May 17 10:10:24 2011
@@ -0,0 +1,44 @@
+/subversion/branches/1.5.x-r30215/subversion/include/private/svn_repos_private.h:870312
+/subversion/branches/1.6.x-svn_fs_commit_txn/subversion/include/private/svn_repos_private.h:1053419-1104095
+/subversion/branches/atomic-revprop/subversion/include/private/svn_repos_private.h:965046-1000689
+/subversion/branches/bdb-reverse-deltas/subversion/include/private/svn_repos_private.h:872050-872529
+/subversion/branches/diff-callbacks3/subversion/include/private/svn_repos_private.h:870059-870761
+/subversion/branches/dont-save-plaintext-passwords-by-default/subversion/include/private/svn_repos_private.h:870728-871118
+/subversion/branches/double-delete/subversion/include/private/svn_repos_private.h:870511-872970
+/subversion/branches/explore-wc/subversion/include/private/svn_repos_private.h:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
+/subversion/branches/file-externals/subversion/include/private/svn_repos_private.h:871779-873302
+/subversion/branches/fs-rep-sharing/subversion/include/private/svn_repos_private.h:869036-873803
+/subversion/branches/fsfs-pack/subversion/include/private/svn_repos_private.h:873717-874575
+/subversion/branches/gnome-keyring/subversion/include/private/svn_repos_private.h:870558-871410
+/subversion/branches/http-protocol-v2/subversion/include/private/svn_repos_private.h:874395-876041
+/subversion/branches/in-memory-cache/subversion/include/private/svn_repos_private.h:869829-871452
+/subversion/branches/issue-2779-dev/subversion/include/private/svn_repos_private.h:965496-984198
+/subversion/branches/issue-2843-dev/subversion/include/private/svn_repos_private.h:871432-874179
+/subversion/branches/issue-3000/subversion/include/private/svn_repos_private.h:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/subversion/include/private/svn_repos_private.h:873375-874084
+/subversion/branches/issue-3148-dev/subversion/include/private/svn_repos_private.h:875193-875204
+/subversion/branches/issue-3220-dev/subversion/include/private/svn_repos_private.h:872210-872226
+/subversion/branches/issue-3242-dev/subversion/include/private/svn_repos_private.h:879653-896436
+/subversion/branches/issue-3334-dirs/subversion/include/private/svn_repos_private.h:875156-875867
+/subversion/branches/issue-3668-3669/subversion/include/private/svn_repos_private.h:1031000-1035744
+/subversion/branches/kwallet/subversion/include/private/svn_repos_private.h:870785-871314
+/subversion/branches/log-g-performance/subversion/include/private/svn_repos_private.h:870941-871032
+/subversion/branches/merge-skips-obstructions/subversion/include/private/svn_repos_private.h:874525-874615
+/subversion/branches/nfc-nfd-aware-client/subversion/include/private/svn_repos_private.h:870276,870376
+/subversion/branches/performance/subversion/include/private/svn_repos_private.h:982355,983764,983766,984927,984984,985014,985037,985046,985472,985477,985482,985500,985606,985669,986453,987888,987893,995507,995603,1001413,1025660,1028092,1028094,1028104,1029038,1029042,1029090,1029092,1029335,1030763
+/subversion/branches/py-tests-as-modules/subversion/include/private/svn_repos_private.h:956579-1033052
+/subversion/branches/ra_serf-digest-authn/subversion/include/private/svn_repos_private.h:875693-876404
+/subversion/branches/reintegrate-improvements/subversion/include/private/svn_repos_private.h:873853-874164
+/subversion/branches/subtree-mergeinfo/subversion/include/private/svn_repos_private.h:876734-878766
+/subversion/branches/svn-mergeinfo-enhancements/subversion/include/private/svn_repos_private.h:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/subversion/include/private/svn_repos_private.h:918519-934609
+/subversion/branches/svnpatch-diff/subversion/include/private/svn_repos_private.h:865738-876477
+/subversion/branches/svnraisetc/subversion/include/private/svn_repos_private.h:874709-875149
+/subversion/branches/svnserve-logging/subversion/include/private/svn_repos_private.h:869828-870893
+/subversion/branches/tc-issue-3334/subversion/include/private/svn_repos_private.h:874697-874773
+/subversion/branches/tc-merge-notify/subversion/include/private/svn_repos_private.h:874017-874062
+/subversion/branches/tc-resolve/subversion/include/private/svn_repos_private.h:874191-874239
+/subversion/branches/tc_url_rev/subversion/include/private/svn_repos_private.h:874351-874483
+/subversion/branches/tree-conflicts/subversion/include/private/svn_repos_private.h:868291-873154
+/subversion/branches/tree-conflicts-notify/subversion/include/private/svn_repos_private.h:873926-874008
+/subversion/trunk/subversion/include/private/svn_repos_private.h:1051775,1051778,1051968,1051978,1051988,1052029,1052041,1052068,1053233,1053499

Modified: subversion/branches/1.6.x/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/include/svn_fs.h?rev=1104098&r1=1104097&r2=1104098&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/include/svn_fs.h (original)
+++ subversion/branches/1.6.x/subversion/include/svn_fs.h Tue May 17 10:10:24 2011
@@ -783,15 +783,16 @@ svn_fs_begin_txn(svn_fs_txn_t **txn_p,
  *
  * If the commit succeeds, @a txn is invalid.
  *
- * If the commit fails, @a txn is still valid; you can make more
- * operations to resolve the conflict, or call svn_fs_abort_txn() to
- * abort the transaction.
+ * If the commit fails for any reason, @a *new_rev is an invalid
+ * revision number, an error other than #SVN_NO_ERROR is returned and
+ * @a txn is still valid; you can make more operations to resolve the
+ * conflict, or call svn_fs_abort_txn() to abort the transaction.
  *
  * @note Success or failure of the commit of @a txn is determined by
  * examining the value of @a *new_rev upon this function's return.  If
  * the value is a valid revision number, the commit was successful,
  * even though a non-@c NULL function return value may indicate that
- * something else went wrong.
+ * something else went wrong in post commit FS processing.
  */
 svn_error_t *
 svn_fs_commit_txn(const char **conflict_p,

Modified: subversion/branches/1.6.x/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/include/svn_repos.h?rev=1104098&r1=1104097&r2=1104098&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/include/svn_repos.h (original)
+++ subversion/branches/1.6.x/subversion/include/svn_repos.h Tue May 17 10:10:24 2011
@@ -1603,15 +1603,27 @@ svn_repos_get_file_revs(svn_repos_t *rep
  * @{
  */
 
-/** Like svn_fs_commit_txn(), but invoke the @a repos's pre- and
+/** Like svn_fs_commit_txn(), but invoke the @a repos' pre- and
  * post-commit hooks around the commit.  Use @a pool for any necessary
  * allocations.
  *
- * If the pre-commit hook or svn_fs_commit_txn() fails, throw the
- * original error to caller.  If an error occurs when running the
- * post-commit hook, return the original error wrapped with
- * SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED.  If the caller sees this
- * error, it knows that the commit succeeded anyway.
+ * If the pre-commit hook fails, do not attempt to commit the
+ * transaction and throw the original error to the caller.
+ *
+ * A successful commit is indicated by a valid revision value in @a
+ * *new_rev, not if svn_fs_commit_txn() returns an error, which can
+ * occur during its post commit FS processing.  If the transaction was
+ * not committed, then return the associated error and do not execute
+ * the post-commit hook.
+ *
+ * If the commit succeeds the post-commit hook is executed.  If the
+ * post-commit hook returns an error, always wrap it with
+ * SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED; this allows the caller to
+ * find the post-commit hook error in the returned error chain.  If
+ * both svn_fs_commit_txn() and the post-commit hook return errors,
+ * then svn_fs_commit_txn()'s error is the parent error and the
+ * SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED wrapped error is the child
+ * error.
  *
  * @a conflict_p, @a new_rev, and @a txn are as in svn_fs_commit_txn().
  */

Modified: subversion/branches/1.6.x/subversion/libsvn_repos/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_repos/commit.c?rev=1104098&r1=1104097&r2=1104098&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_repos/commit.c (original)
+++ subversion/branches/1.6.x/subversion/libsvn_repos/commit.c Tue May 17 10:10:24 2011
@@ -32,6 +32,7 @@
 #include "svn_props.h"
 #include "repos.h"
 #include "svn_private_config.h"
+#include "private/svn_repos_private.h"
 
 
 
@@ -638,7 +639,78 @@ change_dir_prop(void *dir_baton,
                                        name, value, pool);
 }
 
+static svn_error_t *
+error_find_cause(svn_error_t *err, apr_status_t apr_err)
+{
+  svn_error_t *child;
 
+  for (child = err; child; child = child->child)
+    if (child->apr_err == apr_err)
+      return child;
+
+  return SVN_NO_ERROR;
+}
+
+const char *
+svn_repos__post_commit_error_str(svn_error_t *err,
+                                 apr_pool_t *pool)
+{
+  svn_error_t *hook_err1, *hook_err2;
+  const char *msg;
+
+  if (! err)
+    return _("(no error)");
+
+  /* hook_err1 is the SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED wrapped
+     error from the post-commit script, if any, and hook_err2 should
+     be the original error, but be defensive and handle a case where
+     SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED doesn't wrap an error. */
+  hook_err1 = error_find_cause(err, SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED);
+  if (hook_err1 && hook_err1->child)
+    hook_err2 = hook_err1->child;
+  else
+    hook_err2 = hook_err1;
+
+  /* This implementation counts on svn_repos_fs_commit_txn() returning
+     svn_fs_commit_txn() as the parent error with a child
+     SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED error.  If the parent error
+     is SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED then there was no error
+     in svn_fs_commit_txn().
+
+     The post-commit hook error message is already self describing, so
+     it can be dropped into an error message without any additional
+     text. */
+  if (hook_err1)
+    {
+      if (err == hook_err1)
+        {
+          if (hook_err2->message)
+            msg = apr_pstrdup(pool, hook_err2->message);
+          else
+            msg = _("post-commit hook failed with no error message");
+        }
+      else
+        {
+          msg = hook_err2->message
+                  ? hook_err2->message
+                  : _("post-commit hook failed with no error message.");
+          msg = apr_psprintf(
+                  pool,
+                  _("post commit FS processing had error '%s' and %s"),
+                  err->message ? err->message : _("(no error message)"),
+                  msg);
+        }
+    }
+  else
+    {
+      msg = apr_psprintf(pool,
+                         _("post-commit FS processing had error '%s'."),
+                         err->message ? err->message
+                                      : _("(no error message)"));
+    }
+
+  return msg;
+}
 
 static svn_error_t *
 close_edit(void *edit_baton,
@@ -648,7 +720,7 @@ close_edit(void *edit_baton,
   svn_revnum_t new_revision = SVN_INVALID_REVNUM;
   svn_error_t *err;
   const char *conflict;
-  char *post_commit_err = NULL;
+  const char *post_commit_err = NULL;
 
   /* If no transaction has been created (ie. if open_root wasn't
      called before close_edit), abort the operation here with an
@@ -661,42 +733,40 @@ close_edit(void *edit_baton,
   err = svn_repos_fs_commit_txn(&conflict, eb->repos,
                                 &new_revision, eb->txn, pool);
 
-  if (err)
+  if (SVN_IS_VALID_REVNUM(new_revision))
     {
-      if (err->apr_err == SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED)
+      if (err)
         {
           /* If the error was in post-commit, then the commit itself
              succeeded.  In which case, save the post-commit warning
              (to be reported back to the client, who will probably
              display it as a warning) and clear the error. */
-          if (err->child && err->child->message)
-            post_commit_err = apr_pstrdup(pool, err->child->message);
-
+          post_commit_err = svn_repos__post_commit_error_str(err, pool);
           svn_error_clear(err);
           err = SVN_NO_ERROR;
         }
-      else  /* Got a real error -- one that stopped the commit */
-        {
-          /* ### todo: we should check whether it really was a conflict,
-             and return the conflict info if so? */
+    }
+  else
+    {
+      /* ### todo: we should check whether it really was a conflict,
+         and return the conflict info if so? */
 
-          /* If the commit failed, it's *probably* due to a conflict --
-             that is, the txn being out-of-date.  The filesystem gives us
-             the ability to continue diddling the transaction and try
-             again; but let's face it: that's not how the cvs or svn works
-             from a user interface standpoint.  Thus we don't make use of
-             this fs feature (for now, at least.)
-
-             So, in a nutshell: svn commits are an all-or-nothing deal.
-             Each commit creates a new fs txn which either succeeds or is
-             aborted completely.  No second chances;  the user simply
-             needs to update and commit again  :)
-
-             We ignore the possible error result from svn_fs_abort_txn();
-             it's more important to return the original error. */
-          svn_error_clear(svn_fs_abort_txn(eb->txn, pool));
-          return err;
-        }
+      /* If the commit failed, it's *probably* due to a conflict --
+         that is, the txn being out-of-date.  The filesystem gives us
+         the ability to continue diddling the transaction and try
+         again; but let's face it: that's not how the cvs or svn works
+         from a user interface standpoint.  Thus we don't make use of
+         this fs feature (for now, at least.)
+
+         So, in a nutshell: svn commits are an all-or-nothing deal.
+         Each commit creates a new fs txn which either succeeds or is
+         aborted completely.  No second chances;  the user simply
+         needs to update and commit again  :)
+
+         We ignore the possible error result from svn_fs_abort_txn();
+         it's more important to return the original error. */
+      svn_error_clear(svn_fs_abort_txn(eb->txn, pool));
+      return err;
     }
 
   /* Pass new revision information to the caller's callback. */

Modified: subversion/branches/1.6.x/subversion/libsvn_repos/fs-wrap.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_repos/fs-wrap.c?rev=1104098&r1=1104097&r2=1104098&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_repos/fs-wrap.c (original)
+++ subversion/branches/1.6.x/subversion/libsvn_repos/fs-wrap.c Tue May 17 10:10:24 2011
@@ -40,7 +40,7 @@ svn_repos_fs_commit_txn(const char **con
                         svn_fs_txn_t *txn,
                         apr_pool_t *pool)
 {
-  svn_error_t *err;
+  svn_error_t *err, *err2;
   const char *txn_name;
 
   *new_rev = SVN_INVALID_REVNUM;
@@ -50,17 +50,19 @@ svn_repos_fs_commit_txn(const char **con
   SVN_ERR(svn_repos__hooks_pre_commit(repos, txn_name, pool));
 
   /* Commit. */
-  SVN_ERR(svn_fs_commit_txn(conflict_p, new_rev, txn, pool));
+  err = svn_fs_commit_txn(conflict_p, new_rev, txn, pool);
+  if (! SVN_IS_VALID_REVNUM(*new_rev))
+    return err;
 
-  /* Run post-commit hooks.   Notice that we're wrapping the error
-     with a -specific- errorcode, so that our caller knows not to try
-     and abort the transaction. */
-  if ((err = svn_repos__hooks_post_commit(repos, *new_rev, pool)))
-    return svn_error_create
-      (SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED, err,
-       _("Commit succeeded, but post-commit hook failed"));
+  /* Run post-commit hooks. */
+  if ((err2 = svn_repos__hooks_post_commit(repos, *new_rev, pool)))
+    {
+      err2 = svn_error_create
+               (SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED, err2,
+                _("Commit succeeded, but post-commit hook failed"));
+    }
 
-  return SVN_NO_ERROR;
+  return svn_error_compose_create(err, err2);
 }
 
 

Modified: subversion/branches/1.6.x/subversion/libsvn_repos/load.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_repos/load.c?rev=1104098&r1=1104097&r2=1104098&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_repos/load.c (original)
+++ subversion/branches/1.6.x/subversion/libsvn_repos/load.c Tue May 17 10:10:24 2011
@@ -1337,7 +1337,18 @@ close_revision(void *baton)
     }
 
   /* Commit. */
-  if ((err = svn_fs_commit_txn(&conflict_msg, new_rev, rb->txn, rb->pool)))
+  err = svn_fs_commit_txn(&conflict_msg, new_rev, rb->txn, rb->pool);
+  if (SVN_IS_VALID_REVNUM(*new_rev))
+    {
+      if (err)
+        {
+          /* ### Log any error, but better yet is to rev
+             ### close_revision()'s API to allow both new_rev and err
+             ### to be returned, see #3768. */
+          svn_error_clear(err);
+        }
+    }
+  else
     {
       svn_error_clear(svn_fs_abort_txn(rb->txn, rb->pool));
       if (conflict_msg)

Modified: subversion/branches/1.6.x/subversion/mod_dav_svn/dav_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/mod_dav_svn/dav_svn.h?rev=1104098&r1=1104097&r2=1104098&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/mod_dav_svn/dav_svn.h (original)
+++ subversion/branches/1.6.x/subversion/mod_dav_svn/dav_svn.h Tue May 17 10:10:24 2011
@@ -504,7 +504,7 @@ dav_error *
 dav_svn__merge_response(ap_filter_t *output,
                         const dav_svn_repos *repos,
                         svn_revnum_t new_rev,
-                        char *post_commit_err,
+                        const char *post_commit_err,
                         apr_xml_elem *prop_elem,
                         svn_boolean_t disable_merge_response,
                         apr_pool_t *pool);

Modified: subversion/branches/1.6.x/subversion/mod_dav_svn/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/mod_dav_svn/lock.c?rev=1104098&r1=1104097&r2=1104098&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/mod_dav_svn/lock.c (original)
+++ subversion/branches/1.6.x/subversion/mod_dav_svn/lock.c Tue May 17 10:10:24 2011
@@ -707,15 +707,28 @@ append_locks(dav_lockdb *lockdb,
                                     "Could not create empty file.",
                                     resource->pool);
 
-      if ((serr = svn_repos_fs_commit_txn(&conflict_msg, repos->repos,
-                                          &new_rev, txn, resource->pool)))
+      serr = svn_repos_fs_commit_txn(&conflict_msg, repos->repos,
+                                     &new_rev, txn, resource->pool);
+      if (SVN_IS_VALID_REVNUM(new_rev))
+        {
+          svn_error_clear(serr);
+        }
+      else
         {
           svn_error_clear(svn_fs_abort_txn(txn, resource->pool));
-          return dav_svn__convert_err(serr, HTTP_CONFLICT,
-                                      apr_psprintf(resource->pool,
-                                                   "Conflict when committing "
-                                                   "'%s'.", conflict_msg),
-                                      resource->pool);
+          if (serr)
+            return dav_svn__convert_err(serr, HTTP_CONFLICT,
+                                        apr_psprintf(resource->pool,
+                                                     "Conflict when "
+                                                     "committing '%s'.",
+                                                     conflict_msg),
+                                        resource->pool);
+          else
+            return dav_new_error(resource->pool,
+                                      HTTP_INTERNAL_SERVER_ERROR,
+                                      0,
+                                      "Commit failed but there was no error "
+                                      "provided.");
         }
     }
 

Modified: subversion/branches/1.6.x/subversion/mod_dav_svn/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/mod_dav_svn/merge.c?rev=1104098&r1=1104097&r2=1104098&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/mod_dav_svn/merge.c (original)
+++ subversion/branches/1.6.x/subversion/mod_dav_svn/merge.c Tue May 17 10:10:24 2011
@@ -204,7 +204,7 @@ dav_error *
 dav_svn__merge_response(ap_filter_t *output,
                         const dav_svn_repos *repos,
                         svn_revnum_t new_rev,
-                        char *post_commit_err,
+                        const char *post_commit_err,
                         apr_xml_elem *prop_elem,
                         svn_boolean_t disable_merge_response,
                         apr_pool_t *pool)

Modified: subversion/branches/1.6.x/subversion/mod_dav_svn/version.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/mod_dav_svn/version.c?rev=1104098&r1=1104097&r2=1104098&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/mod_dav_svn/version.c (original)
+++ subversion/branches/1.6.x/subversion/mod_dav_svn/version.c Tue May 17 10:10:24 2011
@@ -32,6 +32,7 @@
 #include "svn_props.h"
 #include "svn_dav.h"
 #include "svn_base64.h"
+#include "private/svn_repos_private.h"
 #include "private/svn_dav_protocol.h"
 #include "private/svn_log.h"
 
@@ -846,30 +847,57 @@ dav_svn__checkin(dav_resource *resource,
                                      resource->info->root.txn,
                                      resource->pool);
 
-      if (serr != NULL)
+      if (SVN_IS_VALID_REVNUM(new_rev))
+        {
+          if (serr)
+            {
+              const char *post_commit_err = svn_repos__post_commit_error_str
+                                              (serr, resource->pool);
+              ap_log_perror(APLOG_MARK, APLOG_ERR, serr->apr_err,
+                            resource->pool,
+                            "commit of r%ld succeeded, but an error occurred "
+                            "after the commit: '%s'",
+                            new_rev,
+                            post_commit_err);
+              svn_error_clear(serr);
+              serr = SVN_NO_ERROR;
+            }
+        }
+      else
         {
           const char *msg;
           svn_error_clear(svn_fs_abort_txn(resource->info->root.txn,
                                            resource->pool));
 
-          if (serr->apr_err == SVN_ERR_FS_CONFLICT)
-            {
-              msg = apr_psprintf(resource->pool,
-                                 "A conflict occurred during the CHECKIN "
-                                 "processing. The problem occurred with  "
-                                 "the \"%s\" resource.",
-                                 conflict_msg);
-            }
-          else
-            msg = "An error occurred while committing the transaction.";
-
           /* Attempt to destroy the shared activity. */
           dav_svn__delete_activity(resource->info->repos, shared_activity);
           apr_pool_userdata_set(NULL, DAV_SVN__AUTOVERSIONING_ACTIVITY,
                                 NULL, resource->info->r->pool);
 
-          return dav_svn__convert_err(serr, HTTP_CONFLICT, msg,
-                                      resource->pool);
+          if (serr)
+            {
+              if (serr->apr_err == SVN_ERR_FS_CONFLICT)
+                {
+                  msg = apr_psprintf(resource->pool,
+                                     "A conflict occurred during the CHECKIN "
+                                     "processing. The problem occurred with  "
+                                     "the \"%s\" resource.",
+                                     conflict_msg);
+                }
+              else
+                msg = "An error occurred while committing the transaction.";
+
+              return dav_svn__convert_err(serr, HTTP_CONFLICT, msg,
+                                          resource->pool);
+            }
+          else
+            {
+              return dav_new_error(resource->pool,
+                                        HTTP_INTERNAL_SERVER_ERROR,
+                                        0,
+                                        "Commit failed but there was no error "
+                                        "provided.");
+            }
         }
 
       /* Attempt to destroy the shared activity. */
@@ -1254,7 +1282,7 @@ merge(dav_resource *target,
   svn_fs_txn_t *txn;
   const char *conflict;
   svn_error_t *serr;
-  char *post_commit_err = NULL;
+  const char *post_commit_err = NULL;
   svn_revnum_t new_rev;
   apr_hash_t *locks;
   svn_boolean_t disable_merge_response = FALSE;
@@ -1310,35 +1338,51 @@ merge(dav_resource *target,
   serr = svn_repos_fs_commit_txn(&conflict, source->info->repos->repos,
                                  &new_rev, txn, pool);
 
-  /* If the error was just a post-commit hook failure, we ignore it.
-     Otherwise, we deal with it.
-     ### TODO: Figure out if the MERGE response can grow a means by
+  /* ### TODO: Figure out if the MERGE response can grow a means by
      which to marshal back both the success of the commit (and its
      commit info) and the failure of the post-commit hook.  */
-  if (serr && (serr->apr_err != SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED))
+  if (SVN_IS_VALID_REVNUM(new_rev))
+    {
+      if (serr)
+        {
+          /* ### Any error from svn_fs_commit_txn() itself, and not
+             ### the post-commit script, should be reported to the
+             ### client some other way than hijacking the post-commit
+             ### error message.*/
+          post_commit_err = svn_repos__post_commit_error_str(serr, pool);
+          svn_error_clear(serr);
+          serr = SVN_NO_ERROR;
+        }
+    }
+  else
     {
-      const char *msg;
       svn_error_clear(svn_fs_abort_txn(txn, pool));
 
-      if (serr->apr_err == SVN_ERR_FS_CONFLICT)
+      if (serr)
         {
-          /* ### we need to convert the conflict path into a URI */
-          msg = apr_psprintf(pool,
-                             "A conflict occurred during the MERGE "
-                             "processing. The problem occurred with the "
-                             "\"%s\" resource.",
-                             conflict);
+          const char *msg;
+          if (serr->apr_err == SVN_ERR_FS_CONFLICT)
+            {
+              /* ### we need to convert the conflict path into a URI */
+              msg = apr_psprintf(pool,
+                                 "A conflict occurred during the MERGE "
+                                 "processing. The problem occurred with the "
+                                 "\"%s\" resource.",
+                                 conflict);
+            }
+          else
+            msg = "An error occurred while committing the transaction.";
+
+          return dav_svn__convert_err(serr, HTTP_CONFLICT, msg, pool);
         }
       else
-        msg = "An error occurred while committing the transaction.";
-
-      return dav_svn__convert_err(serr, HTTP_CONFLICT, msg, pool);
-    }
-  else if (serr)
-    {
-      if (serr->child && serr->child->message)
-        post_commit_err = apr_pstrdup(pool, serr->child->message);
-      svn_error_clear(serr);
+        {
+          return dav_new_error(pool,
+                                    HTTP_INTERNAL_SERVER_ERROR,
+                                    0,
+                                    "Commit failed but there was no error "
+                                    "provided.");
+        }
     }
 
   /* Commit was successful, so schedule deltification. */

Propchange: subversion/branches/1.6.x/subversion/tests/cmdline/merge_tests.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 17 10:10:24 2011
@@ -72,6 +72,7 @@
 /subversion/branches/1.6.x-r981921/subversion/tests/cmdline/merge_tests.py:981922-997253
 /subversion/branches/1.6.x-r991534/subversion/tests/cmdline/merge_tests.py:1003116-1033219
 /subversion/branches/1.6.x-r997457/subversion/tests/cmdline/merge_tests.py:997808-1002642
+/subversion/branches/1.6.x-svn_fs_commit_txn/subversion/tests/cmdline/merge_tests.py:1053419-1104095
 /subversion/branches/1.6.x-wc-ng-check-override/subversion/tests/cmdline/merge_tests.py:910213-923776
 /subversion/branches/1.6.x-wc-ng-error/subversion/tests/cmdline/merge_tests.py:929379-929636
 /subversion/branches/bdb-reverse-deltas/subversion/tests/cmdline/merge_tests.py:872050-872529
@@ -106,4 +107,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,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,87
 9271,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,902467,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,947006,948512,948916,949307,950931,950933,951753,952992,953317,955369,957507,958024,959004,959760,961055,961970,964167,964767,965405,965469,965508,979045,979429,981921,984565,984928,984931,991534,996884,997026,997070,997471,997474,1000038,1000060,1000607,1000612,1001009,1002094,1005446,1022675,1024269,1028108,1031165,1031186,1032808,1033166,1033665,103
 3685,1033921,1034557,1035745,1038792,1041438,1051632,1051638,1051744-1051745,1051751,1053185,1053208,1058722,1063870,1063946,1064839,1066249,1066270,1066276,1068988,1070912,1071239,1071307,1072084,1072953,1076759
+/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,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,87
 9271,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,902467,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,947006,948512,948916,949307,950931,950933,951753,952992,953317,955369,957507,958024,959004,959760,961055,961970,964167,964767,965405,965469,965508,979045,979429,981921,984565,984928,984931,991534,996884,997026,997070,997471,997474,1000038,1000060,1000607,1000612,1001009,1002094,1005446,1022675,1024269,1028108,1031165,1031186,1032808,1033166,1033665,103
 3685,1033921,1034557,1035745,1038792,1041438,1051632,1051638,1051733,1051744-1051745,1051751,1051761,1051763,1051775,1051778,1051968,1051978,1051988,1052029,1052041,1052068,1053185,1053208,1053233,1053499,1058722,1063870,1063946,1064839,1066249,1066270,1066276,1068988,1070912,1071239,1071307,1072084,1072953,1076759

Propchange: subversion/branches/1.6.x/subversion/tests/cmdline/svntest/main.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 17 10:10:24 2011
@@ -72,6 +72,7 @@
 /subversion/branches/1.6.x-r981921/subversion/tests/cmdline/svntest/main.py:981922-997253
 /subversion/branches/1.6.x-r991534/subversion/tests/cmdline/svntest/main.py:1003116-1033219
 /subversion/branches/1.6.x-r997457/subversion/tests/cmdline/svntest/main.py:997808-1002642
+/subversion/branches/1.6.x-svn_fs_commit_txn/subversion/tests/cmdline/svntest/main.py:1053419-1104095
 /subversion/branches/1.6.x-wc-ng-check-override/subversion/tests/cmdline/svntest/main.py:910213-923776
 /subversion/branches/1.6.x-wc-ng-error/subversion/tests/cmdline/svntest/main.py:929379-929636
 /subversion/branches/bdb-reverse-deltas/subversion/tests/cmdline/svntest/main.py:872050-872529
@@ -106,5 +107,5 @@
 /subversion/branches/tc_url_rev/subversion/tests/cmdline/svntest/main.py:874351-874483
 /subversion/branches/tree-conflicts/subversion/tests/cmdline/svntest/main.py:868291-873154
 /subversion/branches/tree-conflicts-notify/subversion/tests/cmdline/svntest/main.py:873926-874008
-/subversion/trunk/subversion/tests/cmdline/svntest/main.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-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,877459,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,8
 79201,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,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,946767,947006,948512,948916,949307,950931,950933,951753,952992,953317,955369,957507,958024,959004,959760,961055,961970,962377-962378,964167,964349,964767,965405,965469,965508,979045,979429,980811,981449,981921,984565,984928,984931,991534,996884,997026,997070,997457,997466,997471,997474,1000038,1000060,1000607,1000612,1001009,10020
 94,1005446,1022675,1024269,1027957,1028108,1031165,1031186,1032808,1033166,1033290,1033665,1033685,1033921,1034557,1035745,1038792,1041438,1051632,1051638,1051744-1051745,1051751,1053185,1053208,1058722,1063870,1063946,1064839,1066249,1066270,1066276,1068988,1070912,1071239,1071307,1072084,1072953,1076759
+/subversion/trunk/subversion/tests/cmdline/svntest/main.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-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,877459,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,8
 79201,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,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,946767,947006,948512,948916,949307,950931,950933,951753,952992,953317,955369,957507,958024,959004,959760,961055,961970,962377-962378,964167,964349,964767,965405,965469,965508,979045,979429,980811,981449,981921,984565,984928,984931,991534,996884,997026,997070,997457,997466,997471,997474,1000038,1000060,1000607,1000612,1001009,10020
 94,1005446,1022675,1024269,1027957,1028108,1031165,1031186,1032808,1033166,1033290,1033665,1033685,1033921,1034557,1035745,1038792,1041438,1051632,1051638,1051733,1051744-1051745,1051751,1051761,1051763,1051775,1051778,1051968,1051978,1051988,1052029,1052041,1052068,1053185,1053208,1053233,1053499,1058722,1063870,1063946,1064839,1066249,1066270,1066276,1068988,1070912,1071239,1071307,1072084,1072953,1076759
 /subversion/trunk/subversion/tests/cmdline/svntest/sandbox.py:991972