CVS basics
First of all, if you are a beginner with CVS, learn the
CVS basics and more advanced features to use it efficiently.
All cvs commands references a cvs server repository, this repository and its access information can be provided
through the user's CVSROOT environment variable such as
":pserver:anonymous@cvs.superwaba.net:/cvsroot/superwaba" but it can also be specified on each cvs command through the
-d option.
Access information
You can find all the
cvs access information on the Superwaba site.
the cvs settings are
- protocol: pserver
- user: anonymous
- password: <no password>
- host: cvs.superwaba.net
- repository: /cvsroot/superwaba
the retrievable modules are
- vm (virtual machine)
- src (Superwaba sdk java sources)
- samples (sdk samples)
- fonts (pdb fonts)
- SuperWabaSDK (is an alias for both modules vm & src)
Developer Access
If you are a registered
SuperWaba developer, you can use SSH to check source code in as well as out.
The details on using SSH keys to simplify this process are
here.
Do check that you have not added additional newlines to your SSH key. If you do it won't work.
Hint: Superwaba also provides a cvs web access.
If you click on the following link
http://cvs.superwaba.net/cgi-bin/cvsweb.cgi/, you may browse to
the CVSROOT folder which holds all admin files, especially a file named modules that contains the above modules definitions.
You may also retrieve a list of modules by typing:
cvs -z3 -d :pserver:anonymous@cvs.superwaba.net:/cvsroot/superwaba co -c
(cat the module database, or the
"co -s" option for module status)
Login
To login to the cvs server you have to perform a
cvs login by typing :
cvs -d :pserver:anonymous@cvs.superwaba.net:/cvsroot/superwaba login
if a password prompt appears just press return because no password is required for anonymous access.
Checkout
To start working on the sources, you have to retrieve a copy on your own local storage, this process is called
checkout.
First open a shell window and create a new directory that will contain the Superwaba sources:
i:\> mkdir mySandBox
i:\> cd mySandBox
Then issue the following checkout command:
(z3 is a compression request)
i:\mySandBox> cvs -z3 -d :pserver:anonymous@cvs.superwaba.net:/cvsroot/superwaba co SuperWabaSDK
and you will get the whole
SuperWabaSDK directory structure on your disk
- i:\mySandBox\SuperWabaSDK
- i:\mySandBox\SuperWabaSDK\vm\*
- i:\mySandBox\SuperWabaSDK\src\*
- i:\mySandBox\SuperWabaSDK\utils\*
- i:\mySandBox\SuperWabaSDK\samples\*
- i:\mySandBox\SuperWabaSDK\resources\fonts\*
If you previously have unzipped the a complete SDK in the same folder you will now have a complete environment with up to date files in the src & vm folders.
Once sources have been retrieved from the cvs server, a CVS folder is created for each project folder that contains few files with location information of the sources in the repository. Thus, the CVSROOT information is not required if you run a cvs command in a folder with a CVS folder.
HINT: The -d option can be omited if you set an shell environment variable like this:
set CVSROOT=
:pserver:anonymous@cvs.superwaba.net:/cvsroot/superwaba
You may also retrieve a specific version, (you can use a cvs client with browsing features, like eclipse or use
cvsweb).
For instance, just type the command:
cvs -z3 co -r v350 SuperWabaSDK and you will retrieve the v350 versionned files.
Update
Once you have a local copy of the sources you may modify any file under source control locally.
If you want to update your local copy with changes that have been commited to the repository by someone else, you can type :
cvs -z3 update
If you just want to see any CVS command result without altering any local files you may specify the cvs
global -n option which disables real operations and however display the command result as if it has been executed.
So if you just want to check changes without retrieving them, just type:
cvs -z3 -n update
The update command lists all files recursively that has a non standard state
? the file is not ignored (see cvs ignore features) but is not under source control.
- "U" means the file has been updated with the latest version
- "M" the file has been modified locally by you, and may be commited (you need write access)
- "P" a file you also have modified has been successfully updated with changes made by someone else
- "C" a file you also have modified cannot be automatically been updated with changes made by someone else (a manual merge is required, to integrate the changes)
As far as you use an anonymous access, you don't have write access.
That is why all
cvs commit commands that developers can use to write their own changes to the repository will fail in your case.
cvs [server aborted]: "commit" requires write access to the repository
Once you have an up to date version, and even if you don't have a write access you may do changes (features addings/bug fixes) to the sources and build diff files to contribute to the Superwaba project.
The diff file is created by typing:
cvs diff -u > myName_v350_date.diff
in the
SuperWabaSDK root folder.
You may then submit a new patch on the
SourceForge Superwaba page and don't forget to give a full description of your changes if you don't have enough comments in your source code, Guilherme will appreciate
don't forget neither to upload your diff file and check the little box indicating an attachement.
Basically the CVS system gives you access to specific labeled versions, development branches, let you verify changes between two versions, update your local "sandbox" with the last changes commited by other developers and generate patches to contribute to the Superwaba project.
If you make changes to the source, please annotate it as per the
Building The VM section so we know who did what and when.
Well, I don't want to write a CVS tutorial at all.
Many cvs tutorials are available and are much better CVS introductions than mine.
The CVS reference site is
http://www.cvshome.org that also contains the most valuable documentation, FAQs and tutorials (
http://www.cvshome.org/docs/ ).
I just wanted to give some basic information to non-cvs users that don't want to spent lots of time reading quite heavy CVS documentation. This is to help those who just want to know about the cvs features and how they can help the Superwaba development without getting too involved in
SourceForge stuff.