In CVS, revision numbers are per file. This is because CVS uses RCS as a backend; each file has a corresponding RCS file in the repository, and the repository is roughly laid out according to the structure of your project tree. In Subversion, the repository looks like a single filesystem. Each commit results in an entirely new filesystem tree; in essence, the repository is an array of trees. Each of these trees is labeled with a single revision number. When someone talks about revision 54, they're talking about a particular tree (and, indirectly, the way the filesystem looked after the 54th commit). Technically, it's not valid to talk about revision 5 of foo.c. Instead, one would say foo.c as it appears in revision 5. Also, be careful when making assumptions about the evolution of a file. In CVS, revisions 5 and 6 of foo.c are always different. In Subversion, it's most likely that foo.c did not change between revisions 5 and 6. For more details on this topic, see Section 2.3.2. |