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

Re: svn commands fails on wc symlnk

From: Joshua Varner <jlvarner_at_gmail.com>
Date: 2005-11-23 22:02:35 CET

On 23 Nov 2005 09:13:30 -0600, kfogel@collab.net <kfogel@collab.net> wrote:
> Alex, you might want to mention that these are probably issue #2305,
> filed by you, and hinted at by the '/tmp/wc_2305_s' path in your
> example below :-).
>
> Does your patch in #2305 fix the symptoms in your mail below, as well
> as the symptoms listed in the issue?
>
> -Karl
>
> Alexander Thomas <alexander@collab.net> writes:
> > Hi all,
> >
> > I found that symbolic link handling for most of the svn commands are
> > buggy. Commands include blame, log, ls, cat, cleanup, revert, propget,
> > proplist, propset, All fails if invoked on a symbolic working copy root
> > directory. Here is the reproducing script
> >
> > svnadmin create repos
> > svn co file:///`pwd`/repos `pwd`/wc
> > ln -s `pwd`/wc `pwd`/wc_sym
> > svn blame `pwd`/wc_sym
> >
> >
> > Except for cleanup and revert commands every other commands fails with
> > error message
> > subversion/libsvn_wc/lock.c:377: (apr_err=155007)
> > svn: '/parent/path' is not a working copy
> >
> > for revert error message is
> > subversion/clients/cmdline/revert-cmd.c:60: (apr_err=155005)
> > svn: Try 'svn revert --recursive' instead?
> > subversion/libsvn_wc/lock.c:745: (apr_err=155005)
> > svn: Directory '/tmp/.svn' containing working copy admin area is missing
> >
> > for cleanup its
> > subversion/libsvn_wc/log.c:2254: (apr_err=155007)
> > svn: '/tmp/wc_2305_s' is not a working copy directory
> >
> > -Alexander Thomas (AT)
>
Do we need something like this:

svn_error_t *
svn_opt_parse_path_resolved (svn_opt_revision_t *rev,
                             const char **truepath,
                             const char *path /* UTF-8! */,
                             apr_pool_t *pool)
{
  svn_boolean_t is_special;
  svn_node_kind_t kind;

  SVN_ERR (svn_opt_parse_path (rev, truepath, path, pool));

  SVN_ERR (svn_io_check_special_path (*truepath, &kind, &is_special, pool));

  if ( is_special == TRUE )
    {
      svn_string_t *resolved_path;

      // resolve the symlink
      SVN_ERR (svn_io_read_link (&resolved_path, *truepath, pool));

      *truepath = svn_path_canonicalize (resolved_path->data, pool);
    }

  return SVN_NO_ERROR;
}

To use with the commands that can't operate on symlinks, give this is
a temporary workaround, but it can fix the problem at the client level,
until something more permanent is put together.

Josh

P.S. I would test, but I'm moving and my work machine is windows.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Nov 23 22:04:12 2005

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