Further info below.

On 03/02/2014 19:41, Bill Somerville wrote:
On 03/02/2014 19:32, Joe Taylor wrote:
Hi Bill,
Hi Joe,

If necessary, any bug fix or minor tweak to v1.3 should be done in the
newly created .../tags/wsjtx-1.3 branch. (But this should be resisted,
if possible.) New work should definitely go into .../branches/wsjtx.

Normally .../tags/... should not be committed to. Instead make a new
branch ../branches/... by copying the tag to something like
.../branches/wsjtx-1.3.1/... and then commit fixes to there with merges
into .../branches/wsjtx/... if appropriate.

I checked in the SVN "bible" before making the tag this morning and found this text:

"Both [tags and branches] are just ordinary directories that are created by copying. Just as with branches, the only reason a copied directory is a “tag” is because humans have decided to treat it that way: as long as nobody ever commits to the directory, it forever remains a snapshot. If people start committing to it, it becomes a branch."
Their intent, I believe, is that tags should not be branches (despite the fact that tags and branches in SVN are implemented the same way). They would become so if commits were allowed to tags. They do go on to say that some sites use commit hooks to physically ban commits to anything under tags, we don't need that but the concept is important because it allows a tag to be named the same as the branch it snapshots. That way you can create a branch called, say wsjtx-1.3.1, and commit away to it while developing; but the tag wsjtx-1.3.1 is a snapshot of what actually went out of the door after development was completed and should not change.

So summarising:

A branch represents a future release.
A tag represents what was actually released (other minor milestones can be tagged too like release candidates).
Further to this, normal practice is to do development on a "main line" under repo/trunk/... or repo/wsjtx/trunk/... and, when ready, to make a release a tag is made from a copy of trunk in repo/tags/wsjtx-ver/... or repo/wsjtx/tags/ver/... respectively (this needn't necessarily be one revision of trunk - a tag can be made from a mixed revision workspace for example when a late breaking development fails tests at the last minute).

Then fixes are released by copying the tag back to branches e.g. repo/tags/wsjtx-ver/... -> repo/branches/wsjtx-ver-minor/... or repo/wsjtx/tags/ver/... -> repo/wsjtx/branches/ver-minor/... before committing changes.

Then fix releases are merged back to the trunk (and possible newer fix release branches) then tagged and released from the branch.

A lot of this is moot in a "product" that doesn't offer support on anything but the latest release, but nevertheless using the method is good, particularly if you need to move to a different VCS as the migration tools usually expect this type of structure.

But of course: Yes, we can do it the way you suggest, if everyone prefers.

    -- Joe
73
Bill
G4WJS.

_______________________________________________
Wsjt-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/wsjt-devel

Reply via email to