mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-11-04 16:14:03 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			202 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			202 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
This is the CODINGSTYLE file for the Rivendell package.
 | 
						|
 | 
						|
 | 
						|
OVERVIEW:
 | 
						|
 | 
						|
Rivendell is a Free Software project to develop a radio broadcast automation
 | 
						|
system.  This file, CODINGSTYLE, describes how to get the Rivendell code,
 | 
						|
coding style guidelines for writing new code, how to submit patches to be
 | 
						|
incorporated into the official Rivendell CVS repository, and other code related
 | 
						|
information.  General info on the Rivendell project can be found at the
 | 
						|
http://www.rivendellaudio.org/ web page and also in the README and INSTALLATION
 | 
						|
files.  
 | 
						|
 | 
						|
 | 
						|
 | 
						|
CODING STYLE GUIDELINES:
 | 
						|
Please try to write code that fits with the formating style already present.
 | 
						|
Some good basic guidelines:
 | 
						|
 | 
						|
   LINE LENGTH -- Should be short enough to fit onto an eighty character line
 | 
						|
                  without wrapping.  This applies to ChangeLog 
 | 
						|
                  entries too!  While it's not always possible to follow this 
 | 
						|
                  rule (quoted literal strings being one place in particular 
 | 
						|
                  where it is sometimes necessary to violate it), sticking 
 | 
						|
                  with it wherever possible makes life much easier for those 
 | 
						|
                  using character mode editing sessions.
 | 
						|
 | 
						|
   INDENTATION -- Should be two characters per level.
 | 
						|
 | 
						|
   CLASS NAMES -- Should have the initial letter of each word capitalized, 
 | 
						|
                  e.g. 'ThisIsMyClass'.  If the class is part of librd, the
 | 
						|
                  name should be prefaced with the uppercase letters 'RD', 
 | 
						|
                  e.g. 'RDThisIsMyClass'.
 | 
						|
 | 
						|
  METHOD NAMES -- Names of class methods should follow the general style used
 | 
						|
                  by Qt.  A special convention for Rivendell is to reserve
 | 
						|
                  names beginning with an uppercase letter for private classes
 | 
						|
                  only.
 | 
						|
 | 
						|
VARIABLE NAMES -- Class variables should be prefaced with a short base name 
 | 
						|
                  that is common to all, followed by an underscore.  For
 | 
						|
                  example, the class 'MyClass' might use 'myclass_', as 
 | 
						|
                  in 'myclass_foo1', 'myclass_foo2', etc.  *All* variables
 | 
						|
                  should be lowercase only, with uppercase being reserved for
 | 
						|
                  class and method names.
 | 
						|
 | 
						|
Doxygen is the code documenting system in place.  Doxygen style comments placed
 | 
						|
in header files can then be processed to generate friendly code documentation.
 | 
						|
More information on doxygen can be found here (
 | 
						|
http://www.stack.nl/~dimitri/doxygen/ ).  
 | 
						|
FIXME: doxygen code samples
 | 
						|
 | 
						|
 | 
						|
 | 
						|
CVS GENERAL INFO:
 | 
						|
 | 
						|
CVS allows multiple developers to work simultaneously on a project. CVS does
 | 
						|
this by keeping a master version of the source code in a central repository on
 | 
						|
the cvs.rivendellaudio.org server.  Each developer "checks out" a copy of the
 | 
						|
source code to their personal workspace. This local copy of the source is
 | 
						|
called a sandbox.  Developers test and work on the source in their sandboxes
 | 
						|
until they reach a mile-point, such as implementing a new feature or fixing a
 | 
						|
bug.  Developers can then create a patch or commit their changes back to the
 | 
						|
central repository.  The CVS server auto-magically merges changes from multiple
 | 
						|
developers together.  Other developers periodically update their sandboxes to
 | 
						|
merge changes others have committed to the server.
 | 
						|
 | 
						|
Conflicts normally are prevented by developers communicating and by working on
 | 
						|
different areas of the source code. It is important that only working code is
 | 
						|
committed back into the repository.
 | 
						|
 | 
						|
Though CVS has one main program, cvs, that program has a lot of functionality
 | 
						|
which is accessed by giving the program different commands. The general syntax
 | 
						|
of the cvs program is:
 | 
						|
 | 
						|
    cvs CVS_OPTIONS COMMAND COMMAND_OPTIONS
 | 
						|
 | 
						|
A brief overview of CVS can be found online here (
 | 
						|
http://techweb.rfa.org/grauf/cvs.html ).
 | 
						|
 | 
						|
 | 
						|
 | 
						|
CVS READ:
 | 
						|
 | 
						|
Any user can get anonymous read-only access to the CVS repository using the
 | 
						|
pserver protocol.  The module one wishes to check out must be specified as the
 | 
						|
module-name (ex: rivendell).  cvs.rivendellaudio.org is configured with the
 | 
						|
username "cvs" and the password "cvs".  Access via the pserver protocol
 | 
						|
requires that a user login/logout.
 | 
						|
 | 
						|
    cvs -d:pserver:cvs@cvs.rivendellaudio.org:/home/cvs/cvsroot login
 | 
						|
    cvs -d:pserver:cvs@cvs.rivendellaudio.org:/home/cvs/cvsroot checkout rivendell
 | 
						|
    cvs -d:pserver:cvs@cvs.rivendellaudio.org:/home/cvs/cvsroot logout
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
SUBMITTING PATCHES:
 | 
						|
 | 
						|
Contributions of patches with fixes or enhancements are welcome.  Posting a
 | 
						|
patch to the rivendell programmer mailing list (
 | 
						|
rivendell-prog@rivendellaudio.org
 | 
						|
http://www.rivendellaudio.org/mailman/listinfo/rivendell-prog ) is the best
 | 
						|
approach for anyone to contribute to the project.  Established Rivendell
 | 
						|
programmers can then review the patch and apply it to the official CVS tree.
 | 
						|
Users who contribute significant patches over time may earn the privilege of
 | 
						|
CVS write access.
 | 
						|
 | 
						|
The cvs diff command may be used to generate patches from a CVS sandbox.  This
 | 
						|
allows for a user to checkout a cvs sandbox and make changes as needed by
 | 
						|
directly editing the files checked out.  When done making changes, the cvs
 | 
						|
utility can generate the differences, in patch file format, of the sandbox
 | 
						|
version to the repository version of a file.  Run the following commands from
 | 
						|
within the sandbox.
 | 
						|
 | 
						|
    # see changes made to sandbox against what was checked out from the
 | 
						|
    # repository
 | 
						|
    cvs diff FILE
 | 
						|
 | 
						|
    # see the difference between two versions of a file in the repository
 | 
						|
    cvs diff -rVERSION_NUMBER -rVERSION_NUMBER FILE
 | 
						|
 | 
						|
Additional flags, such as "-u" can be added to produce a "unified context"
 | 
						|
style diff.  Similarly the output redirector can be used to send the patch to a
 | 
						|
file (which can then be emailed to the mailing list).   A sample command
 | 
						|
follows:
 | 
						|
 | 
						|
    cvs diff -u FILE > /tmp/FILE_bugfix_2007.03.26.patch
 | 
						|
 | 
						|
 | 
						|
 | 
						|
CVS WRITE:
 | 
						|
 | 
						|
Contributors who have write access to the Rivendell CVS repository must use
 | 
						|
Secure Shell (ssh) as the secure transport for all non-anonymous CVS access.
 | 
						|
 | 
						|
To get this set up, you will need to generate a public key and send it to
 | 
						|
Federico Grau <grauf@rfa.org> and the sysadmin team <sysadmins@rfa.org> at
 | 
						|
Radio Free Asia (RFA), along with the username one wishes to use.  As an
 | 
						|
example of how to create a public key, use the following command:
 | 
						|
 | 
						|
	ssh-keygen -t dsa
 | 
						|
 | 
						|
This should prompt you for the base filename to put the public and private keys
 | 
						|
in, as well as a passphrase (be sure to use a secure one).  Assuming that the
 | 
						|
default filenames were accepted, you should then have the following two files
 | 
						|
in '~/.ssh/':
 | 
						|
 | 
						|
	id_dsa
 | 
						|
	id_dsa.pub
 | 
						|
 | 
						|
The 'id_dsa.pub' file is the one that gets sent to don Fede.  The other is your
 | 
						|
secret key, and should be guarded accordingly.  You will need this key every
 | 
						|
time you access the CVS archive using your selected username.  Once (RFA) has
 | 
						|
set up your account, all you will need to do is change the CVSROOT string in
 | 
						|
your environment or set the cvs command to point to the new server.  The form
 | 
						|
of the environment string and a sample checkout command follow:
 | 
						|
 | 
						|
	export CVSROOT=:ext:<username>@cvs.rivendellaudio.org:/home/cvs/cvsroot
 | 
						|
    cvs checkout rivendell
 | 
						|
 | 
						|
A sample checkout command that does not use the environment variable follows:
 | 
						|
 | 
						|
    cvs -d:ext:<username>@cvs.rivendellaudio.org:/home/cvs/cvsroot checkout rivendell
 | 
						|
 | 
						|
You should now be able to checkout, update and commit material as before, the
 | 
						|
only difference being that CVS will prompt you for the passphrase of your
 | 
						|
private key each time you access the archive.  As a convenience the
 | 
						|
ssh-agent(1) and ssh-add(1) utilities can be used to securely hold private keys
 | 
						|
used for public key authentication without repeatedly prompting for
 | 
						|
passphrases.
 | 
						|
 | 
						|
 | 
						|
CVS WRITE COMMIT CHECKLIST:
 | 
						|
 | 
						|
Before committing changes back to the Rivendell CVS repository the following
 | 
						|
guidelines should be completed:
 | 
						|
 | 
						|
1) Successful update of CVS without conflicts.
 | 
						|
2) Successful compile of CVS without errors.
 | 
						|
3) Update the ChangeLog file at the base of the Rivendell source code tree.
 | 
						|
   The format of the ChangeLog file has the most recent changes at the bottom
 | 
						|
   of the file.  Entries start with a date stamp and have a format like:
 | 
						|
 | 
						|
    YYYY-MM-DD [HH:MM TIMEZONE] NAME <EMAIL>
 | 
						|
    * Description of change
 | 
						|
 | 
						|
    A couple examples follow:
 | 
						|
    2007-01-09 19:00 EST Federico Grau <grauf@rfa.org> <donfede@casagrau.org>
 | 
						|
	* lib/rdcart.cpp lib/rdcut.cpp rdcatch/rdcatch.cpp; corrected i18n 
 | 
						|
        bug by replacing use of QT shortDayName() with libradio 
 | 
						|
        RGetShortDayNameEN() which will always return english day names 
 | 
						|
        regardless of configured locale.
 | 
						|
 | 
						|
    2007-02-23 Fred Gleason <fredg@paravelsystems.com>
 | 
						|
	* Modified the code in 'lib/rdimport_audio.cpp' to use the
 | 
						|
	'RDCart::setMetadata()' and 'RDCut::setMetadata()' methods.
 | 
						|
4) CVS Commit of the files changed using the ChangeLog snippet.
 | 
						|
 | 
						|
 | 
						|
 |