Initial creation and porting of an rsync module
Initial creation and porting of a git module

Move git_sync_timestamps() to the new git sync module
Initial creation and porting of a cvs module
Initial removal of _sync_repo() and use the new SyncManager class

Move the SyncManager initialization out of the loop
Make the returncode not bail out of syncing the remaining repos.
Update the return info to match expectations
Move some local variables to classwide ones.
Rsync module, add exists() and new()
Separate out the actual sync code to a private function.

Fix new() to  return _sync().
Fix sync() to return new() or  _sysnc().
Add auto-clone support for git sync

Make the git sync module clone the upstream repository if the directory
specified in repos.conf isn't a git directory. Fixes bug 485402.
Move several git vars to be part of the object like in rsync
Add exists() and new() functions, make sync() private and add new sync
pointing either to new() or _sync().
Extend the module_spec with the new functions.
Fix mixed spaces/tabs, update _sync to not take kwargs since it's
an internal function
Update module spec for git
Bring CVS module up to current module spec

Add exists(), new(), _sync() as in the git and rsync classes. Clean up
output style to use logger and writemsg_level instead of straight print
statements
Initial rough-in of a websync module.

This module is capable of both a bash or python webrsync version selectable from an
environemnt variable "TESTIT".  Later it can be converted to a portage/emerge setting
when the python version has been coded.
Initial stubbing out of a common SyncBase class

Add copyright
Optimize bin_command handling in __init__().
Use the new SyncBase class in websync module
Git Sync: fix missing %s in the success message.
portage/sync/modules/rsync: Use SyncBase class.