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