On Tue, Sep 29, 2009 at 03:17:23PM +0100, Stefan Sperling wrote:
> On Tue, Sep 29, 2009 at 03:51:38PM +0200, Alexander Kitaev wrote:
> > Hello,
> >
> > Attached script fails with Subversion 1.6.5. It performs update that
> > adds new file in place of a directory that is scheduled for addition and
> > missing.
>
> Thanks, I can reproduce with 1.6.x and will try to fix this.
You have found 2 bugs.
1) One is that we dereferenced fields which may legally be NULL
without checking for NULL...
2) The other is that we do not check WC meta data for existing directories
when adding files. We only check the disk.
With the patch below which fixes 1) (already committed to trunk in r39673)
I can get 1.6.x to exhibit the following behaviour after running your script.
svn: Failed to load properties from disk
svn: Directory 'wc/dir/file.txt' is missing
svn: Directory 'wc/dir/file.txt' is missing
$ svn st wc
! wc
! wc/dir
A wc/dir/file.txt
$ svn revert -R wc
Reverted 'wc/dir/file.txt'
$ svn st wc
! wc
! wc/dir
? wc/dir/file.txt
$ svn up wc
svn: Failed to add file 'wc/dir/file.txt': an unversioned file of the same name
already exists
$ svn st wc
! wc
! wc/dir
? wc/dir/file.txt
$ rm wc/dir/file.txt
$ svn up wc
A wc/dir/file.txt
Updated to revision 2.
$ svn st wc
$
We may want to tweak this further. Trunk has similar behaviour.
Stefan
Index: subversion/libsvn_wc/update_editor.c
===================================================================
--- subversion/libsvn_wc/update_editor.c (revision 39674)
+++ subversion/libsvn_wc/update_editor.c (working copy)
@@ -3518,7 +3518,7 @@
"from a different repository"),
svn_path_local_style(full_path, pool));
- if (!eb->switch_url
+ if (!eb->switch_url && fb->new_URL && entry->url
&& strcmp(fb->new_URL, entry->url) != 0)
return svn_error_createf(
SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2401684
Received on 2009-09-29 17:47:13 CEST