mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-10-31 14:13:52 +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.
 | |
| 
 | |
| 
 | |
| 
 |