Author: svn-role Date: Wed Aug 2 04:00:25 2017 New Revision: 1803755 URL: http://svn.apache.org/viewvc?rev=1803755&view=rev Log: Merge the 1.9.x-r1802316 branch:
* r1802080, r1802316 Fix SEGV for 'svn export -rN WC' with relative externals. Justification: Client SEGV. Branch: ^/subversion/branches/1.9.x-r1802316 Votes: +1: philip, danielsh, jamessan Modified: subversion/branches/1.9.x/ (props changed) subversion/branches/1.9.x/STATUS subversion/branches/1.9.x/subversion/include/svn_client.h subversion/branches/1.9.x/subversion/libsvn_client/export.c subversion/branches/1.9.x/subversion/tests/cmdline/export_tests.py Propchange: subversion/branches/1.9.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Aug 2 04:00:25 2017 @@ -15,6 +15,7 @@ /subversion/branches/1.9.x-r1757529-group:1757739-1757935 /subversion/branches/1.9.x-r1758224-group:1758407-1758693 /subversion/branches/1.9.x-r1785053:1786519-1794526 +/subversion/branches/1.9.x-r1802316:1802343-1803754 /subversion/branches/1.9.x-rep-cache-db-fixes:1743185-1757778 /subversion/branches/1.9.x-strict-rep-sharing:1786535-1795992 /subversion/branches/10Gb:1388102,1388163-1388190,1388195,1388202,1388205,1388211,1388276,1388362,1388375,1388394,1388636,1388639-1388640,1388643-1388644,1388654,1388720,1388789,1388795,1388801,1388805,1388807,1388810,1388816,1389044,1389276,1389289,1389662,1389867,1390017,1390209,1390216,1390407,1390409,1390414,1390419,1390955 @@ -106,4 +107,4 @@ /subversion/branches/verify-at-commit:1462039-1462408 /subversion/branches/verify-keep-going:1439280-1546110 /subversion/branches/wc-collate-path:1402685-1480384 -/subversion/trunk:1660545-1660547,1660549-1662901,1663003,1663183-1663184,1663253,1663286,1663338,1663347,1663355,1663374,1663450,1663500,1663530,1663671,1663697,1663706,1663738,1663749,1663791,1663991,1664035,1664078,1664080,1664084-1664085,1664187,1664191,1664193,1664200,1664344,1664476,1664480-1664481,1664483,1664489-1664490,1664507,1664520-1664521,1664523,1664526-1664527,1664531-1664532,1664588,1664593-1664594,1664596,1664653,1664664,1664672,1664674,1664684,1664927,1664938-1664940,1664978,1664984,1664997,1665164,1665195,1665213,1665259,1665318,1665437-1665438,1665609,1665611-1665612,1665845,1665850,1665852,1665873,1665886,1665894,1665896,1666096,1666258,1666270,1666272,1666379,1666449,1666690,1666832,1666851,1666965,1667101,1667106-1667107,1667120,1667228,1667233-1667235,1667249-1667250,1667258,1667290,1667301,1667471,1667691-1667693,1667699-1667700,1667715,1667738,1667941,1667976,1668320,1668598-1668600,1668602-1668603,1668607-1668608,1668618,1668625,1669743,1669746,1669749,166 9945,1670139,1670149,1670152,1670329,1670337,1670347,1670353,1671164,1671388,1672295,1672311,1672372,1672404,1672511-1672512,1672578,1672728,1673044,1673062-1673063,1673065,1673153,1673170,1673172,1673197,1673202,1673204,1673228,1673282,1673445,1673691-1673692,1673746,1673785,1673803,1674015,1674032,1674170,1674301,1674305,1674308,1674339-1674340,1674406,1674415,1674455-1674456,1674475,1674487,1674522,1674580,1674626-1674627,1674785,1674891,1675771,1675774,1676526,1676535,1676538,1676555,1676564,1676570,1676665,1676667,1676769,1677003,1677191,1677267,1677440,1678147,1678149,1678494,1678571,1678734,1678742,1678745-1678746,1678755,1678839,1678846,1678894,1678950,1678963,1679166,1679169,1679228,1679230,1679240,1679287,1679864,1679866,1679909,1680242,1680264,1680495,1680705,1680819,1681317,1682714,1682854,1683071,1683126,1683135,1683266-1683267,1683290,1683303,1683311,1683378,1683387,1684034,1684077,1684322,1684325,1684344,1684412,1684940,1685034,1685085,1686175,1686239,1686478,1686541, 1686543,1686554,1686557,1686802,1686888,1686984,1687029,1687304,1687389,1687769,1687776,1687812,1688258,1688273,1688395,1689214,1689216,1689721,1689729,1691712-1691713,1691924,1691928,1692091,1692093,1692098,1692448,1692469-1692470,1692798-1692799,1693135,1693138,1693159,1693886,1694023,1694194,1694481,1694929,1695022,1695600,1695606,1695681,1696222,1696225,1696387,1696695,1697381,1697384,1697387,1697664,1697824,1697835,1697845,1697914,1697967,1698106,1698312,1700130,1700215,1700219-1700220,1700740,1700951,1701064,1701206,1701270,1701298,1701598,1701603,1701611,1701633,1701638,1701646,1701736,1701792,1701797,1701838,1701997,1702198,1702200,1702203,1702218,1702231,1702237-1702239,1702247,1702288,1702299-1702300,1702310,1702397,1702407,1702467,1702472,1702474,1702478,1702533,1702549,1702553,1702565,1702891,1702974,1702991,1703470,1703475-1703477,1703544,1703581,1703675,1703688-1703689,1703740,1704292,1704573,1704821,1704847,1705060,1705062,1705064,1705088,1705328,1705843,1706241,17063 23-1706324,1706375,1706428,1706432,1706437,1706783,1706983,1706999,1708699,1709388-1709389,1709553,1709562,1710104,1710167,1710215,1710290,1710558,1711250,1711346,1711507,1711510,1714314,1714358,1714790,1715224,1715232,1715262,1715777,1715793,1716808,1717154,1717869,1717871,1717873-1717875,1717878,1718167,1718267,1718269,1718484,1720015,1720643,1721174-1721175,1721285,1721488,1721648,1722164,1722860-1722861,1722879,1722887,1724448,1725180,1728308,1728387,1729060,1729519,1730856,1734106,1734926,1735179,1735826,1736432,1737122,1738259,1738659,1738828,1739278,1739280,1740252,1740254,1740316,1741071-1741073,1741078,1741096,1741200,1741206,1741401,1745515,1746053,1746277,1746364,1748514,1754190,1756266,1757529,1757532,1757539,1758128-1758130,1758153,1758202,1758204,1758207,1758209,1758224,1758269,1758385,1758781,1759116-1759124,1759686,1760570,1761334,1761653,1761755,1762338-1762339,1763934,1764034,1764676,1764851,1766240,1766323,1766327,1766352,1766590,1766699,1766704,1766711,1767768,17 69152,1769456,1769973,1770677,1774109,1776742,1776783,1776788,1777103,1779948,1781507,1781655,1783214,1783704,1785053,1785734,1785737-1785738,1785754,1786445-1786447,1786515,1794611,1796158,1796420,1796720 +/subversion/trunk:1660545-1660547,1660549-1662901,1663003,1663183-1663184,1663253,1663286,1663338,1663347,1663355,1663374,1663450,1663500,1663530,1663671,1663697,1663706,1663738,1663749,1663791,1663991,1664035,1664078,1664080,1664084-1664085,1664187,1664191,1664193,1664200,1664344,1664476,1664480-1664481,1664483,1664489-1664490,1664507,1664520-1664521,1664523,1664526-1664527,1664531-1664532,1664588,1664593-1664594,1664596,1664653,1664664,1664672,1664674,1664684,1664927,1664938-1664940,1664978,1664984,1664997,1665164,1665195,1665213,1665259,1665318,1665437-1665438,1665609,1665611-1665612,1665845,1665850,1665852,1665873,1665886,1665894,1665896,1666096,1666258,1666270,1666272,1666379,1666449,1666690,1666832,1666851,1666965,1667101,1667106-1667107,1667120,1667228,1667233-1667235,1667249-1667250,1667258,1667290,1667301,1667471,1667691-1667693,1667699-1667700,1667715,1667738,1667941,1667976,1668320,1668598-1668600,1668602-1668603,1668607-1668608,1668618,1668625,1669743,1669746,1669749,166 9945,1670139,1670149,1670152,1670329,1670337,1670347,1670353,1671164,1671388,1672295,1672311,1672372,1672404,1672511-1672512,1672578,1672728,1673044,1673062-1673063,1673065,1673153,1673170,1673172,1673197,1673202,1673204,1673228,1673282,1673445,1673691-1673692,1673746,1673785,1673803,1674015,1674032,1674170,1674301,1674305,1674308,1674339-1674340,1674406,1674415,1674455-1674456,1674475,1674487,1674522,1674580,1674626-1674627,1674785,1674891,1675771,1675774,1676526,1676535,1676538,1676555,1676564,1676570,1676665,1676667,1676769,1677003,1677191,1677267,1677440,1678147,1678149,1678494,1678571,1678734,1678742,1678745-1678746,1678755,1678839,1678846,1678894,1678950,1678963,1679166,1679169,1679228,1679230,1679240,1679287,1679864,1679866,1679909,1680242,1680264,1680495,1680705,1680819,1681317,1682714,1682854,1683071,1683126,1683135,1683266-1683267,1683290,1683303,1683311,1683378,1683387,1684034,1684077,1684322,1684325,1684344,1684412,1684940,1685034,1685085,1686175,1686239,1686478,1686541, 1686543,1686554,1686557,1686802,1686888,1686984,1687029,1687304,1687389,1687769,1687776,1687812,1688258,1688273,1688395,1689214,1689216,1689721,1689729,1691712-1691713,1691924,1691928,1692091,1692093,1692098,1692448,1692469-1692470,1692798-1692799,1693135,1693138,1693159,1693886,1694023,1694194,1694481,1694929,1695022,1695600,1695606,1695681,1696222,1696225,1696387,1696695,1697381,1697384,1697387,1697664,1697824,1697835,1697845,1697914,1697967,1698106,1698312,1700130,1700215,1700219-1700220,1700740,1700951,1701064,1701206,1701270,1701298,1701598,1701603,1701611,1701633,1701638,1701646,1701736,1701792,1701797,1701838,1701997,1702198,1702200,1702203,1702218,1702231,1702237-1702239,1702247,1702288,1702299-1702300,1702310,1702397,1702407,1702467,1702472,1702474,1702478,1702533,1702549,1702553,1702565,1702891,1702974,1702991,1703470,1703475-1703477,1703544,1703581,1703675,1703688-1703689,1703740,1704292,1704573,1704821,1704847,1705060,1705062,1705064,1705088,1705328,1705843,1706241,17063 23-1706324,1706375,1706428,1706432,1706437,1706783,1706983,1706999,1708699,1709388-1709389,1709553,1709562,1710104,1710167,1710215,1710290,1710558,1711250,1711346,1711507,1711510,1714314,1714358,1714790,1715224,1715232,1715262,1715777,1715793,1716808,1717154,1717869,1717871,1717873-1717875,1717878,1718167,1718267,1718269,1718484,1720015,1720643,1721174-1721175,1721285,1721488,1721648,1722164,1722860-1722861,1722879,1722887,1724448,1725180,1728308,1728387,1729060,1729519,1730856,1734106,1734926,1735179,1735826,1736432,1737122,1738259,1738659,1738828,1739278,1739280,1740252,1740254,1740316,1741071-1741073,1741078,1741096,1741200,1741206,1741401,1745515,1746053,1746277,1746364,1748514,1754190,1756266,1757529,1757532,1757539,1758128-1758130,1758153,1758202,1758204,1758207,1758209,1758224,1758269,1758385,1758781,1759116-1759124,1759686,1760570,1761334,1761653,1761755,1762338-1762339,1763934,1764034,1764676,1764851,1766240,1766323,1766327,1766352,1766590,1766699,1766704,1766711,1767768,17 69152,1769456,1769973,1770677,1774109,1776742,1776783,1776788,1777103,1779948,1781507,1781655,1783214,1783704,1785053,1785734,1785737-1785738,1785754,1786445-1786447,1786515,1794611,1796158,1796420,1796720,1802080,1802316 Modified: subversion/branches/1.9.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/STATUS?rev=1803755&r1=1803754&r2=1803755&view=diff ============================================================================== --- subversion/branches/1.9.x/STATUS (original) +++ subversion/branches/1.9.x/STATUS Wed Aug 2 04:00:25 2017 @@ -81,12 +81,3 @@ Veto-blocked changes: Approved changes: ================= - - * r1802080, r1802316 - Fix SEGV for 'svn export -rN WC' with relative externals. - Justification: - Client SEGV. - Branch: - ^/subversion/branches/1.9.x-r1802316 - Votes: - +1: philip, danielsh, jamessan Modified: subversion/branches/1.9.x/subversion/include/svn_client.h URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/subversion/include/svn_client.h?rev=1803755&r1=1803754&r2=1803755&view=diff ============================================================================== --- subversion/branches/1.9.x/subversion/include/svn_client.h (original) +++ subversion/branches/1.9.x/subversion/include/svn_client.h Wed Aug 2 04:00:25 2017 @@ -5493,8 +5493,7 @@ svn_client_revprop_list(apr_hash_t **pro * #svn_opt_revision_unspecified, then it defaults to #svn_opt_revision_head * for URLs or #svn_opt_revision_working for WC targets. * - * @a revision is the revision that should be exported, which is only used - * when exporting from a repository. + * @a revision is the revision that should be exported. * * @a peg_revision and @a revision must not be @c NULL. * Modified: subversion/branches/1.9.x/subversion/libsvn_client/export.c URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/subversion/libsvn_client/export.c?rev=1803755&r1=1803754&r2=1803755&view=diff ============================================================================== --- subversion/branches/1.9.x/subversion/libsvn_client/export.c (original) +++ subversion/branches/1.9.x/subversion/libsvn_client/export.c Wed Aug 2 04:00:25 2017 @@ -1148,7 +1148,7 @@ get_editor_ev2(const svn_delta_editor_t } static svn_error_t * -export_file_ev2(const char *from_path_or_url, +export_file_ev2(const char *from_url, const char *to_path, struct edit_baton *eb, svn_client__pathrev_t *loc, @@ -1156,23 +1156,21 @@ export_file_ev2(const char *from_path_or svn_boolean_t overwrite, apr_pool_t *scratch_pool) { - svn_boolean_t from_is_url = svn_path_is_url(from_path_or_url); apr_hash_t *props; svn_stream_t *tmp_stream; svn_node_kind_t to_kind; + SVN_ERR_ASSERT(svn_path_is_url(from_url)); + if (svn_path_is_empty(to_path)) { - if (from_is_url) - to_path = svn_uri_basename(from_path_or_url, scratch_pool); - else - to_path = svn_dirent_basename(from_path_or_url, NULL); + to_path = svn_uri_basename(from_url, scratch_pool); eb->root_path = to_path; } else { - SVN_ERR(append_basename_if_dir(&to_path, from_path_or_url, - from_is_url, scratch_pool)); + SVN_ERR(append_basename_if_dir(&to_path, from_url, + TRUE, scratch_pool)); eb->root_path = to_path; } @@ -1204,7 +1202,7 @@ export_file_ev2(const char *from_path_or } static svn_error_t * -export_file(const char *from_path_or_url, +export_file(const char *from_url, const char *to_path, struct edit_baton *eb, svn_client__pathrev_t *loc, @@ -1216,20 +1214,18 @@ export_file(const char *from_path_or_url apr_hash_index_t *hi; struct file_baton *fb = apr_pcalloc(scratch_pool, sizeof(*fb)); svn_node_kind_t to_kind; - svn_boolean_t from_is_url = svn_path_is_url(from_path_or_url); + + SVN_ERR_ASSERT(svn_path_is_url(from_url)); if (svn_path_is_empty(to_path)) { - if (from_is_url) - to_path = svn_uri_basename(from_path_or_url, scratch_pool); - else - to_path = svn_dirent_basename(from_path_or_url, NULL); + to_path = svn_uri_basename(from_url, scratch_pool); eb->root_path = to_path; } else { - SVN_ERR(append_basename_if_dir(&to_path, from_path_or_url, - from_is_url, scratch_pool)); + SVN_ERR(append_basename_if_dir(&to_path, from_url, + TRUE, scratch_pool)); eb->root_path = to_path; } @@ -1288,7 +1284,7 @@ export_file(const char *from_path_or_url } static svn_error_t * -export_directory(const char *from_path_or_url, +export_directory(const char *from_url, const char *to_path, struct edit_baton *eb, svn_client__pathrev_t *loc, @@ -1307,6 +1303,8 @@ export_directory(const char *from_path_o void *report_baton; svn_node_kind_t kind; + SVN_ERR_ASSERT(svn_path_is_url(from_url)); + if (!ENABLE_EV2_IMPL) SVN_ERR(get_editor_ev1(&export_editor, &edit_baton, eb, ctx, scratch_pool, scratch_pool)); @@ -1355,7 +1353,7 @@ export_directory(const char *from_path_o SVN_ERR(svn_dirent_get_absolute(&to_abspath, to_path, scratch_pool)); SVN_ERR(svn_client__export_externals(eb->externals, - from_path_or_url, + from_url, to_abspath, eb->repos_root_url, depth, native_eol, ignore_keywords, @@ -1402,8 +1400,12 @@ svn_client_export5(svn_revnum_t *result_ svn_client__pathrev_t *loc; svn_ra_session_t *ra_session; svn_node_kind_t kind; + const char *from_url; struct edit_baton *eb = apr_pcalloc(pool, sizeof(*eb)); + SVN_ERR(svn_client_url_from_path2(&from_url, from_path_or_url, + ctx, pool, pool)); + /* Get the RA connection. */ SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &loc, from_path_or_url, NULL, @@ -1428,15 +1430,15 @@ svn_client_export5(svn_revnum_t *result_ if (kind == svn_node_file) { if (!ENABLE_EV2_IMPL) - SVN_ERR(export_file(from_path_or_url, to_path, eb, loc, ra_session, + SVN_ERR(export_file(from_url, to_path, eb, loc, ra_session, overwrite, pool)); else - SVN_ERR(export_file_ev2(from_path_or_url, to_path, eb, loc, + SVN_ERR(export_file_ev2(from_url, to_path, eb, loc, ra_session, overwrite, pool)); } else if (kind == svn_node_dir) { - SVN_ERR(export_directory(from_path_or_url, to_path, + SVN_ERR(export_directory(from_url, to_path, eb, loc, ra_session, overwrite, ignore_externals, ignore_keywords, depth, native_eol, ctx, pool)); Modified: subversion/branches/1.9.x/subversion/tests/cmdline/export_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/subversion/tests/cmdline/export_tests.py?rev=1803755&r1=1803754&r2=1803755&view=diff ============================================================================== --- subversion/branches/1.9.x/subversion/tests/cmdline/export_tests.py (original) +++ subversion/branches/1.9.x/subversion/tests/cmdline/export_tests.py Wed Aug 2 04:00:25 2017 @@ -1066,6 +1066,56 @@ def export_file_externals2(sbox): expected_output, expected_disk) +def export_revision_with_root_relative_external(sbox): + "export a revision with root-relative external" + sbox.build() + + wc_dir = sbox.wc_dir + + # Set 'svn:externals' property in 'A/C' to 'A/B/E/alpha'(file external), + C_path = os.path.join(wc_dir, 'A', 'C') + externals_prop = "^/A/B/E/alpha exfile_alpha" + + tmp_f = sbox.get_tempname('prop') + svntest.main.file_append(tmp_f, externals_prop) + svntest.main.run_svn(None, 'ps', '-F', tmp_f, 'svn:externals', C_path) + svntest.main.run_svn(None,'ci', '-m', 'log msg', '--quiet', C_path) + + # Update the working copy to receive file external + svntest.main.run_svn(None, 'up', wc_dir) + + # Update the expected disk tree to include the external. + expected_disk = svntest.main.greek_state.copy() + expected_disk.add({ + 'A/C/exfile_alpha' : Item("This is the file 'alpha'.\n"), + }) + + # Update the expected output to include the external. + expected_output = svntest.main.greek_state.copy() + expected_output.add({ + 'A/C/exfile_alpha' : Item("This is the file 'alpha'.\r"), + }) + expected_output.desc[''] = Item() + expected_output.tweak(contents=None, status='A ') + + # Export revision 2 from URL + export_target = sbox.add_wc_path('export_url') + expected_output.wc_dir = export_target + svntest.actions.run_and_verify_export(sbox.repo_url, + export_target, + expected_output, + expected_disk, + '-r', 2) + + # Export revision 2 from WC + export_target = sbox.add_wc_path('export_wc') + expected_output.wc_dir = export_target + svntest.actions.run_and_verify_export(sbox.wc_dir, + export_target, + expected_output, + expected_disk, + '-r', 2) + ######################################################################## # Run the tests @@ -1102,7 +1152,8 @@ test_list = [ None, export_file_overwrite_with_force, export_custom_keywords, export_file_external, - export_file_externals2 + export_file_externals2, + export_revision_with_root_relative_external, ] if __name__ == '__main__':