Client has a SVN repo with structure /trunk/branches/tags. Now we want to do a hotfix to a older version. But the state of the older version is only in tags/oldversion. Can i make a tag of tags/oldversion then do the fix and then commit the new tag? Or is there some other way to do this?
The tunk/branches/tags layout is just a convention and nothing will prevent you from working on tags. But the convention implies that tags are read-only and you aren't meant to commit changes into existing tags.
From your description, I understand that /tag/oldversion
points to either a fairly old revision of /trunk
or a subdirectory inside /branches
that no longer exists. I recommend you create a new branch to do regular work in the old version and, once you're done, create a new tag.
Launch Repo-browser, right click on /tag/oldversion
and select "Show log".
Click on the latest revision, hopefully the one where the tag was created. In the pane below, take note of "Copy from path" and "Revision". That's the source URL, where the tag is pointing to. For instance, /trunk
at r123
.
Back into Repo-browser, click the "HEAD" button beside "Revision" and use the dialogue to select the old revision.
Now that Repo-browser is displaying r123, right click on /trunk
, select "Copy to..." and edit the suggested path to create the new branch, e.g. /branches/legacy
or /branches/1.x
or whatever suits you. Don't worry, you can review the changes in the "Enter log message" dialogue before committing them.
Now you have a new fully functional branch that points to your old code. You can check out that branch and start coding. Create tags from it as you release.
(Yes, the overall procedure is probably faster with the command-line.)