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

Re: Using Tag methodology

From: Ryan Schmidt <subversion-2008c_at_ryandesign.com>
Date: Mon, 17 Nov 2008 04:40:31 -0600

On Nov 17, 2008, at 04:02, Ilan Yaniv wrote:

> We have one SVN server with 2 repositories.
>
> Our Production environment looks like hell for CM.
> 1) There is one version for the Server.
> 2) There are hundreds versions of clients.
> 3) There is even more versions of XML to be loaded on clients
> and many binaries – including flesh, PDF, SWF files.
>
> 1) In order to manage a version in production, I need one label \
> tag that contains all data in both repositories.

Subversion doesn't have labels, and what it calls tags and branches
are just copies (though they are cheap copies, so they don't take up
lots of space). So to be able to tag something, you need to be able
to copy it. And Subversion can only copy within a repository, not
across repositories.

At least, that used to be true, but I seem to remember some changes
being made to allow cross-repository copying, either in Subversion
1.5.x or in what will be Subversion 1.6. However, it probably won't
be space-efficient.

> 2) I also need a label which is moveable, like “ready for QA” etc.

Since tags are just copies, to recreate a tag, you would first delete
the old tag, then create the new tag. You can do this with a normal
Subversion client, and it will result in two revisions (one to delete
and one to create); if it's important that there is no revision in
which the tag does not exist, use svnmucc to do both operations in a
single revision.

> 3) I want to create a branch which is based on a label that I create.

You would simply copy the existing tag URL to the desired new branch
URL.

> 4) I want to be able to move a label on one revision of a file,
> without changing the label on other files.

In Subversion there is no such thing as a label on a revision of a
file. In fact there is no such thing as a revision of a file.
Instead, there is such a thing as a file as it exists in a certain
revision of the repository. (Revisions are repository-global, not per-
file.) So in Subversion terms, you're asking to remove a file from a
tag and replace it with a newer version of that file. You could do
this as under (2) above, removing the old file and copying the new
one (either as separate revisions using svn or as one using svnmucc).
By convention, tags are generally supposed to be write-once entities;
you create them and then never modify them. But don't let that stop
you if you want to treat them as labels. You may however want to
merge instead of re-copying. And then what you're really talking
about is a branch, not a label or a tag.

> I know that all could be easily done using Star Team as CM tool.
> Could it be done by SVN?

I think the same end result can be achieved, though the concepts are
different. Reading the Subversion Book should help you understand how
it's all meant to work.

http://svnbook.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-11-17 11:41:02 CET

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