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

RE: svn commit: r909093 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c workqueue.c workqueue.h

From: Bert Huijben <bert_at_qqmail.nl>
Date: Thu, 18 Feb 2010 14:01:31 +0100

> -----Original Message-----
> From: Philip Martin [mailto:philip.martin_at_wandisco.com]
> Sent: donderdag 18 februari 2010 13:54
> To: Bert Huijben
> Cc: dev_at_subversion.apache.org
> Subject: Re: svn commit: r909093 - in
> /subversion/trunk/subversion/libsvn_wc: adm_ops.c workqueue.c
> workqueue.h
>
> "Bert Huijben" <bert_at_qqmail.nl> writes:
>
> > My current code is just a copy of the old code, moved to a new location.
No
> > fixes there. (It still uses svn_wc__entry_modify2).
> >
> > In the rest of libsvn_wc we still rewrite BASE_NODE and WORKING_NODE
> records
> > from just the limited state in svn_wc_entry_t... and that would
reintroduce
> > the issue anyway.
> >
> > If we can fix this for the case where we write from the entries that
would
> > be nice.
> >
> > The real solution is stopping to write from entries, which takes much
more
> > effort.
> > (I counted at least a dozen cases where we still change the scheduling
via
> > entries yesterday... And then there are all those other calls for other
> > changes).
> >
> > I would suggest focusing on removing those entry write operations before
> we
> > can focus on the nicest format in the database.
>
> My plan was to write a svn_wc__db_temp_op_delete that modified the
> WORKING_NODE table directly, without calling entry_modify2. I have
> such a patch but it doesn't handle all the cases where delete can be
> called. It was the complexity of this that lead me to create the file
> notes/wc-ng/transitions--that's my attempt at describing what
> svn_wc__db_temp_op_delete should do.

I made the entry based intermediate function as a first step. To find out
what that operation should do to handle the strange cases and to allow
implementing the wc-db version in incremental steps.

This allows handling the easy cases the new way before switching the hard
cases. (Small steps towards the final solution)

> One other thing that worries me is that mark_tree_deleted seems to
> doing deletes without doing the loggy/workqueue stuff. If I delete a
> replaced file svn_wc_delete4 sets up a workqueue item to handle the
> text-bases. However if I delete a directory containing a replaced
> file it handles the file with a simple call to entry_modify2--that
> can't be right. It's not a new bug, it pre-dates wc-ng, but it means
> that the entry_modify2 calls in mark_tree_deleted cannot simply be
> replaced by svn_wc__db_temp_op_delete, we need to setup wq items in
> some cases.

In WC-1.0 we left old administrative data in a lot of code paths... (not
just a few :( ) and in most cases we fix this on adding.
(Talk about broken behavior...)

In the final version of WC-NG we don't need most of these operations any
more.
* Properties: In DB only. Handled directly. No loggy operation necessary
* Pristines: Not associated with a single file. No need to remove it in the
general case. (Maybe schedule a cleanup check as wq item?)

Where the old code 'happens to work' in the intermediate state I wouldn't
try to solve it cleanly for the period until we have the pristines working.
(All that work will have to go to /dev/null before 1.7)

        Bert
Received on 2010-02-18 14:02:11 CET

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