.. -*- restructuredtext -*-

mcs – the monticello synchronizer
=================================

What is mcs?
------------

**mcs** is a small tool to synchronize multiple – file or HTTP based –
`Monticello <http://www.wiresong.ca/monticello/v1/>`_ repositories.
Synchronization in this case is nothing more than copying missing versions from
one repository to another.

How to use mcs?
---------------

**mcs** is a runnable python package with an easy syntax: It currently supports
two sub-commands (``copy`` and ``list``). Examples:

``mcs list http://www.squeaksource.com/AST/`` lists versions in the online
SqueakSource repository. **mcs** knows some common SqueakSource installations in
the world (as the Squeak *Installer* class does), so you could also write 
``mcs list ss:AST``.

``mcs copy ss:AST /tmp/ast_repo`` copies all versions from the online
SqueakSource repository to the local ``ast_repo`` folder, only copying versions
that are not already in the local repository.

The following repository types are supported:

- HTTP and HTTPS repositories: Use the standard URL syntax for those 
  repositories. You can specify your username and password using the form
  ``http://username:password@hostname/path/``. Be aware that most SqueakSource
  installations require the trailing slash.
- Known HTTP repositories: Use the syntax ``alias:project`` where alias is one 
  of *lukas*, *squeak*, *squeakfoundation*, *ss* and *wiresong*.
- Local repositories: **mcs** will try to open every URL not matching one of 
  the pattern before as file system paths. You can specify absolute and 
  relative paths, Windows UNC Paths should also work.

Run ``mcs help`` for more information and optional switches.

Requirements
------------

**mcs** uses `httplib2 <http://code.google.com/p/httplib2/>`_ for HTTP
repositories.

License
-------

::

    Copyright (c) 2010 Michael Grünewald
    
    Permission is hereby granted, free of charge, to any person
    obtaining a copy of this software and associated documentation
    files (the "Software"), to deal in the Software without
    restriction, including without limitation the rights to use,
    copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the
    Software is furnished to do so, subject to the following
    conditions:
    
    The above copyright notice and this permission notice shall be
    included in all copies or substantial portions of the Software.
    
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
    OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    OTHER DEALINGS IN THE SOFTWARE.


