Bug 36355

Summary: Multiple branches cannot be made from a single version.
Product: Slide Reporter: Anthony Marendy <Anthony.Marendy>
Component: VersioningAssignee: Slide Developer List <slide-dev>
Status: NEW ---    
Severity: normal Keywords: RFC
Priority: P2    
Version: 2.1   
Target Milestone: ---   
Hardware: PC   
OS: Windows 2000   
Attachments: Two line change to pass through successors when creating a branch.
Adds functionality for multiple branch points from a single revision.

Description Anthony Marendy 2005-08-25 12:42:26 UTC
SLIDE doesn't seem to support creating more than one branch for a particular 
version of a resource.

In the following example, I set the version back to 1.1, and do a check-out and 
a check-in to create a 1.1.1.
I then set the version back to 1.1 again, and retry a check-out and a check-
in.  This time it fails.


Create the file and some version history (auto-version-control is set to true 
for me)
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ put boot.ini
Uploading  'C:\boot.ini' to '/slide-tm/files/EasyDoc/GI/boot.ini' succeeded.
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ checkout boot.ini
checking out '/slide-tm/files/EasyDoc/GI/boot.ini': succeeded.
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ checkin boot.ini
checking in '/slide-tm/files/EasyDoc/GI/boot.ini': succeeded.
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ checkout boot.ini
checking out '/slide-tm/files/EasyDoc/GI/boot.ini': succeeded.
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ checkin boot.ini
checking in '/slide-tm/files/EasyDoc/GI/boot.ini': succeeded.


Have a look at the version tree
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ report boot.ini
Getting version-tree Report of '/slide-tm/files/EasyDoc/GI/boot.ini':
/slide-tm/history/30/1.2
/slide-tm/history/30/1.1
/slide-tm/history/30/1.0

Set the version back to 1.1
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ update boot.ini /slide-
tm/history/30/1.1
Updateing resource /slide-tm/files/EasyDoc/GI/boot.ini: succeeded.

Do a check-out and a check-in.
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ checkout boot.ini
checking out '/slide-tm/files/EasyDoc/GI/boot.ini': succeeded.
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ checkin boot.ini
checking in '/slide-tm/files/EasyDoc/GI/boot.ini': succeeded.

Have a look at the version tree.  This time, have a version 1.1.1 as expected.
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ report boot.ini
Getting version-tree Report of '/slide-tm/files/EasyDoc/GI/boot.ini':
/slide-tm/history/30/1.1.1
/slide-tm/history/30/1.2
/slide-tm/history/30/1.1
/slide-tm/history/30/1.0

Set the version back to 1.1
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ update boot.ini /slide-
tm/history/30/1.1
Updateing resource /slide-tm/files/EasyDoc/GI/boot.ini: succeeded.

Do a check-out and a check-in.
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ checkout boot.ini
checking out '/slide-tm/files/EasyDoc/GI/boot.ini': succeeded.
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $ checkin boot.ini
checking in '/slide-tm/files/EasyDoc/GI/boot.ini': failed.
Internal Server Error (500)
[MILK:/slide-tm/files/EasyDoc/GI/] C:\ $
Comment 1 Anthony Marendy 2005-09-08 05:43:12 UTC
Created attachment 16335 [details]
Two line change to pass through successors when creating a branch.

In order to work out the correct branch number (e.g. 1.1.<BRANCH_NUMBER>.1),
need to pass in the list of successors for the branch point.
Comment 2 Anthony Marendy 2005-09-08 05:47:45 UTC
Created attachment 16336 [details]
Adds functionality for multiple branch points from a single revision.

The number of components in a revision is now always a multiple of two (a la
CVS revision numbers).	The odd positions indicate the branch number.

e.g. if you 1.1 and 1.2 the first time you check out 1.1 you will get 1.1.1.1.

The second time you check out 1.1 you will get 1.1.2.1.

Added a number of methods to support this => getBranchLevel() and
getBranchNumber().

Also moved some repeated initialisation code into a single private method,
initBaseRevision().
Comment 3 Anthony Marendy 2005-09-08 05:51:59 UTC
The number of components in a revision is now always a multiple of two (a la 
CVS revision numbers).  The odd positions indicate the branch number.

e.g. if you 1.1 and 1.2 the first time you check out 1.1 you will get 1.1.1.1.

The second time you check out 1.1 you will get 1.1.2.1.

Added a number of methods to the NodeRevisionNumber class to support this => 
getBranchLevel() and getBranchNumber().