[chora] luxor / chora

Cynic cynic@mail.cz
Sat, 11 Aug 2001 04:51:19 +0200


(cc to luxor@lists.horde.org)

At 02:21 8/11/2001, Anil Madhavapeddy wrote the following:
-------------------------------------------------------------- 
>On Sat, Aug 11, 2001 at 02:11:18AM +0200, Cynic wrote:
>> 
>> Yeah, I was just checking the Subversion web, and while skimming the
>> design docs I realized that commits/tags/branches aren't atomic in CVS.
>> Ouch. :(
>
>They're atomic-ish, since the repo is locked - it can be
>interrupted and things wont revert, and other nasty stuff like
>that (and of course can take more than 1 second, so depending
>on timestamps is bad)

Ok, so how do you think we should make sure that the user gets
proper versions of other files for the file he requests? Let me
illustrate this.

baz.inc +-------+----------|------------+--------
        |\      |\         |             \
        | 1.0   | 1.1      |              1.2
        |       |          |
foo.php +-------|----------+---------------------
        |\      |          |\
        | 1.0   |          | 1.1
        |       |          |
bar.php +-------|---+------|----+----------------
        |\      |    \     |     \
        | 1.0   |      1.1 |      1.2
        |       |          |
time    |=======|==========|====================>
        |       |          |
        +-T0    +T1        +-T2

T0: blah() is defined in baz.inc, and used in foo.php.
T2: blah() is also used in bar.php (added in bar.php 1.1)

Now, if you reqest identifier info for blah() from foo.php 1.1,it'll 
tell blah() is defined in baz.inc, and used in foo.php and bar.php. 
If you follow the link to the definition in baz.inc (1.1), and 
request identinfo for blah() again, it must give you the same 
results! And that won't be the case if you get the identinfo for 
blah() based on "last revision of all other files at the moment of 
this revision of _this_ file" where _this_ is the file you're 
requesting the info from. 

So, we must know revision number of all files at the moment foo.php 
1.1 was checked in. Otherwise you'll be sliding along the revisions, 
and won't be able to browse a "snapshot" of the repository.

AFAIK this will be a nonissue with Subversion which has different
concept of revision numbers, and atomic commits.

I hope you'll be able to parse this. :)




cynic@mail.cz
-------------
And the eyes of them both were opened and they saw that their files
were world readable and writable, so they chmoded 600 their files.
    - Book of Installation chapt 3 sec 7