[Python-Dev] Subversion repository question - back up to older versions

Giovanni Bajo rasky at develer.com
Fri Jun 9 09:34:00 CEST 2006

skip at pobox.com wrote:

>     >> I have three Python branches, trunk, release23-maint and
>     >> release24-maint.  In the (for example) release24-maint, what
>     svn up >> command would I use to get to the 2.4.2 version?
>     Tim> First question:
>     Tim>    cd to the root of your release24-maint checkout, then
>     Tim>    svn switch
> svn+ssh://pythondev@svn.python.org/python/tags/r242
> How is that different than noting that r242 corresponds to revision
> 39619
> and executing:
>     svn up -r 39619

If you realize that each file/directory in Subversion is uniquely identified by
a 2-space coordinate system [url, revision] (given a checkout, you can use "svn
info" to get its coordinates), then we can say that "svn up -r 39619" keeps the
url changed and change the revision to whatever number you specified. In other
words, you get the state of the working copy at whatever state it was that URL
at that time. For instance, if you execute it within the trunk working copy,
you will get the trunk at the moment 2.4.2 was released.

On the other hand, "svn switch" moves the url: it basically "moves" your
checkout from [whatever_url, whatever_rev] to [url_specified, HEAD],
downloading the minimal set of diffs to do so. Given that /tags/r242 is a tag,
it means that any revision is good, since nobody is going to commit into that
directory (it will stay unchanged forever). So [/tags/r242, HEAD] is the same
of any other [/tags/r242, REVNUM]  (assuming of course that /tags/r242 was
already created at the time of REVNUM).

So basically you want svn switch to [/tags/r242, HEAD] if you don't plan on
doing modifications, while you want [/branches/release24-maint, HEAD] if you
want to work on the 2.4 branch. Going to [/branches/release24-maint, 39619]
does not really serve many purposes: you have to find out and write 39619
manually, you still can't do commits since of course you want to work on the
top of the branch, and you get less meaningful information if you later run
"svn info" on the working copy (as you're probably going to forget what
[/branches/release24-maint, 39619] means pretty soon, while [/tags/r242, NNN]
is more clear).

Giovanni Bajo

More information about the Python-Dev mailing list