[Prophesy] Re: Improved string transformation

Rasmus Andersen rasmus at jaquet.dk
Mon Jun 3 18:06:38 EST 2002


On Mon, Jun 03, 2002 at 09:44:01AM +0200, Daniel Phillips wrote:
> > On the other hand, if the SCM merely uses the FS operations to gather
> > knowledge about changed objects[1], then the user would still have to
> > do a explicit 'commit' to make a delta(?) and attach comments. Which
> > isn't that far from what you would do anyway without the magic FS.
> > 
> > Or am I missing something?
> 
> No, good point, and it's one I've thought about, I just neglected to say 
> anything about it.  My thinking is that the scm will normally save a 
> transform against a file every time the file is written to for whatever 
> reason, but when you commit, those transforms are collapsed into a single 
> transform.  So until you do the commit, you have file-level undo, if you want 
> it.  It's just easy to provide this, so why not?  We can also provide an 
> option to leave those transformed un-composed in the database, which will eat 
> a lot of space a probably be useless, but it might be interesting to 
> somebody, and it's easy to do, so again, why not?

OK then. This would seem to be a reasonable middle ground. If it wasn't
for you having some FS experience already, I would probably think the
magic FS way too complex for what it is buying us/the user.

Can we do this without a kernel patch? A kernel patch may be a bit
too much for many that just wants to dip their toes.

> > I could see some nice things coming
> > from having smaller granularity than the file one, but since we
> > are aiming at having 'loose' dependencies in the SCM I think we
> > will get those anyway.
> 
[snip things about having files as basic versioning object]
> 
> A practical question is whether we're going to version directories.  I 
> mentioned the idea that each file object would have an id (which is 
> universally unique) and the name of the file would be metadata associated 
> with the object (i.e., an attribute of the object).  However, we will need to 
> look up files rapidly by name, for example, when a file is changed and a 
> transform needs to be recorded against it in the database.  This can of 
> course be handled efficiently by appropriate use of database indexing.
> 
> We may sometimes want to traverse the database in directory order, perhaps 
> when producing a diff between two tree versions.  Does this mean we want to 
> record directories as objects?  I don't know yet.  It may be enough just to 
> compute the directories on the fly.

Another related thing is, how do we group changes to achieve logically
connected changes, aka changesets in BK terminology? I guess that would
be by explicit operations in the GUI/command line thingie operating on
deltas?

> 
> Drifting further in that direction, the question arises of how much 
> filesystem structure we want to support in the scm.  Do we want to support 
> symlinks?  I think we do.  Hard links?  Good question.  Device nodes?  Hmm.
> If we support all of the above, then what we have is more general than a 
> source code versioning system, it's actually a versioning filesystem.  That's 
> something to think about.  However, right now I'll be satisfied aiming at 
> something with more modest goals.

Rik van Riel and Larry had some thought about using magic FS's to the
job a while back... <googling> Here we go. Its kinda sketchy but some
stuff can be had:

http://search.luky.org/linux-kernel.2001/msg25061.html

Rasmus



More information about the Prophesy mailing list