C. Michael Pilato <cmpil...@collab.net>: > > Does a file replace differ in any way from a delete plus add of the new > > text? > > In Subversion, yes. A replacement is, like an add or a delete, an operation > at the node level, not an operation on the contents of that node. A replace > is an addition of a new object[1] -- with its own new line of version > control history -- that is coincidental with the removal of some previously > existing object that occupied the same path.
I still don't understand how this differs from a delete followed by an add. Explain it to me like I'm reallllyyy stuuupid, please, so I can document it and you never have to explain it again. When I add a file at a given path, it creates new object with a history that is tracked. When I delete that path, I destroy the container as well as the content. If I subsequently create a new file at the same path, it's a new object with its own history. How is a replace different? > [1] Most of the time. A replacement can have a copyfrom source, in which > case its not strictly a new line of history for that object. I think I get this part. When you replace with a copy source, you're destroying the container that existed at this path, abd replacing it with a new container that has history extending back through the copy source. Is that correct? > > Can a replace include a property section? > > Yes. So, everything except a delete can include properties and they all work the same way. Correct? > > Does a replace always have text associated with it, or can it have a > > copyfrom source? > > You can have a replace with a copyfrom source (a "replace with history", as > we call it). You can even have a replace with a copyfrom source *and* text, > such as would result from this on the client side: > > $ svn rm dir/file.txt > $ svn cp otherdir/otherfile.txt dir/file.txt > $ echo "Replacement text" > dir/file.txt > $ svn ci -m "Replace dir/file.txt with a copy of otherdir/otherfile.txt\ > and replace its text, too." I'll include this in the document I'm working up. > > If a file replace can have a copyfrom source, how does replace with a > > copyfrom source differ from add with a copyfrom source? > > The differ only in the fact that a replace implies the simultaneous deletion > of some other object which previously lived at that path. Got it. That case I understand, it's how they differ in the non-copyfrom case that still confuses me. > > How does a "change" differ from a "replace"? My guess is that > > "change" is issued for nodes that are pure property changes with no > > file content changes; is this correct? > > You are correct. OK. I'm working up a second, more formal draft of the dumpfile description. I'll post it here for review. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a>