*** Welcome to piglix ***

Monotone (software)

Amonotone
Monotone-logo.png
Developer(s) The monotone team
Initial release April 6, 2003; 14 years ago (2003-04-06)
Written in C++
Operating system Unix, Linux, BSD, Mac OS X, Windows
Available in English, Italian, Swedish, Portuguese, German, Spanish
Type Revision control
License GNU General Public License
Website www.monotone.ca

Monotone is an open source software tool for distributed revision control.

Monotone tracks revisions to files, groups sets of revisions into changesets, and tracks history across renames. The focus of the project is on integrity over performance. Monotone is designed for distributed operation, and makes heavy use of cryptographic primitives to track file revisions (via the SHA-1 secure hash) and to authenticate user actions (via RSA cryptographic signatures).

Like GNU arch, and unlike Subversion, Monotone takes a distributed approach to version control. Monotone uses SHA-1 hashes to identify specific files or groups of files, as with Git and Mercurial, in place of linear revision numbers. Each participant maintains their own revision history, stored in a local SQLite database.

Prior to some heavy optimisation in revision 0.27, Monotone's emphasis on correctness over optimisation was often blamed for poor initial experiences. The first action of a new user is often to synchronize (clone) a large existing Monotone database, an action which often took hours for large databases, due to the extensive validation and integrity checking which Monotone performs when revisions are moved through the network. Once the initial (clone) database is populated, subsequent actions usually proceed more rapidly. As of July 2010, there is still room for further optimisation on some rarer functions.

Monotone is especially strong in its support for a diverge/merge workflow, which it achieves in part by always allowing commit before merge.

Although Monotone originally supported a variety of networking protocols for synchronizing trees, it now exclusively uses a custom protocol called netsync, which is more robust and efficient, and shares some conceptual ground with rsync and cvsup. (However, as of version 0.27, it is possible to use the netsync protocol over any stream, notably including ssh connections.) Netsync has its own IANA-assigned port (4691) and older versions of it are supported by a Wireshark plug-in for traffic analysis. There is no separate Monotone server because any Monotone client can act as a server.


...
Wikipedia

...