You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Ben Collins-Sussman <su...@collab.net> on 2002/05/14 19:56:36 UTC

Re: svn commit: rev 1953 - trunk/subversion/include trunk/subversion/libsvn_wc trunk/subversion/libsvn_client trunk/subversion/clients/cmdline

sussman@tigris.org writes:

> Author: sussman
> Date: 2002-05-14 19:36 GMT
> New Revision: 1953
> 
> Part I of issue #658: reinstate the 'deleted' flag on entries, so that
> updating clients can once again give accurate state-reports to the
> server.

Here's an explanation of what I'm doing, for people who weren't
around a year ago.  I figured it might be educational to make my
private notes into public ones:


* When does an entry get the 'deleted' flag attached?

    When we commit a deletion.  In other words, in the post-commit
    processing phase, we notice if the committed item was deleted in
    the commit.  If the item has a different 'new' revnum than
    parent's revnum, mark entry 'deleted'.

* Who uses the 'deleted' flag?

    The state-reporter.  When it crawls the working copy, it will
    report a deleted entry as 'missing' to the reporter vtable.

* When does the 'deleted' entry go away?

  1. In the post-update processor.  If the deleted entry hasn't been
     completely overwritten during the update by a new item of the
     same name, then the server obviously intended the item to stay
     deleted.  So the entire entry is removed.

  2. In the post-commit processor.  If the deleted entry has the -same-
     revnum as its parent, then the parent must have been committed as
     well, and thus it's safe to remove the child entry completely.

* How to implement this cleanly?

   Add a flag to svn_wc_entries_read and svn_wc_entry, indicating
   whether a deleted entries should be returned.

   Generally, anyone who gets a single entry or a list of entries will
   NOT want deleted entries returned. 

   Only the routines listed above will want to see them:

        - post-commit processor
        - post-update processor
        - state-reporter

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org