[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Help with Revision Numbers

From: Daniel Patterson <danpat_at_danpat.net>
Date: 2005-03-30 22:28:41 CEST

Roberto Nucera wrote:
> Toby, Sean
>
> Thanks!!
>
> My final question...
> The document speaks of trees...? "Revision numbers apply to entire trees"
>
> What is a tree? For example is the entire repository the tree (repo =
> tree) or can there be somehow independent trees inside a repository.

   I sense you're still a little confused :-)

   Subversion does not assign version numbers to individual files.
   The repository as a whole has a "revision number" which represents
   the number of changes that have been made to that repository. Every
   time a commit is made, that number goes up by one. There cannot
   be independent trees that have different incrementing revision
   numbers within a single repository. It simply doesn't work that
   way.

   To determine things like "how many times has this file changed",
   you need to use "svn log" to view the history of that file,
   and count the changes yourself. Subversion doesn't give you
   a "version number" for any file or directory, it just reports the
   "revision number" for the repository.

   When you change any file, it causes a new revision of all its parents
   to be created. For example, if I change "/a/b/c.txt", a new
   revision of c.txt is created, along with a new revision of /a/b,
   a new revision of /a and a new revision of / (the latter three
   being directories).

   This has the effect of ensuring that every time a change is made,
   a new version of the "/" directory is updated. This is kind of
   what Toby and Sean meant by "versions entire trees".

   Because branches and tags are merely simulated within the repository
   using copies, they share all the semantics described above.

   For example, lets take a copy of the directory "/trunk" and
   put it in "/branches/release_1_prep" at repository revision 45.
   Now, we continue working on "/trunk", making another 15 changes,
   this puts the "repository version" at 60. Note that no changes
   have been made to "/branches/release_1_prep" yet.

   Now, if I do a:

     svn co url://repos/branches/release_1_prep

   Subversion will print out:

     U release_1_prep/a.txt
     ....
     At revision 60

   So, even though no changes were made to /branches/release_1_prep,
   the "repository version" has still changed.

   If you compare /branches/release_1_prep at revision 45 to
   /branches/release_1_prep at revision 60, there will be no differences.
   All the changes between repository version 45 and 60 were made
   to /trunk.

   Does that help?

daniel

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Wed Mar 30 22:32:53 2005

This is an archived mail posted to the Subversion Users mailing list.