[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[PATCH (almost)] issue 2429: "svn export" doesn't export svn:externals from local copies

From: Stefan Sperling <stsp_at_elego.de>
Date: 2007-07-07 17:57:25 CEST

Hi,

Quoting the PR:

   With the 1.2.x series, including 1.2.3, "svn export" does not
   export svn:externals if you are exporting from a locally checked
   out copy of the repository. Exporting from the remote, central
   repository (svn+ssh://foo...) does include the externals in the
   resulting exported copy. This worked fine in 1.1.4.

I have a recipe to reproduce this problem reliably, and
a prospective fix (both attached). It worked in 1.1.4 indeed.

This is the prospective log message for my prospective fix:

[[[
Fix issue #2429: "svn export" doesn't export svn:externals from local copies

* subversion/libsvn_client/export.c:
     (copy_versioned_files): Use svn_io_get_dirents() instead
     of svn_wc_entries_read() to get directory entries.

     The latter will not return unversioned entries, and hence
     directories that host externals are ignored, as external directories
     are not versioned. This caused externals to be ignored completely
     when exporting from a workspace.

     There seems to be no proper API provided by libsvn_wc for this purpose.

     Since we now read administrative directories again during export,
     we also tell svn_wc_adm_probe_open3() not to ignore hidden files
     anymore.

     Exporting externals from workspaces has been broken since rev 13151,
     which fixed issue #2226.

     Exporting from a workspace should now work as expected.
     The --ignore-externals switch is heeded.
]]]

Patch in current state is attached.
I still need to add a test for this issue to export_tests.py.

Now the catch:

For some reason my fix breaks a test for issue #2226, the fix for
which caused the issue I'm trying to fix... :-/

   =============================================================
   Expected 'E' and actual 'E' are different!
   =============================================================
   EXPECTED NODE TO BE:
   =============================================================
    * Node name: E
       Path: __SVN_ROOT_NODE/A/B/E
       Contents: N/A (node is a directory)
       Properties: {}
       Attributes: {}
       Children: 2
   =============================================================
   ACTUAL NODE FOUND:
   =============================================================
    * Node name: E
       Path: B/E
       Contents: None
       Properties: {}
       Attributes: {}
       Children: N/A (node is a file)
   Unequal Types: one Node is a file, the other is a directory
   Unequal at node B
   Unequal at node A
   EXCEPTION: SVNTreeUnequal
   FAIL: export_tests.py 11: export working copy at base revision

I don't know why this happens.

Using my recipe to test my patch the exported trees look OK
in all cases. As far as I can tell, svn export -rBASE still works and
is not broken as the failing test implies.

Can someone have a look at this and maybe even tell me what
part of my diff breaks test 11?

Thanks,

-- 
Stefan Sperling <stsp@elego.de>                 Software Developer
elego Software Solutions GmbH                            HRB 77719
Ohmstrasse 9                              Tel:  +49 30 40 04 19 29
10179 Berlin                              Fax:  +49 30 23 45 86 95
http://www.elego.de                 Geschaeftsfuehrer: Olaf Wagner


  • application/pgp-signature attachment: stored
Received on Sat Jul 7 17:57:35 2007

This is an archived mail posted to the Subversion Dev mailing list.