xshare.com
Isch bin a Pixel!!!

jKiskas Small CVS CookBook

Summary

This contains information about how to access the CVS repository, its modules, the branching and merging strategy and the used CVS tags.

Access To CVS

jKiska uses the CVS repository offered by SourceForge. Please read the briefing at SourceForge for more information.

SourceForge offers a web-based interface to every repository via ViewCVS too. If you want to use this service, please go to http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jkiska/.

Modules In The CVS Repository

The repository contains the following modules at the moment:

jkiska
The actual jKiska module. It contains the Java sources and the user guide.
huette
The SourceForge webpages are in this module.

Merging And Branching

Branching and merging is one of the big advantages of an version control system. But you simply can get lost if have not a clean and simple strategy. For a small project as jKiska it is adequate to have two main codelines, which have the are called HEAD and RELEASE. But this names are only symbolic names used in this document and refer to specific CVS branches.

The HEAD Branch

This branch is identical to the MAIN branch of CVS and the place there every new feature will be implemented. Major changes take place on this branch.

The RELEASE Branch

The codeline of a RELEASE branch contains the sources of the current stable release and is created out of the HEAD branch if the development cycle on HEAD has finished and is ready for the public. The current name of the RELEASE branch is created out of the version number of the releases which will be released from this branch. How the RELEASE branch name looks like is described in the section called “Release Branch Tag”.

After the release of the first public version of from this branch, only bugfixes and improvemens of the documentation are allowed on this branch. No major or minor changes. Even no code cleanups.

Creation Of A RELEASE Branch

Not written yet.

Merging Changes From RELEASE To HEAD

Not written yet.

Used CVS Tags Reference

Release Tag

A release tag is set always when a release has been done. It marks all the resources which belongs to a specific release.

Release Tag
[1]RelTag::= TagStart '_' RelTagID  
[2]RelTagID::= 'REL_' VersionAbbr 

Example 1. Release Tag for jKiska Base 7.3.4

A fictive version 7.3.4 could have the tag JB_REL_7_3_4 for its release in CVS.

Release Branch Point Tag

A release branch point tag marks the point from which a branch has been started. That makes it easier to diff against the start of a branch.

Release Branch Point Tag Syntax
[3]RelBranchPointTag::= TagStart '_' RelBranchTagID  
[4]RelBranchTagID::= 'RELB_' CodeLineAbbr '_BP'  

Example 2. Release Branch Point Tag For Branch 5.3

For a fictive version jKiska Base 5.3 branch the corresponding tag would be JB_RELB_5_3_BP.

Release Branch Tag

A release branch tag marks a the codeline of the current release branch. It is build based on the major version number and the first digit of the minor version number. It is set if the release branch is forked from HEAD (based on the release branch point tag).

Release Branch Tag Syntax
[5]RelBranchTag::= TagStart '_' RelBranchTagID  
[6]RelBranchTagID::= 'RELB_' CodeLineAbbr  

Example 3. Release Branch Tag For Branch 5.3

For a fictive version jKiska Base 5.3 branch the corresponding tag would be JB_RELB_5_3.

The Merge Tag

This tag is set on the source codeline for a specific merge. It marks all the resources which are concerned by this merge and their specific revision.

Merge Tag Syntax
[7]MergeSourceTag::= TagStart '_MERGE_' BranchID '_TO_' BranchID '_' MergeRole '_' Timestamp  

TODO: give a good example for this tag.

The Last Merge Marker Tag

This tag marks not a specific merge from a branch to another, it marks the last one.

Last Merge Marker Tag Syntax
[8]MergeSourceTag::= TagStart '_LAST_MERGE_' BranchID '_TO_' BranchID '_' MergeRole  

TODO: give a good example for this tag.

The Common Tag Prefix

TagStart Prefix
[9]TagStart::='JB' 

The TagStart is used always as prefix for every tag applied to the jkiska CVS repository.

The Codeline Abbrevation

Codeline Abbrevation Syntax
[10]CodeLineAbbr::=[1-9][0-9]* '_' [1-9][0-9]* 

This is used to represents the id of the codeline. This id is build from the major and minor number of the first release on this codeline.

Example 4. Codeline Abbreviation For jKiska Base 0.2.0

Supposing you fork a new code line from HEAD starting with version 0.2.0. That means, the majornumber is 0 and the minor version 2. The codeline abbreviation would be 0_2.

The Versionnumber Abbrevation

Every release of jKiska has its own version number. The versionnumber abbrevation is used to represent a versionnumber in CVS tags.

The Versionnumber Abbrevation Syntax
[11]VersionAbbr::=[1-9][0-9]* '_' [1-9][0-9]* '_' [1_9][0-9]* 

The abbrevation is constructed out for the major, minor and patch level of a release.

Example 5. Versionnumber For jKiska 4.5.67

According the the schema above, the version number abbrevation for a fictive release 41.5.67 would be 41_5_67.

The Branch ID

TODO: give a good description for this tag.

The Branch ID Syntax
[12]BranchID::= RelBranchTagID | 'HEAD'  

The Merge Role

TODO: give a good description for this tag.

[13]MergeRole::='TARGET' | 'SOURCE' 

TODO: give a good example for this tag.

The Timestamp

TODO: give a good description for this tag.

[14]Timestamp::= [1-9][0-9][0-9][0-9]
[0-9][0-9]
[1-9][0-9]
[1-9][0-9]
[1-9][0-9]
[0-9][0-9]
/* The year. */
/* The Month. */
/* The day. */
/* The hour. */
/* The minute. */
/* The second. */

TODO: Give a good example.