Branko Čibej wrote: > On 16.08.2013 04:48, Blair Zajac wrote: >> On 08/15/2013 08:01 AM, Julian Foad wrote: >>> I propose the following logical semantics of the versioned move >>> operation that is the basis of move tracking, independent of any >>> implementation. >>> >>> A versioned move of the node with node id “N”, with respect to two >>> revisions rX and rY (X < Y), shall mean: >>> >>> * Same node id. A node with node id N exists in rX and in rY. It >>> is “the same node”. It therefore has the same node kind. It may have >>> content modifications. >> >> If the contents change then it should get a new node-id. [...] > > You apparently misunderstand what a node-id is. It is not the primary > key to a revision of the node. [...] the primary key is: > > (node-id, copy-id, txn-id)
To be fair, I was sloppy in my writing, and we have historically been sloppy with the term node-id. For example, the method root_vtable_t.node_id() returns a svn_fs_id_t which is a node-revision id (node-id, copy-id, txn-id), not a node-id. The key that I am referring to in the description of moves is (node-id, copy-id). Perhaps I will call it "node-copy-id" for short. I just checked and that term currently does not appear in the source tree. I'll update my docs. Thanks for pointing out the confusion. - Julian