On Thu, 2008-01-17 at 14:37 +0000, Ross Burton wrote: > Attached is a patch, adapted from the upstream bug fix, which should > work. Annoyingly it compiles but the swig generation later fails so it > is, at present, untested.
Damnit, wrong patch. :/ Attached is the real patch. Ross -- Ross Burton mail: [EMAIL PROTECTED] jabber: [EMAIL PROTECTED] www: http://www.burtonini.com./ PGP Fingerprint: 1A21 F5B0 D8D0 CFE3 81D4 E25A 2D09 E447 D0B4 33DF
diff -u subversion-1.4.4dfsg1/debian/control subversion-1.4.4dfsg1/debian/control --- subversion-1.4.4dfsg1/debian/control +++ subversion-1.4.4dfsg1/debian/control @@ -4,7 +4,7 @@ Maintainer: Peter Samuelson <[EMAIL PROTECTED]> Uploaders: Troy Heber <[EMAIL PROTECTED]>, Guilherme de S. Pastore <[EMAIL PROTECTED]> Build-Depends: debhelper (>= 5.0.37.1), libneon26-dev, zlib1g-dev, - libapr1-dev, libaprutil1-dev (>= 1.2.7+dfsg-2), libdb4.4-dev, + libapr1-dev, libaprutil1-dev (>= 1.2.7+dfsg-2), libdb4.6-dev, apache2-threaded-dev (>= 2.2), patch, dpatch, doxygen, autotools-dev, autoconf, libtool, swig, python, python-dev, python-support (>= 0.4), diff -u subversion-1.4.4dfsg1/debian/changelog subversion-1.4.4dfsg1/debian/changelog --- subversion-1.4.4dfsg1/debian/changelog +++ subversion-1.4.4dfsg1/debian/changelog @@ -1,3 +1,9 @@ +subversion (1.4.4dfsg1-1.1) unstable; urgency=low + + * Add patch to fix export with externals + + -- Ross Burton <[EMAIL PROTECTED]> Thu, 17 Jan 2008 11:54:00 +0000 + subversion (1.4.4dfsg1-1) unstable; urgency=low * New upstream version. only in patch2: unchanged: --- subversion-1.4.4dfsg1.orig/subversion/tests/cmdline/externals_tests.py +++ subversion-1.4.4dfsg1/subversion/tests/cmdline/externals_tests.py @@ -750,6 +749,49 @@ raise svntest.Failure("Unexpected contents for rev 1 of " + exdir_H_omega_path) +#---------------------------------------------------------------------- + +# Test for issue #2429 +def export_wc_with_externals(sbox): + "test exports from working copies with externals" + + externals_test_setup(sbox) + + wc_dir = sbox.wc_dir + repo_url = sbox.repo_url + export_target = sbox.add_wc_path('export') + + # Create a working copy. + svntest.actions.run_and_verify_svn(None, None, [], + 'checkout', + '--username', svntest.main.wc_author, + '--password', svntest.main.wc_passwd, + repo_url, wc_dir) + # Export the working copy. + svntest.actions.run_and_verify_svn(None, None, [], + 'export', wc_dir, export_target) + + paths = [ + os.path.join(export_target, "A", "C", "exdir_G"), + os.path.join(export_target, "A", "C", "exdir_G", "pi"), + os.path.join(export_target, "A", "C", "exdir_H"), + os.path.join(export_target, "A", "C", "exdir_H", "omega"), + os.path.join(export_target, "A", "D", "x"), + os.path.join(export_target, "A", "D", "x", "y"), + os.path.join(export_target, "A", "D", "x", "y", "z"), + os.path.join(export_target, "A", "D", "x", "y", "z", "blah"), + os.path.join(export_target, "A", "D", "x", "y", "z", "blah", "E", "alpha"), + os.path.join(export_target, "A", "D", "x", "y", "z", "blah", "E", "beta"), + ] + probe_paths_exist(paths) + + svntest.main.safe_rmtree(export_target) + + # Export it again, without externals. + svntest.actions.run_and_verify_svn(None, None, [], + 'export', '--ignore-externals', + wc_dir, export_target) + probe_paths_missing(paths) ######################################################################## @@ -767,6 +809,7 @@ modify_and_update_receive_new_external, disallow_dot_or_dotdot_directory_reference, export_with_externals, + export_wc_with_externals, ] if __name__ == '__main__': only in patch2: unchanged: --- subversion-1.4.4dfsg1.orig/subversion/libsvn_client/export.c +++ subversion-1.4.4dfsg1/subversion/libsvn_client/export.c @@ -213,6 +213,7 @@ const char *to, svn_opt_revision_t *revision, svn_boolean_t force, + svn_boolean_t ignore_externals, svn_boolean_t recurse, const char *native_eol, svn_client_ctx_t *ctx, @@ -312,7 +313,7 @@ const char *new_to = svn_path_join(to, item, iterpool); SVN_ERR(copy_versioned_files(new_from, new_to, - revision, force, recurse, + revision, force, ignore_externals, recurse, native_eol, ctx, iterpool)); } @@ -328,6 +329,52 @@ iterpool)); } } + + /* Handle externals. */ + if (! ignore_externals && recurse) + { + apr_array_header_t *ext_items; + const svn_string_t *prop_val; + + SVN_ERR(svn_wc_prop_get(&prop_val, SVN_PROP_EXTERNALS, + from, adm_access, pool)); + if (prop_val != NULL) + { + int i; + + SVN_ERR(svn_wc_parse_externals_description2(&ext_items, from, + prop_val->data, + pool)); + for (i = 0; i < ext_items->nelts; ++i) + { + svn_wc_external_item_t *ext_item; + const char *new_from, *new_to; + + svn_pool_clear(iterpool); + + ext_item = APR_ARRAY_IDX(ext_items, i, + svn_wc_external_item_t *); + new_from = svn_path_join(from, ext_item->target_dir, + iterpool); + new_to = svn_path_join(to, ext_item->target_dir, + iterpool); + + /* The target dir might have multiple components. Guarantee + the path leading down to the last component. */ + if (svn_path_component_count(ext_item->target_dir) > 1) + { + const char *parent = svn_path_dirname(new_to, iterpool); + SVN_ERR(svn_io_make_dir_recursively(parent, iterpool)); + } + + SVN_ERR(copy_versioned_files(new_from, new_to, + revision, force, FALSE, + TRUE, native_eol, + ctx, iterpool)); + } + } + } + svn_pool_destroy(iterpool); } else if (entry->kind == svn_node_file) @@ -909,7 +956,7 @@ /* just copy the contents of the working copy into the target path. */ SVN_ERR(copy_versioned_files(from, to, &working_revision, overwrite, - recurse, native_eol, ctx, pool)); + ignore_externals, recurse, native_eol, ctx, pool)); }
signature.asc
Description: This is a digitally signed message part