From: Lars H. <Lar...@re...> - 2011-02-16 13:45:26
|
Will Duquette skrev 2011-02-15 01.32: > Lars, > > Provable immutability is one of Fossil's requirements; in the development > arena that Richard was (and might still be) targetting, it was required that > a file with a given revision UUID could simply not be changed. But that's true for git too! The rebase command *cannot* change the data in an existing commit. It creates a new commit, which frequently has the same contents (tree) as the original, but since it has a different history it will also have a different ID. > You can read > more about that at the fossil website. This is not a requirement for most > users. In short, I don't think Richard is saying that git is substandard in > this area, but rather that Fossil provides a stronger form of immutability if > you happen to need that. The point where I fear Richard is making an unfounded claim is rather the point before, where he says "Single file database (fossil): good, safe. Pile of files on disk like git: bad, unsafe." The thing he worries about seems to be corruption of data due to interrupted updates of it (and as a database expert, it is his job to be concerned about this). However, because of the immutability of objects (blobs, trees, and commits) in a git repository, the files which store these /aren't/ updated; "modified" contents will, by virtue of being different, receive a different ID and therefore end up in a different file. The whole thing is actually quite similar to the way Tcl handles values and variables. Commits, trees, and blobs are immutable like a value (indeed, this is very much because EIAS), while "branch heads" and tags are mutable like a variable. You can change what value is stored in a variable, but you cannot alter the value itself. Lars Hellström |