the GHP
From: Ben Collins-Sussman <sussman_at_collab.net>
Date: 2001-07-11 21:34:28 CEST
The "Greg Hudson" Problems
(Greg, please pardon the name. You were the first to point out these
PROBLEM 1 : the lagging parent directory
Assume my working copy has two directories both at revision 3:
A/D : 3
Now I `svn rm A/D/H` and commit, which produces revision 6 in the
A/D : 3
A/D/H is gone, because the RA layer told us it was a target that was
Now, when I `svn up` to revision 6, the client sends an incomplete
A/D : 3
It's incomplete, because there's no mention of A/D/H anywhere. As a
(Incidentally, this bug would still be the same if H were a file,
PROBLEM 2 : the incomplete directory
Assume my working copy has a directory, everything at revision 3:
A/D : 3
Now, unbeknownst to me, somebody else adds a new file `bar.c' to this
Then I add a property to A/D and commit. The RA layer replies that
Of course, this is completely bogus. My working copy does *not* have
SOLUTION to Problem 1 (in progress)
A subversion entry has more than just a "schedule" flag. It now has
>> Adding a "deleted" flag
Thus, when log_do_committed() is told that A/D/H was committed, and
>> Make state-reports smarter
svn_wc_crawl_revisions now notices the "deleted" flag and gives an
A/D : 3
And now the repository will *not* tell the client to remove A/D/H.
>> Removing the "deleted" flag
There are three scenarios whereby the "deleted" flag goes away:
* updating parent to a revision where the entry exists
Assume that A/D/H is re-added in revision 10, and we're updating
The repository will tell the update-editor to re-add H. The
* updating parent to a revision where the entry has been deleted
After an update finishes, ensure_uniform_revision() sets all
* committing parent
If the parent is committed, log_do_committed() will be informed
So log_do_committed() will notice the parent's "deleted" child at
SOLUTION to Problem 2
Still thinking on this one. Yikes.
---------------------------------------------------------------------
|
This is an archived mail posted to the Subversion Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.