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

Re: Is label support in future release?

From: John Rouillard <rouilj_at_renesys.com>
Date: 2006-11-21 02:28:17 CET

On Mon, Nov 20, 2006 at 03:18:43PM -0600, Les Mikesell wrote:
> On Mon, 2006-11-20 at 15:18 -0500, John Rouillard wrote:
> > >
> > > But I suspect there are things you just can't do with a tag - I just
> > > want to know what they are.
> >
> > How about cherry pick multiple files at different revisions without
> > going crazy? See any of my prior emails/use cases on the issue.
>
> If you create the tag from a workspace instead of a revision
> you can tag exactly what you want.
>
> > The problem with SVN's tags as I see it is that it defies common
> > understandings of space/time. Space is branches - different lines of
> > development, different files in a tree etc. It is the "name" or
> > location of the object you are working on. All can be handled by a
> > url.
> >
> > Versions/revisions always occur along the time axis not the space
> > axis. SVN even recognizes this by allowing date or revision numbers as
> > the parameter to the -r flag. SVN just doesn't follow through on it
> > preferring to use space (a tag) to define a point in time (release of
> > a portion of a tree) rather then supplying a true time only based
> > mechanism for identifying revisions of a given file or compatible
> > revisions of a set of files.
>
> But, there is no reason to think that the set of files you want
> to tag ever existed (without concurrent changes you don't want)
> at any repository revision.

Exactly. There is no repository revision that matches the files I need
to tag.

E.G. version 4 of file1 and version 6 of file2 and version 9 of file
a/b/file9 will all have the same label. Since a new version of file1
was checked in at version 7 and a new version of file2 was checked in
at version 8 I don't have a single revision that will match that
label.

So I can set labels to track exactly which files I need to have in a
checkout.

> That is, there will be a point where
> you commit your last change and have exactly the state you want
> to tag.

There will never be that point in a loosely coupled system. Each
element in the system will be independent and I need to find out what
set of independent files is put in place. I commit my files that have
to be released, but there are 3 other admins with their changes in
testing stages that should not yet be published. So I need a way to
label the verified production files and handle all of the files as a
single unit.

> Meanwhile other changes you don't want to include until
> the next tag may have been committed before yours. In CVS you
> expect this and you expect tags to identify the state of a workspace
> at the time the tag is created because there is not even a concept
> of repository revisions. Subversion seems to offer an appearance
> of time-sequence order in the repository but no way to really get
> what you want when concurrent changes are possible except in
> a workspace or by making a branch no one else will ever use. And
> creating a branch just to hold what you want in a tag seems like
> overkill when they are fully equivalent.

Yup. Also when you view the file history you are unable to see which
files were deployed as a set since there is nothing that links file1 at
version 4 to file2 at version 6.
 
> > That is IMHO the crux of the issue and will continue to be until some
> > more natural/orthogonal mechanism for identifying revisions of files
> > that should be treated as a single entity is devised.
>
> Copying a workspace to a tag is as natural as it gets if you are
> trying to identify exactly that set of files and particularly if
> you are making the last change and committing it because it may
> be impossible to identify that exact set any other way.

At a rate of 10+ tags a day that makes managing the filesystem name
space a bit nuts.

> Assuming
> that you don't forget to commit before the copy, what subsequent
> problems are likely?

It's really ugly and prone to error. I have to:

   find the prior tag that the new changes will be based on

   check out this tag

      svn co http://repo/config/production/release100

   switch the files to the trunk release (which I think is impossible,
        I would have to switch the ldap directory)

      svn switch http://repo/config/trunk/ldap/ldap.conf.solaris ldap.conf.solaris
      svn switch http://repo/config/trunk/ldap/ldap.conf.linux ldap.conf.linux
      svn switch http://repo/config/trunk/ldap/ldap.conf.aix ldap.conf.aix

   update the individual files to the code reviewed versions (and make
   sure I don't update other files in the directory by running say
   'svn up')

     svn up ldap.conf.solaris ldap.conf.linux ldap.conf.aix

   create a new tag from the working copy

      svn copy . http://repo/config/production/release101

   check out the new tag into the distribution system

      svn switch http://repo/config/production/release101

   and update

      svn up

With labels I:

   svn label -r 195 PRODUCTION http://repo/config/trunk/ldap/ldap.conf.solaris
   svn label -r 196 PRODUCTION http://repo/config/trunk/ldap/ldap.conf.linux
   svn label -r 199 PRODUCTION http://repo/config/trunk/ldap/ldap.conf.aix

(note no working copy needed). Or maybe:

   svn label PRODUCTION http://repo/config/trunk/ldap/ldap.conf.solaris@195 \
          http://repo/config/trunk/ldap/ldap.conf.linux@196 \
          http://repo/config/trunk/ldap/ldap.conf.aix@199

Now if I have the files in a working copy at the proper revisions I can:

  svn label ldap.conf.solaris ldap.conf.linux ldap.conf.aix

 and then

   svn up -r PRODUCTION http://repo/config/trunk

for the distribution system. Much easier with a lot fewer steps (2
versus 7) and no working copy to gobble disk space and take minutes to
check out.

-- 
				-- rouilj
John Rouillard
System Administrator
Renesys Corporation
603-643-9300 x 111
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Tue Nov 21 02:28:59 2006

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