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

Re: Issue 3727 - svn export into the current directory

From: Noorul Islam K M <noorul_at_collab.net>
Date: Sat, 30 Oct 2010 18:09:30 +0530

Philip Martin <philip.martin_at_wandisco.com> writes:

> Noorul Islam K M <noorul_at_collab.net> writes:
>
>> It looks like the issue
>> http://subversion.tigris.org/issues/show_bug.cgi?id=3727 is because of
>> the commit done in r880559.
>>
>> Since this is a conscious change, should this issue be ignored?
>
> From the log message:
>
> r880559 | hwright | 2009-11-12 18:21:32 +0000 (Thu, 12 Nov 2009) | 11 lines
>
> Make "svn export $repos/blah '.'" do what you think it would, namely, put a
> file named "blah" into the cwd.
>
> and the regression test it appears this was intended to apply to
> files. I don't think it was intended to apply to directories.

Attached is a patch that I think solves this problem.

[[[
Fix issue 3727: Fix regression caused by r880559

* subversion/tests/cmdline/export_tests.py
  (export_to_explicit_cwd): Remove XFail.

* subversion/svn/export-cmd.c
  (svn_cl__export): If the explicit TO path is '.', treat it as if it weren't
    given only if the source is a file.
]]]

Thanks and Regards
Noorul

Index: subversion/tests/cmdline/export_tests.py
===================================================================
--- subversion/tests/cmdline/export_tests.py (revision 1028789)
+++ subversion/tests/cmdline/export_tests.py (working copy)
@@ -680,7 +680,7 @@
               export_with_url_unsafe_characters,
               XFail(export_working_copy_with_depths),
               export_externals_with_native_eol,
- XFail(export_to_current_dir),
+ export_to_current_dir,
              ]
 
 if __name__ == '__main__':
Index: subversion/svn/export-cmd.c
===================================================================
--- subversion/svn/export-cmd.c (revision 1028789)
+++ subversion/svn/export-cmd.c (working copy)
@@ -32,6 +32,7 @@
 #include "svn_dirent_uri.h"
 #include "svn_path.h"
 #include "cl.h"
+#include "../libsvn_client/client.h"
 
 #include "svn_private_config.h"
 #include "private/svn_opt_private.h"
@@ -52,7 +53,11 @@
   svn_error_t *err;
   svn_opt_revision_t peg_revision;
   const char *truefrom;
-
+ svn_revnum_t revnum;
+ svn_ra_session_t *ra_session;
+ svn_node_kind_t kind;
+ const char *url;
+
   SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
                                                       opt_state->targets,
                                                       ctx, pool));
@@ -79,8 +84,17 @@
     {
       to = APR_ARRAY_IDX(targets, 1, const char *);
 
+ /* Get the RA connection. */
+ SVN_ERR(svn_client__ra_session_from_path(&ra_session, &revnum,
+ &url, truefrom, NULL,
+ &peg_revision,
+ &(opt_state->start_revision),
+ ctx, pool));
+
+ SVN_ERR(svn_ra_check_path(ra_session, "", revnum, &kind, pool));
+
       /* If given the cwd, pretend we weren't given anything. */
- if (strcmp("", to) == 0)
+ if ((strcmp("", to) == 0) && (kind == svn_node_file))
         to = svn_path_uri_decode(svn_uri_basename(truefrom, pool), pool);
       else
         /* svn_cl__eat_peg_revisions() but only on one target */
Received on 2010-10-30 14:40:33 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.