RE: [superversion] Version number methodology in a server configuration
Adams Paul (TTE <paul.adams <at> thomson.net>
2005-09-06 06:56:18 GMT
Hi Stefan,
The problem with markers is that anyone can move them, so you can't
guarantee that the release is what it says it is.
In order to use markers as release labels safely, you would need a
prelabel (premarker) trigger that checks the marker name itself to see
if it is a release label, and then if yes, checks who is doing the
labelling (e.g. only the project leader or admin can move/assign a
release label).
Best regards,
Paul
-----Original Message-----
From: superversion-discussion-admin <at> lists.sourceforge.net
[mailto:superversion-discussion-admin <at> lists.sourceforge.net] On Behalf
Of Stefan Reich
Sent: Monday, 5. September 2005 7:04 PM
To: superversion-discussion <at> lists.sourceforge.net
Subject: Re: [superversion] Version number methodology in a server
configuration
Hi Darren!
The numbering scheme is actually quite simple.
It works like this. In the standard linear case, where every state has
at most one successor, only the minor number is incremented. As soon as
a second successor is added to a state, a new major number is chosen
(the smallest one available) and the minor number is reset to one. Same
with the third and all further successors.
As a result, the current major number of a project is more or less a
random value. It's somewhere between 1 and the total number of
branchings (that's the justifiable part) and simultaneous update
conflicts (that's the stupid part) within the project lifetime.
To give users a bit more choice over version numbers, one could invent a
different way of distinguishing branches, for example adding a letter
(1.1, 1.2, 1a.1, 1a.2, 1a.3, 1b.1, ...). Then only the letters would be
semi-random. Major numbers could be kept stable until they are
explicitly incremented by the user.
My reasoning has always been that system-generated version numbers don't
have to conform to any "real" version numbers. The marker system is
meant to handle those (For example, create a marker called "Release
1.2"). It's a bit unfortunate that "x.y" looks so much like version
numbers commonly used for software releases. If it's just looks, one
could easily change that to something like "v1_4" instead of "1.4".
I have to admit I didn't read through the details of all your
examples... If I missed a major point of yours in this answer, please
give me a good slap on the head, and I will take the time to study them
:)
Cheers,
-Stefan
Cook, Darren wrote:
> Hello,
>
> In trying to teach myself how to use Supeversion 2 in server mode (and
> version control methodology in general, which could be most of my
> problem
, and I'm having trouble understanding how the auto-created
> version numbers are supposed to make sense.
>
> Say I have 3 people start work on a new project (starting at state
> 1.1) in a server-based Superversion setup. Now, person 1 edits file
> A, person 2 edits file B, and person 3 edits file C. Whoever commits
> first, is going to get the next subversion, 1.2. Whoever commits next
> is going to create a branch, and get a new major version, 2.1. Whoever
> commits third will get another major version, 3.1.
>
> This seems counter-intuitive, no? I wouldn't expect one of the 3 to
> get a subversion, and the other 2 to get new major versions of the
> project. It seems to me if this development cycle continues for long
> enough I'll have a whole bunch of major version numbers, and we'll
> constantly have to be merging back into the "mainline" version 1.
>
> I could see how this methodology came about from a single-user
> perspective: a completely different change off of a previous version
> would indicate the potential start of a new major version number,
> otherwise each regular change results in a new sub-version. But in a
> multi-user environment where users are working on the same release but
> managing different files, saying that commit #2 by a different person
> means the start of a new major version is confusing to me.
>
> What if each commit made by a different person off of the 1.1 fileset
> always resulted in a new subversion (instead of new major versions),
> *unless* it was a change of a file already modified and committed by
> another user? e.g. start with all 3 users at 1.1 again, and all 3
> editing different files. When the first person commits they get 1.2,
> when the second user commits they get 1.3, and when the third user
> commits they get 1.4. But then say person A and person B both edit
> the same file off of version 1.4. When person B commits they get 1.5,
> but when person A commits changes to the same file, they get 2.1 and
> have to merge back. That would make a lot more sense to me, it seems.
> Perhaps that's too complicated in a multi-file edit and commit
> situation though.
>
> Perhaps someone can just explain to me how these version numbers in
> superversion are supposed to be thought of? They don't seem to follow
> the normal model of software versioning (ie: version 1.0 is the
> original, 1.1 is an update/patch fix, 1.2 is another update/patch fix,
> 2.0 is the next major feature release, etc). I suspect that perhaps I
> should be using markers to track software versions, and think about
> superversion "version numbers" as more of a primary key representing
> changes made to a project. In that case I need help understanding the
> concept of markers and how they should be used and when they should
> move vs. when they should not (I couldn't find enough documentation on
> markers either).
>
> Thanks! Appreciate any help or clarification anyone can provide.
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle
Practices Agile & Plan-Driven Development * Managing Projects & Teams *
Testing & QA Security * Process Improvement & Measurement *
http://www.sqe.com/bsce5sf
_______________________________________________
superversion-discussion mailing list
superversion-discussion <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/superversion-discussion
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf