Author: svn-role Date: Mon Feb 16 04:00:48 2015 New Revision: 1660019 URL: http://svn.apache.org/r1660019 Log: Merge the 1.8.x-issue4551 branch:
* r1652182, r1652195, r1652200, r1653622, r1653623, r1653988, r1654039, r1654162, r1654186, r1654271, r1659721 Fix issue #4551 "svnrdump load commits wrong properties, or fails, on a non-deltas dumpfile". Justification: Data loss. Branch: ^/subversion/branches/1.8.x-issue4551 Notes: r1653988, r1654039, r1654271 contain the fixes; the rest are adding tests. Votes: +1: julianfoad (without r1659721) +1: philip, rhuijben, stefan2 Modified: subversion/branches/1.8.x/ (props changed) subversion/branches/1.8.x/STATUS subversion/branches/1.8.x/subversion/ (props changed) subversion/branches/1.8.x/subversion/svnrdump/load_editor.c subversion/branches/1.8.x/subversion/tests/cmdline/svnrdump_tests.py Propchange: subversion/branches/1.8.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Feb 16 04:00:48 2015 @@ -8,6 +8,7 @@ /subversion/branches/1.8.x-issue4437:1567249-1591140 /subversion/branches/1.8.x-issue4448:1540420-1541802 /subversion/branches/1.8.x-issue4480:1588773-1591136 +/subversion/branches/1.8.x-issue4551:1654795-1660018 /subversion/branches/1.8.x-javahl-exception-crash:1586424-1588151 /subversion/branches/1.8.x-libsvnjavahl-version:1483910-1485054 /subversion/branches/1.8.x-openssl-dirs:1535137-1540436 @@ -128,4 +129,5 @@ /subversion/branches/uris-as-urls:1060426-1064427 /subversion/branches/verify-at-commit:1462039-1462408 /subversion/branches/wc-collate-path:1407642 -/subversion/trunk:1467440,1467450,1467481,1467587,1467597,1467668,1467675,1467803,1467807,1467951,1468109,1468116,1468151,1468347,1468395,1468439,1468487,1468565-1468566,1468980,1469248,1469363,1469478,1469489,1469512-1469513,1469550,1469556,1469645,1469674,1469833,1469862,1469866,1469871,1469994,1470031,1470037,1470221,1470238,1470246,1470248,1470537,1470650,1470738,1470781,1470898,1470904,1470908,1470913,1470936,1470993-1470994,1471028-1471029,1471107,1471153,1471302,1471443,1471490,1471744,1475704,1475724,1475772,1475963,1476092,1476155,1476181,1476193,1476254,1476359,1476366,1476607,1477294,1477359,1477729-1477730,1477876,1477891,1478001,1478220-1478221,1478465,1478617,1478897,1478951,1478987,1478998,1479320-1479321,1479323,1479326,1479329,1479540,1479563,1479605,1479896,1480054,1480077,1480080,1480082,1480119,1480149,1480344,1480412,1480426,1480442,1480616,1480641-1480642,1480664,1480669,1480681,1480723,1480738,1480765,1481010,1481418,1481594,1481596,1481625,1481627-1481628,148 1631-1481632,1481772,1481782,1481800,1481813,1481847,1481944,1481981,1482282,1482327,1482338,1482350,1482354,1482436,1482479,1482524,1482528,1482536,1482554,1482558,1482592,1482724,1482759,1482779,1482829,1482969-1482970,1482973,1483015,1483077,1483101,1483116,1483125,1483391,1483397,1483555,1483557,1483575,1483580,1483781,1483927,1483939,1483947,1483964-1483965,1483968,1483972,1483975,1483977,1483984,1484006,1484016-1484017,1484023,1484755,1485018,1485127,1485350,1485413,1485427,1485447,1485449,1485497,1485501,1485650,1486072,1486457,1486572,1486809,1486915,1486931,1487083,1487094,1488183,1488267,1488294,1488425,1488639,1488693,1488878,1489114,1489116-1489117,1489203,1489339,1489935,1490045,1490326,1490679,1490684,1490721,1491432,1491499,1491707,1491739,1491755-1491756,1491762,1491770,1491816,1491868,1492005,1492020,1492145,1492148,1492152,1492164,1492264,1492295,1493102,1493424,1493475,1493703,1493720,1493951,1494089,1494171,1494223,1494287,1494298,1494318,1494342,1494657,1494913, 1494967,1495063,1495104,1495204,1495209,1495214,1495256,1495329,1495428,1495432,1495446,1495597,1495805,1495850,1495978,1496007,1496110-1496111,1496127,1496132,1496151,1496470,1496938,1496957,1497002,1497318-1497319,1497551,1497614,1497804,1497975,1497980,1498000,1498012,1498136,1498449,1498455-1498456,1498483-1498484,1498486,1498550,1498564,1498851,1498885,1498997,1499034,1499044,1499064,1499095-1499096,1499100,1499403,1499423,1499438,1499447,1499460,1499470,1499483,1499492,1499496,1499498,1499595,1499727,1500074,1500175,1500226,1500680,1500695,1500762,1500799,1500801-1500802,1500904,1500928,1501199,1501207,1501656,1501702,1502097,1502267,1502577,1502777,1502811,1502901,1502909,1502952,1503009-1503010,1503058,1503061,1503211,1503318,1503528,1503884,1504192,1504505,1506040-1506041,1506047,1506058,1506966,1507044,1507382,1507567,1507589,1507889,1507891,1508438,1509186,1509196,1511057,1511272,1511353,1511603,1512067,1512119,1512195,1512300-1512301,1512432,1512471-1512472,1513119,15131 22,1513156,1513463,1513472,1513874,1513879-1513880,1513943,1514295,1514315,1514318,1514356,1514628,1514763,1514785,1514804,1515119,1515141,1515201,1515225,1515237,1515343,1515366,1515516,1515534,1515721,1515992,1515997,1516023-1516024,1516049,1516051-1516053,1516071,1516271,1516429,1516556,1516565,1516567,1516806,1518184,1518942,1519615,1519617,1519733,1519816,1519823,1519955,1520065,1520529,1520532,1520539,1520745,1522892,1523666,1524869,1525902,1526439,1526655,1527103,1527105,1530763,1530768,1530872,1530922,1530967,1531002,1531004,1531014,1531938,1532023,1532098,1532316,1534102,1534149,1534158,1534713,1534737,1534860,1535115,1535161,1535532,1535610,1535676,1536350,1536383,1536464,1536488,1536537,1536914,1536931,1537018,1537147,1537190,1537193,1537221,1537263,1537360,1537415,1537555,1537700,1538516-1538517,1538519,1538574,1538581,1538812,1538925,1538928,1538939,1540044,1540417,1540752,1541432,1541635,1541638,1541705,1541790,1542042,1542069,1542071,1542119,1542129,1542138,1542146,15 42151,1542610,1542765,1542767,1542774,1543145,1543187,1543413,1543594,1543961,1544295,1544302-1544303,1544316,1544597,1544600,1544688,1544690,1544878,1544895,1545111,1545122,1545302,1545835,1545845,1547252,1547454,1547774,1547866,1547873,1548097,1548105,1548170,1548486,1548673,1549858,1549874,1550691,1550772,1550803,1551524,1551579,1552957-1552958,1553101,1553105,1553113,1553376-1553377,1553501,1553556,1554978,1555403,1555499,1557320,1557522,1559009,1559197,1560690,1560701,1561426,1561703,1563110,1564292,1564576,1564966,1564969,1565085,1565531,1566503-1566504,1567064,1567109,1567134,1567204,1567228,1567286,1567392,1567492,1567494,1567740,1567752,1567985,1568070,1568180,1568349,1568361,1568872,1568953,1568955,1569069,1570642,1571214,1571747,1571787,1571795,1572102,1572200,1572340,1573088,1573106,1573209,1574868,1575270,1575284,1575525,1575915,1577151,1577200,1577294,1577739,1577755,1577812-1577813,1578273,1578311,1578326,1578670,1578820,1578853,1578875,1579274,1579429,1579588,1579684 ,1580626,1580650,1580832,1580867,1580872,1581296,1581305,1581315,1581430,1581810,1583580,1583977,1584342,1584576,1584592,1584745,1585686,1586052,1586255,1586352,1586467,1587511,1587946,1587968,1588772,1588778,1589184,1589188,1589360,1589460,1589486,1590212,1591123,1592014,1592034,1593992,1594156,1594223,1594794,1594814,1594834,1595061,1595431,1596866,1596882,1600311,1600315,1600323,1600331,1600348,1600368,1600393,1600563,1600781,1600909,1601851,1606009,1611380-1611381,1612225,1615211,1615219,1615255-1615256,1615260,1615263,1616131,1619071,1619105,1619118,1619153,1619774,1619802,1620332,1621978,1621981,1625533,1625537,1628431,1628536,1628540,1633126,1636874,1637826,1640730,1640862,1640873,1641564,1643033,1643074,1643409,1643437,1643457,1643461,1643482,1643793,1643810,1643972-1643973,1644158,1644530,1644595,1644599,1646785-1646786,1646797,1647339,1650481,1650489,1650531,1650834,1651759,1652744,1653039,1655712,1655738,1656713,1658115,1659013,1659315,1659399,1659553-1659554 +/subversion/trunk:1467440,1467450,1467481,1467587,1467597,1467668,1467675,1467803,1467807,1467951,1468109,1468116,1468151,1468347,1468395,1468439,1468487,1468565-1468566,1468980,1469248,1469363,1469478,1469489,1469512-1469513,1469550,1469556,1469645,1469674,1469833,1469862,1469866,1469871,1469994,1470031,1470037,1470221,1470238,1470246,1470248,1470537,1470650,1470738,1470781,1470898,1470904,1470908,1470913,1470936,1470993-1470994,1471028-1471029,1471107,1471153,1471302,1471443,1471490,1471744,1475704,1475724,1475772,1475963,1476092,1476155,1476181,1476193,1476254,1476359,1476366,1476607,1477294,1477359,1477729-1477730,1477876,1477891,1478001,1478220-1478221,1478465,1478617,1478897,1478951,1478987,1478998,1479320-1479321,1479323,1479326,1479329,1479540,1479563,1479605,1479896,1480054,1480077,1480080,1480082,1480119,1480149,1480344,1480412,1480426,1480442,1480616,1480641-1480642,1480664,1480669,1480681,1480723,1480738,1480765,1481010,1481418,1481594,1481596,1481625,1481627-1481628,148 1631-1481632,1481772,1481782,1481800,1481813,1481847,1481944,1481981,1482282,1482327,1482338,1482350,1482354,1482436,1482479,1482524,1482528,1482536,1482554,1482558,1482592,1482724,1482759,1482779,1482829,1482969-1482970,1482973,1483015,1483077,1483101,1483116,1483125,1483391,1483397,1483555,1483557,1483575,1483580,1483781,1483927,1483939,1483947,1483964-1483965,1483968,1483972,1483975,1483977,1483984,1484006,1484016-1484017,1484023,1484755,1485018,1485127,1485350,1485413,1485427,1485447,1485449,1485497,1485501,1485650,1486072,1486457,1486572,1486809,1486915,1486931,1487083,1487094,1488183,1488267,1488294,1488425,1488639,1488693,1488878,1489114,1489116-1489117,1489203,1489339,1489935,1490045,1490326,1490679,1490684,1490721,1491432,1491499,1491707,1491739,1491755-1491756,1491762,1491770,1491816,1491868,1492005,1492020,1492145,1492148,1492152,1492164,1492264,1492295,1493102,1493424,1493475,1493703,1493720,1493951,1494089,1494171,1494223,1494287,1494298,1494318,1494342,1494657,1494913, 1494967,1495063,1495104,1495204,1495209,1495214,1495256,1495329,1495428,1495432,1495446,1495597,1495805,1495850,1495978,1496007,1496110-1496111,1496127,1496132,1496151,1496470,1496938,1496957,1497002,1497318-1497319,1497551,1497614,1497804,1497975,1497980,1498000,1498012,1498136,1498449,1498455-1498456,1498483-1498484,1498486,1498550,1498564,1498851,1498885,1498997,1499034,1499044,1499064,1499095-1499096,1499100,1499403,1499423,1499438,1499447,1499460,1499470,1499483,1499492,1499496,1499498,1499595,1499727,1500074,1500175,1500226,1500680,1500695,1500762,1500799,1500801-1500802,1500904,1500928,1501199,1501207,1501656,1501702,1502097,1502267,1502577,1502777,1502811,1502901,1502909,1502952,1503009-1503010,1503058,1503061,1503211,1503318,1503528,1503884,1504192,1504505,1506040-1506041,1506047,1506058,1506966,1507044,1507382,1507567,1507589,1507889,1507891,1508438,1509186,1509196,1511057,1511272,1511353,1511603,1512067,1512119,1512195,1512300-1512301,1512432,1512471-1512472,1513119,15131 22,1513156,1513463,1513472,1513874,1513879-1513880,1513943,1514295,1514315,1514318,1514356,1514628,1514763,1514785,1514804,1515119,1515141,1515201,1515225,1515237,1515343,1515366,1515516,1515534,1515721,1515992,1515997,1516023-1516024,1516049,1516051-1516053,1516071,1516271,1516429,1516556,1516565,1516567,1516806,1518184,1518942,1519615,1519617,1519733,1519816,1519823,1519955,1520065,1520529,1520532,1520539,1520745,1522892,1523666,1524869,1525902,1526439,1526655,1527103,1527105,1530763,1530768,1530872,1530922,1530967,1531002,1531004,1531014,1531938,1532023,1532098,1532316,1534102,1534149,1534158,1534713,1534737,1534860,1535115,1535161,1535532,1535610,1535676,1536350,1536383,1536464,1536488,1536537,1536914,1536931,1537018,1537147,1537190,1537193,1537221,1537263,1537360,1537415,1537555,1537700,1538516-1538517,1538519,1538574,1538581,1538812,1538925,1538928,1538939,1540044,1540417,1540752,1541432,1541635,1541638,1541705,1541790,1542042,1542069,1542071,1542119,1542129,1542138,1542146,15 42151,1542610,1542765,1542767,1542774,1543145,1543187,1543413,1543594,1543961,1544295,1544302-1544303,1544316,1544597,1544600,1544688,1544690,1544878,1544895,1545111,1545122,1545302,1545835,1545845,1547252,1547454,1547774,1547866,1547873,1548097,1548105,1548170,1548486,1548673,1549858,1549874,1550691,1550772,1550803,1551524,1551579,1552957-1552958,1553101,1553105,1553113,1553376-1553377,1553501,1553556,1554978,1555403,1555499,1557320,1557522,1559009,1559197,1560690,1560701,1561426,1561703,1563110,1564292,1564576,1564966,1564969,1565085,1565531,1566503-1566504,1567064,1567109,1567134,1567204,1567228,1567286,1567392,1567492,1567494,1567740,1567752,1567985,1568070,1568180,1568349,1568361,1568872,1568953,1568955,1569069,1570642,1571214,1571747,1571787,1571795,1572102,1572200,1572340,1573088,1573106,1573209,1574868,1575270,1575284,1575525,1575915,1577151,1577200,1577294,1577739,1577755,1577812-1577813,1578273,1578311,1578326,1578670,1578820,1578853,1578875,1579274,1579429,1579588,1579684 ,1580626,1580650,1580832,1580867,1580872,1581296,1581305,1581315,1581430,1581810,1583580,1583977,1584342,1584576,1584592,1584745,1585686,1586052,1586255,1586352,1586467,1587511,1587946,1587968,1588772,1588778,1589184,1589188,1589360,1589460,1589486,1590212,1591123,1592014,1592034,1593992,1594156,1594223,1594794,1594814,1594834,1595061,1595431,1596866,1596882,1600311,1600315,1600323,1600331,1600348,1600368,1600393,1600563,1600781,1600909,1601851,1606009,1611380-1611381,1612225,1615211,1615219,1615255-1615256,1615260,1615263,1616131,1619071,1619105,1619118,1619153,1619774,1619802,1620332,1621978,1621981,1625533,1625537,1628431,1628536,1628540,1633126,1636874,1637826,1640730,1640862,1640873,1641564,1643033,1643074,1643409,1643437,1643457,1643461,1643482,1643793,1643810,1643972-1643973,1644158,1644530,1644595,1644599,1646785-1646786,1646797,1647339,1650481,1650489,1650531,1650834,1651759,1652182,1652195,1652200,1652744,1653039,1653622-1653623,1653988,1654039,1654162,1654186,1654271,1655 712,1655738,1656713,1658115,1659013,1659315,1659399,1659553-1659554 +/subversion/trunk/subversion/tests:1652182 Modified: subversion/branches/1.8.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/STATUS?rev=1660019&r1=1660018&r2=1660019&view=diff ============================================================================== --- subversion/branches/1.8.x/STATUS (original) +++ subversion/branches/1.8.x/STATUS Mon Feb 16 04:00:48 2015 @@ -160,18 +160,6 @@ Candidate changes: Approved changes: ================= - * r1652182, r1652195, r1652200, r1653622, r1653623, r1653988, r1654039, r1654162, r1654186, r1654271, r1659721 - Fix issue #4551 "svnrdump load commits wrong properties, or fails, on a - non-deltas dumpfile". - Justification: - Data loss. - Branch: ^/subversion/branches/1.8.x-issue4551 - Notes: - r1653988, r1654039, r1654271 contain the fixes; the rest are adding tests. - Votes: - +1: julianfoad (without r1659721) - +1: philip, rhuijben, stefan2 - * r1646495, r1646505, r1659801 Fix issue #4538 'svnadmin load' strips r1 references in mergeinfo Justification: @@ -205,4 +193,3 @@ Approved changes: depends on the issue #4538 fix in r1646505. Votes: +1: julianfoad, philip, stefan2 - Propchange: subversion/branches/1.8.x/subversion/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Feb 16 04:00:48 2015 @@ -8,6 +8,7 @@ /subversion/branches/1.8.x-issue4437/subversion:1567249-1591140 /subversion/branches/1.8.x-issue4448/subversion:1540420-1541802 /subversion/branches/1.8.x-issue4480/subversion:1588773-1591136 +/subversion/branches/1.8.x-issue4551/subversion:1654795-1660018 /subversion/branches/1.8.x-javahl-exception-crash/subversion:1586424-1588151 /subversion/branches/1.8.x-libsvnjavahl-version/subversion:1483910-1485054 /subversion/branches/1.8.x-openssl-dirs/subversion:1535137-1540436 @@ -129,4 +130,4 @@ /subversion/branches/uris-as-urls/subversion:1060426-1064427 /subversion/branches/verify-at-commit/subversion:1462039-1462408 /subversion/branches/wc-collate-path/subversion:1407642 -/subversion/trunk/subversion:1467440,1467450,1467481,1467587,1467597,1467668,1467675,1467803,1467807,1467951,1468109,1468116,1468151,1468347,1468395,1468439,1468487,1468565-1468566,1468980,1469248,1469363,1469478,1469489,1469512-1469513,1469550,1469556,1469645,1469674,1469833,1469862,1469866,1469871,1469994,1470031,1470037,1470221,1470238,1470246,1470248,1470537,1470650,1470738,1470781,1470898,1470904,1470908,1470913,1470936,1470993-1470994,1471028-1471029,1471107,1471153,1471302,1471443,1471490,1471744,1475704,1475724,1475772,1475963,1476092,1476155,1476181,1476193,1476254,1476359,1476366,1476607,1477294,1477359,1477729-1477730,1477876,1477891,1478001,1478220-1478221,1478465,1478617,1478897,1478951,1478987,1478998,1479320-1479321,1479323,1479326,1479329,1479540,1479563,1479605,1479896,1480054,1480077,1480080,1480082,1480119,1480149,1480344,1480412,1480426,1480442,1480616,1480641-1480642,1480664,1480669,1480681,1480723,1480738,1480765,1481010,1481418,1481594,1481596,1481625,1481627- 1481628,1481631-1481632,1481772,1481782,1481800,1481813,1481847,1481944,1481981,1482282,1482327,1482338,1482350,1482354,1482436,1482479,1482524,1482528,1482536,1482554,1482558,1482592,1482724,1482759,1482779,1482829,1482969-1482970,1482973,1483015,1483077,1483101,1483116,1483125,1483391,1483397,1483555,1483557,1483575,1483580,1483781,1483927,1483939,1483947,1483964-1483965,1483968,1483972,1483975,1483977,1483984,1484006,1484016-1484017,1484023,1484755,1485018,1485127,1485350,1485413,1485427,1485447,1485449,1485497,1485501,1485650,1486072,1486457,1486572,1486809,1486915,1486931,1487083,1487094,1488183,1488267,1488294,1488425,1488639,1488693,1488878,1489114,1489116-1489117,1489203,1489339,1489935,1490045,1490326,1490679,1490684,1490721,1491432,1491499,1491707,1491739,1491755-1491756,1491762,1491770,1491816,1491868,1492005,1492020,1492145,1492148,1492152,1492164,1492264,1492295,1493102,1493424,1493475,1493703,1493720,1493951,1494089,1494171,1494223,1494287,1494298,1494318,1494342,14946 57,1494913,1494967,1495063,1495104,1495204,1495209,1495214,1495256,1495329,1495428,1495432,1495446,1495597,1495805,1495850,1495978,1496007,1496110-1496111,1496127,1496132,1496151,1496470,1496938,1496957,1497002,1497318-1497319,1497551,1497614,1497804,1497975,1497980,1498000,1498012,1498136,1498449,1498455-1498456,1498483-1498484,1498486,1498550,1498564,1498851,1498885,1498997,1499034,1499044,1499064,1499095-1499096,1499100,1499403,1499423,1499438,1499447,1499460,1499470,1499483,1499492,1499496,1499498,1499595,1499727,1500074,1500175,1500226,1500680,1500695,1500762,1500799,1500801-1500802,1500904,1500928,1501199,1501207,1501656,1501702,1502097,1502267,1502577,1502777,1502811,1502901,1502909,1502952,1503009-1503010,1503058,1503061,1503211,1503318,1503528,1503884,1504192,1504505,1506040-1506041,1506047,1506058,1506966,1507044,1507382,1507567,1507589,1507889,1507891,1508438,1509186,1509196,1511057,1511272,1511353,1511603,1512067,1512119,1512195,1512300-1512301,1512432,1512471-1512472,15 13119,1513122,1513156,1513463,1513472,1513874,1513879-1513880,1513943,1514295,1514315,1514318,1514356,1514628,1514763,1514785,1514804,1515119,1515141,1515201,1515225,1515237,1515343,1515366,1515516,1515534,1515721,1515992,1515997,1516023-1516024,1516049,1516051-1516053,1516071,1516271,1516429,1516556,1516565,1516567,1516806,1518184,1518942,1519615,1519617,1519733,1519816,1519823,1519955,1520065,1520529,1520532,1520539,1520745,1522892,1523666,1524869,1525902,1526439,1526655,1527103,1527105,1530763,1530768,1530872,1530922,1530967,1531002,1531004,1531014,1531938,1532023,1532098,1532316,1534102,1534149,1534158,1534713,1534737,1534860,1535115,1535161,1535532,1535610,1535676,1536350,1536383,1536464,1536488,1536537,1536914,1536931,1537018,1537147,1537190,1537193,1537221,1537263,1537360,1537415,1537555,1537700,1538516-1538517,1538519,1538574,1538581,1538812,1538925,1538928,1538939,1540044,1540417,1540752,1541432,1541635,1541638,1541705,1541790,1542042,1542069,1542071,1542119,1542129,1542138 ,1542146,1542151,1542610,1542765,1542767,1542774,1543145,1543187,1543413,1543594,1543961,1544295,1544302-1544303,1544316,1544597,1544600,1544688,1544690,1544878,1544895,1545111,1545122,1545302,1545835,1545845,1547252,1547454,1547774,1547866,1547873,1548097,1548105,1548170,1548486,1548673,1549858,1549874,1550691,1550772,1550803,1551524,1551579,1552957-1552958,1553101,1553105,1553113,1553376-1553377,1553501,1553556,1554978,1555403,1555499,1557320,1557522,1559009,1559197,1560690,1560701,1561426,1561703,1563110,1564292,1564576,1564966,1564969,1565085,1565531,1566503-1566504,1567064,1567109,1567134,1567204,1567228,1567286,1567392,1567492,1567494,1567740,1567752,1567985,1568070,1568180,1568349,1568361,1568872,1568953,1568955,1569069,1570642,1571214,1571747,1571787,1571795,1572102,1572200,1572340,1573088,1573106,1573209,1574868,1575270,1575284,1575525,1575915,1577151,1577200,1577294,1577739,1577755,1577812-1577813,1578273,1578311,1578326,1578670,1578820,1578853,1578875,1579274,1579429,1579 588,1579684,1580626,1580650,1580832,1580867,1580872,1581296,1581305,1581315,1581430,1581810,1583580,1583977,1584342,1584576,1584592,1584745,1585686,1586052,1586255,1586352,1586467,1587511,1587946,1587968,1588772,1588778,1589184,1589188,1589360,1589460,1589486,1590212,1591123,1592014,1592034,1593992,1594156,1594223,1594794,1594814,1594834,1595061,1595431,1596866,1600311,1600315,1600323,1600331,1600348,1600368,1600393,1600563,1600781,1600909,1601851,1606009,1611379-1611381,1612225,1612405,1615211,1615219,1615255-1615256,1615260,1615263,1615354,1616131,1617687,1619071,1619105,1619118,1619153,1619774,1619802,1620332,1621978,1621981,1625533,1625537,1628431,1628536,1628540,1633126,1636874,1637826,1640730,1640862,1640873,1641564,1643033,1643074,1643409,1643437,1643457,1643461,1643482,1643793,1643810,1643972-1643973,1644158,1644530,1644595,1644599,1646785-1646786,1646797,1647339,1650481,1650489,1650531,1650834,1651759,1652744,1653039,1655712,1655738,1656713,1658115,1659013,1659315,1659399,1 659553-1659554 +/subversion/trunk/subversion:1467440,1467450,1467481,1467587,1467597,1467668,1467675,1467803,1467807,1467951,1468109,1468116,1468151,1468347,1468395,1468439,1468487,1468565-1468566,1468980,1469248,1469363,1469478,1469489,1469512-1469513,1469550,1469556,1469645,1469674,1469833,1469862,1469866,1469871,1469994,1470031,1470037,1470221,1470238,1470246,1470248,1470537,1470650,1470738,1470781,1470898,1470904,1470908,1470913,1470936,1470993-1470994,1471028-1471029,1471107,1471153,1471302,1471443,1471490,1471744,1475704,1475724,1475772,1475963,1476092,1476155,1476181,1476193,1476254,1476359,1476366,1476607,1477294,1477359,1477729-1477730,1477876,1477891,1478001,1478220-1478221,1478465,1478617,1478897,1478951,1478987,1478998,1479320-1479321,1479323,1479326,1479329,1479540,1479563,1479605,1479896,1480054,1480077,1480080,1480082,1480119,1480149,1480344,1480412,1480426,1480442,1480616,1480641-1480642,1480664,1480669,1480681,1480723,1480738,1480765,1481010,1481418,1481594,1481596,1481625,1481627- 1481628,1481631-1481632,1481772,1481782,1481800,1481813,1481847,1481944,1481981,1482282,1482327,1482338,1482350,1482354,1482436,1482479,1482524,1482528,1482536,1482554,1482558,1482592,1482724,1482759,1482779,1482829,1482969-1482970,1482973,1483015,1483077,1483101,1483116,1483125,1483391,1483397,1483555,1483557,1483575,1483580,1483781,1483927,1483939,1483947,1483964-1483965,1483968,1483972,1483975,1483977,1483984,1484006,1484016-1484017,1484023,1484755,1485018,1485127,1485350,1485413,1485427,1485447,1485449,1485497,1485501,1485650,1486072,1486457,1486572,1486809,1486915,1486931,1487083,1487094,1488183,1488267,1488294,1488425,1488639,1488693,1488878,1489114,1489116-1489117,1489203,1489339,1489935,1490045,1490326,1490679,1490684,1490721,1491432,1491499,1491707,1491739,1491755-1491756,1491762,1491770,1491816,1491868,1492005,1492020,1492145,1492148,1492152,1492164,1492264,1492295,1493102,1493424,1493475,1493703,1493720,1493951,1494089,1494171,1494223,1494287,1494298,1494318,1494342,14946 57,1494913,1494967,1495063,1495104,1495204,1495209,1495214,1495256,1495329,1495428,1495432,1495446,1495597,1495805,1495850,1495978,1496007,1496110-1496111,1496127,1496132,1496151,1496470,1496938,1496957,1497002,1497318-1497319,1497551,1497614,1497804,1497975,1497980,1498000,1498012,1498136,1498449,1498455-1498456,1498483-1498484,1498486,1498550,1498564,1498851,1498885,1498997,1499034,1499044,1499064,1499095-1499096,1499100,1499403,1499423,1499438,1499447,1499460,1499470,1499483,1499492,1499496,1499498,1499595,1499727,1500074,1500175,1500226,1500680,1500695,1500762,1500799,1500801-1500802,1500904,1500928,1501199,1501207,1501656,1501702,1502097,1502267,1502577,1502777,1502811,1502901,1502909,1502952,1503009-1503010,1503058,1503061,1503211,1503318,1503528,1503884,1504192,1504505,1506040-1506041,1506047,1506058,1506966,1507044,1507382,1507567,1507589,1507889,1507891,1508438,1509186,1509196,1511057,1511272,1511353,1511603,1512067,1512119,1512195,1512300-1512301,1512432,1512471-1512472,15 13119,1513122,1513156,1513463,1513472,1513874,1513879-1513880,1513943,1514295,1514315,1514318,1514356,1514628,1514763,1514785,1514804,1515119,1515141,1515201,1515225,1515237,1515343,1515366,1515516,1515534,1515721,1515992,1515997,1516023-1516024,1516049,1516051-1516053,1516071,1516271,1516429,1516556,1516565,1516567,1516806,1518184,1518942,1519615,1519617,1519733,1519816,1519823,1519955,1520065,1520529,1520532,1520539,1520745,1522892,1523666,1524869,1525902,1526439,1526655,1527103,1527105,1530763,1530768,1530872,1530922,1530967,1531002,1531004,1531014,1531938,1532023,1532098,1532316,1534102,1534149,1534158,1534713,1534737,1534860,1535115,1535161,1535532,1535610,1535676,1536350,1536383,1536464,1536488,1536537,1536914,1536931,1537018,1537147,1537190,1537193,1537221,1537263,1537360,1537415,1537555,1537700,1538516-1538517,1538519,1538574,1538581,1538812,1538925,1538928,1538939,1540044,1540417,1540752,1541432,1541635,1541638,1541705,1541790,1542042,1542069,1542071,1542119,1542129,1542138 ,1542146,1542151,1542610,1542765,1542767,1542774,1543145,1543187,1543413,1543594,1543961,1544295,1544302-1544303,1544316,1544597,1544600,1544688,1544690,1544878,1544895,1545111,1545122,1545302,1545835,1545845,1547252,1547454,1547774,1547866,1547873,1548097,1548105,1548170,1548486,1548673,1549858,1549874,1550691,1550772,1550803,1551524,1551579,1552957-1552958,1553101,1553105,1553113,1553376-1553377,1553501,1553556,1554978,1555403,1555499,1557320,1557522,1559009,1559197,1560690,1560701,1561426,1561703,1563110,1564292,1564576,1564966,1564969,1565085,1565531,1566503-1566504,1567064,1567109,1567134,1567204,1567228,1567286,1567392,1567492,1567494,1567740,1567752,1567985,1568070,1568180,1568349,1568361,1568872,1568953,1568955,1569069,1570642,1571214,1571747,1571787,1571795,1572102,1572200,1572340,1573088,1573106,1573209,1574868,1575270,1575284,1575525,1575915,1577151,1577200,1577294,1577739,1577755,1577812-1577813,1578273,1578311,1578326,1578670,1578820,1578853,1578875,1579274,1579429,1579 588,1579684,1580626,1580650,1580832,1580867,1580872,1581296,1581305,1581315,1581430,1581810,1583580,1583977,1584342,1584576,1584592,1584745,1585686,1586052,1586255,1586352,1586467,1587511,1587946,1587968,1588772,1588778,1589184,1589188,1589360,1589460,1589486,1590212,1591123,1592014,1592034,1593992,1594156,1594223,1594794,1594814,1594834,1595061,1595431,1596866,1600311,1600315,1600323,1600331,1600348,1600368,1600393,1600563,1600781,1600909,1601851,1606009,1611379-1611381,1612225,1612405,1615211,1615219,1615255-1615256,1615260,1615263,1615354,1616131,1617687,1619071,1619105,1619118,1619153,1619774,1619802,1620332,1621978,1621981,1625533,1625537,1628431,1628536,1628540,1633126,1636874,1637826,1640730,1640862,1640873,1641564,1643033,1643074,1643409,1643437,1643457,1643461,1643482,1643793,1643810,1643972-1643973,1644158,1644530,1644595,1644599,1646785-1646786,1646797,1647339,1650481,1650489,1650531,1650834,1651759,1652182,1652195,1652200,1652744,1653039,1653622-1653623,1653988,1654039,1 654162,1654186,1654271,1655712,1655738,1656713,1658115,1659013,1659315,1659399,1659553-1659554 Modified: subversion/branches/1.8.x/subversion/svnrdump/load_editor.c URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/svnrdump/load_editor.c?rev=1660019&r1=1660018&r2=1660019&view=diff ============================================================================== --- subversion/branches/1.8.x/subversion/svnrdump/load_editor.c (original) +++ subversion/branches/1.8.x/subversion/svnrdump/load_editor.c Mon Feb 16 04:00:48 2015 @@ -41,6 +41,8 @@ #define SVNRDUMP_PROP_LOCK SVN_PROP_PREFIX "rdump-lock" +#define ARE_VALID_COPY_ARGS(p,r) ((p) && SVN_IS_VALID_REVNUM(r)) + #if 0 #define LDR_DBG(x) SVN_DBG(x) #else @@ -102,6 +104,15 @@ struct directory_baton void *baton; const char *relpath; int depth; + + /* The copy-from source of this directory, no matter whether it is + copied explicitly (the root node of a copy) or implicitly (being an + existing child of a copied directory). For a node that is newly + added (without history), even inside a copied parent, these are + NULL and SVN_INVALID_REVNUM. */ + const char *copyfrom_path; + svn_revnum_t copyfrom_rev; + struct directory_baton *parent; }; @@ -115,12 +126,20 @@ struct node_baton svn_node_kind_t kind; enum svn_node_action action; + /* Is this directory explicitly added? If not, then it already existed + or is a child of a copy. */ + svn_boolean_t is_added; + svn_revnum_t copyfrom_rev; const char *copyfrom_path; + const char *copyfrom_url; void *file_baton; const char *base_checksum; + /* (const char *name) -> (svn_prop_t *) */ + apr_hash_t *prop_changes; + struct revision_baton *rb; }; @@ -550,6 +569,7 @@ new_revision_record(void **revision_bato pb = parse_baton; rb->pool = svn_pool_create(pool); rb->pb = pb; + rb->db = NULL; for (hi = apr_hash_first(pool, headers); hi; hi = apr_hash_next(hi)) { @@ -601,6 +621,47 @@ uuid_record(const char *uuid, return SVN_NO_ERROR; } +/* Push information about another directory onto the linked list RB->db. + * + * CHILD_BATON is the baton returned by the commit editor. RELPATH is the + * repository-relative path of this directory. IS_ADDED is true iff this + * directory is being added (with or without history). If added with + * history then COPYFROM_PATH/COPYFROM_REV are the copyfrom source, else + * are NULL/SVN_INVALID_REVNUM. + */ +static void +push_directory(struct revision_baton *rb, + void *child_baton, + const char *relpath, + svn_boolean_t is_added, + const char *copyfrom_path, + svn_revnum_t copyfrom_rev) +{ + struct directory_baton *child_db = apr_pcalloc(rb->pool, sizeof (*child_db)); + + SVN_ERR_ASSERT_NO_RETURN( + is_added || (copyfrom_path == NULL && copyfrom_rev == SVN_INVALID_REVNUM)); + + /* If this node is an existing (not newly added) child of a copied node, + calculate where it was copied from. */ + if (!is_added + && ARE_VALID_COPY_ARGS(rb->db->copyfrom_path, rb->db->copyfrom_rev)) + { + const char *name = svn_relpath_basename(relpath, NULL); + + copyfrom_path = svn_relpath_join(rb->db->copyfrom_path, name, + rb->pool); + copyfrom_rev = rb->db->copyfrom_rev; + } + + child_db->baton = child_baton; + child_db->relpath = relpath; + child_db->copyfrom_path = copyfrom_path; + child_db->copyfrom_rev = copyfrom_rev; + child_db->parent = rb->db; + rb->db = child_db; +} + static svn_error_t * new_node_record(void **node_baton, apr_hash_t *headers, @@ -611,17 +672,17 @@ new_node_record(void **node_baton, const struct svn_delta_editor_t *commit_editor = rb->pb->commit_editor; void *commit_edit_baton = rb->pb->commit_edit_baton; struct node_baton *nb; - struct directory_baton *child_db; apr_hash_index_t *hi; void *child_baton; - char *relpath_compose; const char *nb_dirname; nb = apr_pcalloc(rb->pool, sizeof(*nb)); nb->rb = rb; - + nb->is_added = FALSE; nb->copyfrom_path = NULL; + nb->copyfrom_url = NULL; nb->copyfrom_rev = SVN_INVALID_REVNUM; + nb->prop_changes = apr_hash_make(rb->pool); /* If the creation of commit_editor is pending, create it now and open_root on it; also create a top-level directory baton. */ @@ -654,13 +715,9 @@ new_node_record(void **node_baton, LDR_DBG(("Opened root %p\n", child_baton)); - /* child_db corresponds to the root directory baton here */ - child_db = apr_pcalloc(rb->pool, sizeof(*child_db)); - child_db->baton = child_baton; - child_db->depth = 0; - child_db->relpath = ""; - child_db->parent = NULL; - rb->db = child_db; + /* child_baton corresponds to the root directory baton here */ + push_directory(rb, child_baton, "", TRUE /*is_added*/, + NULL, SVN_INVALID_REVNUM); } for (hi = apr_hash_first(rb->pool, headers); hi; hi = apr_hash_next(hi)) @@ -730,7 +787,7 @@ new_node_record(void **node_baton, for (i = 0; i < residual_open_path->nelts; i ++) { - relpath_compose = + char *relpath_compose = svn_relpath_join(rb->db->relpath, APR_ARRAY_IDX(residual_open_path, i, const char *), rb->pool); @@ -739,12 +796,8 @@ new_node_record(void **node_baton, rb->rev - rb->rev_offset - 1, rb->pool, &child_baton)); LDR_DBG(("Opened dir %p\n", child_baton)); - child_db = apr_pcalloc(rb->pool, sizeof(*child_db)); - child_db->baton = child_baton; - child_db->depth = rb->db->depth + 1; - child_db->relpath = relpath_compose; - child_db->parent = rb->db; - rb->db = child_db; + push_directory(rb, child_baton, relpath_compose, TRUE /*is_added*/, + NULL, SVN_INVALID_REVNUM); } } @@ -772,7 +825,7 @@ new_node_record(void **node_baton, if (rb->pb->parent_dir) nb->copyfrom_path = svn_relpath_join(rb->pb->parent_dir, nb->copyfrom_path, rb->pool); - nb->copyfrom_path = svn_path_url_add_component2(rb->pb->root_url, + nb->copyfrom_url = svn_path_url_add_component2(rb->pb->root_url, nb->copyfrom_path, rb->pool); } @@ -790,11 +843,12 @@ new_node_record(void **node_baton, else /* FALL THROUGH */; case svn_node_action_add: + nb->is_added = TRUE; switch (nb->kind) { case svn_node_file: SVN_ERR(commit_editor->add_file(nb->path, rb->db->baton, - nb->copyfrom_path, + nb->copyfrom_url, nb->copyfrom_rev, rb->pool, &(nb->file_baton))); LDR_DBG(("Added file %s to dir %p as %p\n", @@ -802,17 +856,13 @@ new_node_record(void **node_baton, break; case svn_node_dir: SVN_ERR(commit_editor->add_directory(nb->path, rb->db->baton, - nb->copyfrom_path, + nb->copyfrom_url, nb->copyfrom_rev, rb->pool, &child_baton)); LDR_DBG(("Added dir %s to dir %p as %p\n", nb->path, rb->db->baton, child_baton)); - child_db = apr_pcalloc(rb->pool, sizeof(*child_db)); - child_db->baton = child_baton; - child_db->depth = rb->db->depth + 1; - child_db->relpath = apr_pstrdup(rb->pool, nb->path); - child_db->parent = rb->db; - rb->db = child_db; + push_directory(rb, child_baton, nb->path, TRUE /*is_added*/, + nb->copyfrom_path, nb->copyfrom_rev); break; default: break; @@ -830,12 +880,8 @@ new_node_record(void **node_baton, SVN_ERR(commit_editor->open_directory(nb->path, rb->db->baton, rb->rev - rb->rev_offset - 1, rb->pool, &child_baton)); - child_db = apr_pcalloc(rb->pool, sizeof(*child_db)); - child_db->baton = child_baton; - child_db->depth = rb->db->depth + 1; - child_db->relpath = apr_pstrdup(rb->pool, nb->path); - child_db->parent = rb->db; - rb->db = child_db; + push_directory(rb, child_baton, nb->path, FALSE /*is_added*/, + NULL, SVN_INVALID_REVNUM); break; } break; @@ -887,8 +933,8 @@ set_node_property(void *baton, const svn_string_t *value) { struct node_baton *nb = baton; - const struct svn_delta_editor_t *commit_editor = nb->rb->pb->commit_editor; apr_pool_t *pool = nb->rb->pool; + svn_prop_t *prop; if (value && strcmp(name, SVN_PROP_MERGEINFO) == 0) { @@ -938,21 +984,11 @@ set_node_property(void *baton, SVN_ERR(svn_repos__validate_prop(name, value, pool)); - switch (nb->kind) - { - case svn_node_file: - LDR_DBG(("Applying properties on %p\n", nb->file_baton)); - SVN_ERR(commit_editor->change_file_prop(nb->file_baton, name, - value, pool)); - break; - case svn_node_dir: - LDR_DBG(("Applying properties on %p\n", nb->rb->db->baton)); - SVN_ERR(commit_editor->change_dir_prop(nb->rb->db->baton, name, - value, pool)); - break; - default: - break; - } + prop = apr_palloc(nb->rb->pool, sizeof (*prop)); + prop->name = apr_pstrdup(pool, name); + prop->value = value ? svn_string_dup(value, pool) : NULL; + svn_hash_sets(nb->prop_changes, prop->name, prop); + return SVN_NO_ERROR; } @@ -961,44 +997,84 @@ delete_node_property(void *baton, const char *name) { struct node_baton *nb = baton; - const struct svn_delta_editor_t *commit_editor = nb->rb->pb->commit_editor; apr_pool_t *pool = nb->rb->pool; + svn_prop_t *prop; SVN_ERR(svn_repos__validate_prop(name, NULL, pool)); - if (nb->kind == svn_node_file) - SVN_ERR(commit_editor->change_file_prop(nb->file_baton, name, - NULL, pool)); - else - SVN_ERR(commit_editor->change_dir_prop(nb->rb->db->baton, name, - NULL, pool)); + prop = apr_palloc(pool, sizeof (*prop)); + prop->name = apr_pstrdup(pool, name); + prop->value = NULL; + svn_hash_sets(nb->prop_changes, prop->name, prop); return SVN_NO_ERROR; } +/* Delete all the properties of the node, if any. + * + * The commit editor doesn't have a method to delete a node's properties + * without knowing what they are, so we have to first find out what + * properties the node would have had. If it's copied (explicitly or + * implicitly), we look at the copy source. If it's only being changed, + * we look at the node's current path in the head revision. + */ static svn_error_t * remove_node_props(void *baton) { struct node_baton *nb = baton; + struct revision_baton *rb = nb->rb; apr_pool_t *pool = nb->rb->pool; apr_hash_index_t *hi; apr_hash_t *props; + const char *orig_path; + svn_revnum_t orig_rev; + + /* Find the path and revision that has the node's original properties */ + if (ARE_VALID_COPY_ARGS(nb->copyfrom_path, nb->copyfrom_rev)) + { + LDR_DBG(("using nb->copyfrom %s@%ld", nb->copyfrom_path, nb->copyfrom_rev)); + orig_path = nb->copyfrom_path; + orig_rev = nb->copyfrom_rev; + } + else if (!nb->is_added + && ARE_VALID_COPY_ARGS(rb->db->copyfrom_path, rb->db->copyfrom_rev)) + { + /* If this is a dir, then it's described by rb->db; + if this is a file, then it's a child of the dir in rb->db. */ + LDR_DBG(("using rb->db->copyfrom (k=%d) %s@%ld", + nb->kind, rb->db->copyfrom_path, rb->db->copyfrom_rev)); + orig_path = (nb->kind == svn_node_dir) + ? rb->db->copyfrom_path + : svn_relpath_join(rb->db->copyfrom_path, + svn_relpath_basename(nb->path, NULL), + rb->pool); + orig_rev = rb->db->copyfrom_rev; + } + else + { + LDR_DBG(("using self.path@head %s@%ld", nb->path, SVN_INVALID_REVNUM)); + /* ### Should we query at a known, fixed, "head" revision number + instead of passing SVN_INVALID_REVNUM and getting a moving target? */ + orig_path = nb->path; + orig_rev = SVN_INVALID_REVNUM; + } + LDR_DBG(("Trying %s@%ld", orig_path, orig_rev)); if ((nb->action == svn_node_action_add || nb->action == svn_node_action_replace) - && ! SVN_IS_VALID_REVNUM(nb->copyfrom_rev)) + && ! ARE_VALID_COPY_ARGS(orig_path, orig_rev)) /* Add-without-history; no "old" properties to worry about. */ return SVN_NO_ERROR; if (nb->kind == svn_node_file) { - SVN_ERR(svn_ra_get_file(nb->rb->pb->aux_session, nb->path, - SVN_INVALID_REVNUM, NULL, NULL, &props, pool)); + SVN_ERR(svn_ra_get_file(nb->rb->pb->aux_session, + orig_path, orig_rev, NULL, NULL, &props, pool)); } else /* nb->kind == svn_node_dir */ { SVN_ERR(svn_ra_get_dir2(nb->rb->pb->aux_session, NULL, NULL, &props, - nb->path, SVN_INVALID_REVNUM, 0, pool)); + orig_path, orig_rev, 0, pool)); } for (hi = apr_hash_first(pool, props); hi; hi = apr_hash_next(hi)) @@ -1052,6 +1128,29 @@ close_node(void *baton) { struct node_baton *nb = baton; const struct svn_delta_editor_t *commit_editor = nb->rb->pb->commit_editor; + apr_pool_t *pool = nb->rb->pool; + apr_hash_index_t *hi; + + for (hi = apr_hash_first(pool, nb->prop_changes); + hi; hi = apr_hash_next(hi)) + { + const char *name = svn__apr_hash_index_key(hi); + svn_prop_t *prop = svn__apr_hash_index_val(hi); + + switch (nb->kind) + { + case svn_node_file: + SVN_ERR(commit_editor->change_file_prop(nb->file_baton, + name, prop->value, pool)); + break; + case svn_node_dir: + SVN_ERR(commit_editor->change_dir_prop(nb->rb->db->baton, + name, prop->value, pool)); + break; + default: + break; + } + } /* Pass a file node closure through to the editor *unless* we deleted the file (which doesn't require us to open it). */ Modified: subversion/branches/1.8.x/subversion/tests/cmdline/svnrdump_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/tests/cmdline/svnrdump_tests.py?rev=1660019&r1=1660018&r2=1660019&view=diff ============================================================================== --- subversion/branches/1.8.x/subversion/tests/cmdline/svnrdump_tests.py (original) +++ subversion/branches/1.8.x/subversion/tests/cmdline/svnrdump_tests.py Mon Feb 16 04:00:48 2015 @@ -769,6 +769,151 @@ def only_trunk_A_range_dump(sbox): #---------------------------------------------------------------------- +#---------------------------------------------------------------------- + +# Regression test for issue 4551 "svnrdump load commits wrong properties, +# or fails, on a non-deltas dumpfile". In this test, the copy source does +# not exist and the failure mode is to error out. +@Issue(4551) +def load_non_deltas_copy_with_props(sbox): + "load non-deltas copy with props" + sbox.build() + + # Case (1): Copies that do not replace anything: the copy target path + # at (new rev - 1) does not exist + + # Set properties on each node to be copied + sbox.simple_propset('p', 'v', 'A/mu', 'A/B', 'A/B/E') + sbox.simple_propset('q', 'v', 'A/mu', 'A/B', 'A/B/E') + sbox.simple_commit() + sbox.simple_update() # avoid mixed-rev + + # Do the copies + sbox.simple_copy('A/mu@2', 'A/mu_COPY') + sbox.simple_copy('A/B@2', 'A/B_COPY') + # Also add new nodes inside the copied dir, to test more code paths + sbox.simple_copy('A/B/E@2', 'A/B_COPY/copied') + sbox.simple_mkdir('A/B_COPY/added') + sbox.simple_copy('A/B/E@2', 'A/B_COPY/added/copied') + # On each copied node, delete a prop + sbox.simple_propdel('p', 'A/mu_COPY', 'A/B_COPY', 'A/B_COPY/E', + 'A/B_COPY/copied', 'A/B_COPY/added/copied') + + sbox.simple_commit() + + # Dump with 'svnadmin' (non-deltas mode) + dumpfile = svntest.actions.run_and_verify_dump(sbox.repo_dir, deltas=False) + + # Load with 'svnrdump'. This used to throw an error: + # svnrdump: E160013: File not found: revision 2, path '/A/B_COPY' + new_repo_dir, new_repo_url = sbox.add_repo_path('new_repo') + svntest.main.create_repos(new_repo_dir) + svntest.actions.enable_revprop_changes(new_repo_dir) + svntest.actions.run_and_verify_svnrdump(dumpfile, + svntest.verify.AnyOutput, + [], 0, 'load', new_repo_url) + + # Check that property 'p' really was deleted on each copied node + for tgt_path in ['A/mu_COPY', 'A/B_COPY', 'A/B_COPY/E', + 'A/B_COPY/copied', 'A/B_COPY/added/copied']: + tgt_url = new_repo_url + '/' + tgt_path + _, out, _ = svntest.main.run_svn(None, 'proplist', tgt_url) + expected = ["Properties on '%s':" % (tgt_url,), + 'q'] + actual = map(str.strip, out) + svntest.verify.compare_and_display_lines(None, 'PROPS', expected, actual) + +# Regression test for issue 4551 "svnrdump load commits wrong properties, +# or fails, on a non-deltas dumpfile". In this test, the copy source does +# exist and the failure mode is to fail to delete a property. +@Issue(4551) +def load_non_deltas_replace_copy_with_props(sbox): + "load non-deltas replace© with props" + sbox.build() + + # Case (2): Copies that replace something: the copy target path + # at (new rev - 1) exists and has no property named 'p' + + # Set props on the copy source nodes (a file, a dir, a child of the dir) + sbox.simple_propset('p', 'v', 'A/mu', 'A/B', 'A/B/E') + sbox.simple_propset('q', 'v', 'A/mu', 'A/B', 'A/B/E') + sbox.simple_commit() + sbox.simple_update() # avoid mixed-rev + + # Do the copies, replacing something + sbox.simple_rm('A/D/gamma', 'A/C') + sbox.simple_copy('A/mu@2', 'A/D/gamma') + sbox.simple_copy('A/B@2', 'A/C') + # On the copy, delete a prop that wasn't present on the node that it replaced + sbox.simple_propdel('p', 'A/D/gamma', 'A/C', 'A/C/E') + + sbox.simple_commit() + + # Dump with 'svnadmin' (non-deltas mode) + dumpfile = svntest.actions.run_and_verify_dump(sbox.repo_dir, deltas=False) + + # Load with 'svnrdump' + new_repo_dir, new_repo_url = sbox.add_repo_path('new_repo') + svntest.main.create_repos(new_repo_dir) + svntest.actions.enable_revprop_changes(new_repo_dir) + svntest.actions.run_and_verify_svnrdump(dumpfile, + svntest.verify.AnyOutput, + [], 0, 'load', new_repo_url) + + # Check that property 'p' really was deleted on each copied node + # This used to fail, finding that property 'p' was still present + for tgt_path in ['A/D/gamma', 'A/C', 'A/C/E']: + tgt_url = new_repo_url + '/' + tgt_path + _, out, _ = svntest.main.run_svn(None, 'proplist', tgt_url) + expected = ["Properties on '%s':" % (tgt_url,), + 'q'] + actual = map(str.strip, out) + svntest.verify.compare_and_display_lines(None, 'PROPS', expected, actual) + +# Regression test for issue 4551 "svnrdump load commits wrong properties, +# or fails, on a non-deltas dumpfile". In this test, a node's props are +# modified, and the failure mode is that RA-serf would end up deleting +# properties that should remain on the node. +@Issue(4551) +def load_non_deltas_with_props(sbox): + "load non-deltas with props" + sbox.build() + + # Case (3): A node's props are modified, and at least one of its previous + # props remains after the modification. svnrdump made two prop mod method + # calls for the same property (delete, then set). RA-serf's commit editor + # didn't expect this and performed the deletes after the non-deletes, and + # so ended up deleting a property that should not be deleted. + + # Set properties on each node to be modified + sbox.simple_propset('p', 'v', 'A/mu') + sbox.simple_propset('q', 'v', 'A/mu', 'A/B') + sbox.simple_commit() + + # Do the modifications: a different kind of mod on each node + sbox.simple_propdel('p', 'A/mu') + sbox.simple_propset('q', 'v2', 'A/B') + sbox.simple_commit() + + # Dump with 'svnadmin' (non-deltas mode) + dumpfile = svntest.actions.run_and_verify_dump(sbox.repo_dir, deltas=False) + + # Load with 'svnrdump' + new_repo_dir, new_repo_url = sbox.add_repo_path('new_repo') + svntest.main.create_repos(new_repo_dir) + svntest.actions.enable_revprop_changes(new_repo_dir) + svntest.actions.run_and_verify_svnrdump(dumpfile, + svntest.verify.AnyOutput, + [], 0, 'load', new_repo_url) + + # Check that property 'q' remains on each modified node + for tgt_path in ['A/mu', 'A/B']: + tgt_url = new_repo_url + '/' + tgt_path + _, out, _ = svntest.main.run_svn(None, 'proplist', tgt_url) + expected = ["Properties on '%s':" % (tgt_url,), + 'q'] + actual = map(str.strip, out) + svntest.verify.compare_and_display_lines(None, 'PROPS', expected, actual) ######################################################################## # Run the tests @@ -824,6 +969,9 @@ test_list = [ None, range_dump, only_trunk_range_dump, only_trunk_A_range_dump, + load_non_deltas_copy_with_props, + load_non_deltas_replace_copy_with_props, + load_non_deltas_with_props, ] if __name__ == '__main__':