I maintain the build system at my company, which is currently using CVS. This build system is used across multiple projects and multiple CVS repositories.
Whenever we have a release milestone, we create a tag. In CVS, this is easy:
$ cvs tag TAG_NAME
That command works regardless of the CVS module or repository, as long as it is executed in a CVS working directory.
In order to do the same thing in subversion though, it looks like I will first have to parse the output of svn info
to get the repository root. Then I can create the tag with:
svn cp . $REPO_ROOT/tags/TAG_NAME -m"Created tag TAG_NAME"
This of course assumes that the svn repository has the recommended "trunk, tags, branches" directory structure. So to be safe I'll probably need to verify this first.
That seems like a lot of work just to map a revision number to a symbolic name. Is there a better way?
Best Answer
I use svn from the command line almost exclusively and0t I quickly tired of typing in monster URLs. I finally wrote a script
svnurl
, which I use from the shell. It operates on the assumption that an "project" hast the form:Let's assume you are somewhere in a working copy of PROJECTNAME/branches/foo:
Usage looks something like this:
The code isn't beautiful, but it has saved me many keystrokes and been useful in ways I hadn't expected. I'd be willing to share it if you are interested.