Bill de hSra has a good post on Subversion branching practices.
So here's a Python-specific quandary: how should tagging happen
exactly?
Into the buildutils svtag command I've built this process:
- Copy from Project/trunk (current directory) to Project/tags/version
- Check out the new version into ../Project-version
- Edit setup.py to change the version (if necessary), and
setup.cfg to remove tag_svn_repository and tag_build =
dev
- Edit setup.py in the trunk to have the next version
- Commit all changes
It ends up being three commits, which is a little annoying. And,
technically, I'm editing a tag, even if it is a very minor edit.
Another issue -- do people have any particular tricks for keeping
their checkouts up to date? I just have a shell script that does an
svn up for each directory, and another for doing svn stat -u
on all my "active" projects. But I don't use the scripts as regularly
as I should, nor do I keep the list of active projects up to date.
And it's all kind of vague anyway -- I run lots of things from svn
checkouts even if I am not necessarily tracking every development on
the project.
I'm also curious about tools built on Subversion for handling branches
better. One of the commenters points to Subclipse, which uses a property
to track tags. But it doesn't seem to describe what exactly it is
doing and what that tag means. svk also
uses a special property for tracking merges, which is probably better
documented. I'm curious how half-heartedly I can use svk (this page
isn't actually that helpful) -- can I just use it as a
better frontend to Subversion? Will it work okay if other developers
aren't using svk?
Indexing of repositories and general tracking also remains relevent,
both locally (what do I track?) and globally (what versions of things
exist out there?)
Incidentally, I would be very interested to hear how exactly people
are using svn (or svk) on their machines. Like, the play-by-play of
every non-obvious command they use, script they have, or whatever.