On Thu, Oct 20, 2011 at 05:17:36PM +0200, Stefan Sperling wrote:
> On Thu, Oct 20, 2011 at 04:45:26PM +0200, Stefan Sperling wrote:
> > On Thu, Oct 20, 2011 at 02:28:43PM +0200, Søren Thing Andersen wrote:
> > > # But updating breaks on the changed link:
> > > svn up wc3
> > >
> > > The last command dies:
> > > $ svn up wc3
> > > Updating 'wc3':
> > > A wc3/dir-v2
> > > svn: E235000: In file 'subversion/libsvn_wc/update_editor.c' line
> > > 1582: assertion failed (action == svn_wc_conflict_action_edit ||
> > > action == svn_wc_conflict_action_delete || action ==
> > > svn_wc_conflict_action_replace)
> > > Abort trap: 6 (core dumped)
> >
> > > If you need more information, I would be glad to provide it.
> >
> > Thanks, I can reproduce this. Taking a look.
>
> I think I found the problem.
> Can you apply this patch to the FreeBSD port, recompile and test?
> Thanks.
Ooops, sorry, that patch had a bug.
It fixed the assertion in your example but not in others.
This one should be better.
Index: subversion/libsvn_wc/update_editor.c
===================================================================
--- subversion/libsvn_wc/update_editor.c (revision 1186847)
+++ subversion/libsvn_wc/update_editor.c (working copy)
@@ -4268,20 +4268,27 @@ close_file(void *file_baton,
SVN_PROP_SPECIAL,
APR_HASH_KEY_STRING) != NULL;
- {
- int i;
+ if (regular_prop_changes->nelts == 0)
+ {
+ /* No prop-change, so no change in symlink status. */
+ incoming_is_link = local_is_link;
+ }
+ else
+ {
+ int i;
- for (i = 0; i < regular_prop_changes->nelts; ++i)
- {
- const svn_prop_t *prop = &APR_ARRAY_IDX(regular_prop_changes, i,
- svn_prop_t);
+ for (i = 0; i < regular_prop_changes->nelts; ++i)
+ {
+ const svn_prop_t *prop = &APR_ARRAY_IDX(regular_prop_changes, i,
+ svn_prop_t);
- if (strcmp(prop->name, SVN_PROP_SPECIAL) == 0)
- {
- incoming_is_link = TRUE;
- }
- }
- }
+ if (strcmp(prop->name, SVN_PROP_SPECIAL) == 0)
+ {
+ incoming_is_link = TRUE;
+ break;
+ }
+ }
+ }
if (local_is_link != incoming_is_link)
Received on 2011-10-20 17:24:14 CEST