Philip Martin <[email protected]> writes:
> svnadmin create repo
> svn import -mm repo/format file://$PWD/repo/A/f
> svn co -r0 file://$PWD/repo wc
> svn mkdir wc/A
> svn st -u wc
>
> That's obviously a bug. It's crashing in make_file_baton:
>
> f->repos_relpath = svn_relpath_join(find_dir_repos_relpath(pb, pool),
> f->name, pool);
>
> when find_dir_repos_relpath returns NULL. We could set f->repos_relpath
> to NULL, which matched what happens for the directory baton for A, but
> is that correct? find_dir_repos_relpath is returning NULL because the
> "obstructing" A is not versioned, although there is an A in the
> repository. I'm not sure what repos_relpath is supposed to represent
> here. Is it the repository path associated with the name in the
> repository, or the repository path associated with the node in wc.db?
There is a commment in find_dir_repos_relpath:
/* Note that status->repos_relpath could be NULL in the case of a missing
* directory, which means we need to recurse up another level to get
* a useful relpath. */
if (status)
return status->repos_relpath;
but the code doesn't recurse. Should that if be changed to
if (status && status->repos_relpath)
return status->repos_relpath;
If we do that does that mean that find_dir_repos_relpath can never
return NULL as it always recurses up to some non-NULL path? Should we
remove the "return NULL?
--
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com