---
name: "monotone"
section: "1"
platform: "linux"
package: "monotone"
version: "0.18-1"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/monotone"
---

# monotone(1)

distributed version control system

## NAME

monotone - distributed version control system

## SYNOPSIS

**monotone** *\[options\] \<command\> \[parameters\]*

Options, which affect global behavior or set default values, come first in the argument list. A single command must follow, indicating the operation to perform, followed by parameters which vary depending on the command.

### Note

This manpage is a summary of some of the features and commands of **monotone**, but it is not the most detailed source of information available. For a complete discussion of the concepts and a tutorial on its use, please refer to the texinfo manual (via the **info** **monotone** command, or online).

### Commands

- **comment** *\<id\>*

  Write a comment cert for a revision.

- **approve** *\<id\>*

  Make a "branch" cert approving of a revision's membership in a branch.

- **disapprove** *\<id1\>*

  Disapprove of a revision, committing the inverse changes as as a descendant of the disapproved revision.

- **tag** *\<id\> \<tagname\>*

  Put a symbolic tag cert on a revision.

- **testresult** *\<id\> (0\|1\|true\|false\|yes\|no\|pass\|fail)*

  Indicate a passing or failing test result on a revision.

- **agraph**

  Dump revision graph to stdout in VCG format.

- **diff** *\[--revision=\<id1\> \[--revision=\<id2\>\] \] \[\<pathname\>...\]*

  **Show diffs between working copy and database.**

- **status** *\[\<pathname\>...\]*

  **Show status of working copy.**

- **log** *\[id\]*

  **Show historical log of revisions, starting from working copy** **base revision, or** *\[id\]* **if given.**

- **cert** *\<id\> \<certname\> \[certval\]*

  **Create a custom cert for a revision. Reads cert value** **from stdin if no value given on command line.**

- **genkey** *\<keyid\>*

  **Generate an RSA key-pair and store it in the database.**

- **hkeypass** *\<keyid\>*

  *Change passphrase of the private half of a key.*

- **list certs** *\<id\>*

  *List certs associated with revision.*

- **list keys** *\[partial-id\]*

  *List keys matching glob, or list all keys if no glob given.*

- **list branches**

  *List all branches.*

- **list tags**

  *List all tags.*

- **list vars** *\[\<domain\>\]*

  **List all vars (possibly limited by domain).**

- **list unknown** *\[\<pathname...\]*

  **List files in working directory, but not in revision's manifest or** **work list.**

- **list ignored** *\[\<pathname...\]*

  **List files intentionally ignored due to the ignore\_file hook.**

- **list missing** *\[\<pathname...\]*

  **List files in revision's manifest, but not in working directory.**

- **fdata** *\<id\>*

  **Write file data packet to stdout.**

- **fdelta** *\<oldid\> \<newid\>*

  **Write file delta packet to stdout.**

- **mdata** *\<id\>*

  **Write manifest data packet to stdout.**

- **mdelta** *\<oldid\> \<newid\>*

  **Write manifest delta packet to stdout.**

- **certs** *\<id\>*

  **Write revision cert packets to stdout.**

- **rdata** *\<id\>*

  **Write revision data packet to stdout.**

- **privkey** *\<id\>*

  **Write private key packet to stdout.**

- **pubkey** *\<id\>*

  **Write public key packet to stdout.**

- **read**

  **Read packets from stdin.**

- **cvs\_import** *\<cvsroot\>*

  **Import all versions in CVS repository. Reconstructs revisions and** **converts metadata to certificates. A private signing key must already** **exist in the database.**

- **rcs\_import** *\<rcsfile\> ...*

  **Import all file versions in RCS files. Does not reconstruct revisions** **across the entire tree.**

- **checkout** *\[manifest-id\]* *\<directory*

  **Check out tree state from database.**

- **co** *\[manifest-id\]* *\<directory*

  **Check out tree state from database; an alias for checkout.**

- **cat** *(file\|manifest) \<id\>*

  **Write file or manifest from database to stdout.**

- **heads**

  **Show unmerged heads of branch, or report when branch is merged.**

- **merge**

  **Merge unmerged heads of branch.**

- **add** *\<pathname\> \[...\]*

  **Add files to working copy. adding a file does not copy it into the database,** **merely adds it to the work list. You must commit your changes in order** **to copy added files to the database.**

- **drop** *\<pathname\> \[...\]*

  **Drop files from working copy. Files are not deleted from working copy,**  **merely noted as removals in the work list.**

- **rename** *\<src\> \<dst\>*

  *Rename files from \<src\>  to \<dst\>  in working copy.*

- **commit** *\[--message=\<log message\>\] \[\<pathname\>...\]*

  *Commit working copy to database. If a --message option is provided on* *the command ine, it is used; otherwise a log message editor will be* *invoked.*

- **update**

  *Update working copy.*

- **push** *\<host\> \<collection\>*

  *Push contents of \<collection\> to database on \<host\>*

- **pull** *\<host\> \<collection\>*

  *Push contents of \<collection\> from database on \<host\>*

- **sync** *\<host\> \<collection\>*

  *Sync contents of \<collection\> with database on \<host\>*

- **serve** *\<host\> \<collection\>*

  *Serve contents of \<collection\> at network address \<host\>*

- **set** *\<domain\> \<name\> \<value\>*

  *Set the db var \<name\> in domain \<domain\> to value* *\<value\>.*

- **unset** *\<domain\> \<name\>*

  *Delete any setting for db var \<name\> in domain \<domain\>.*

- **automate** *(interface\_version\|heads\|descendents\|erase\_ancestors\|toposort\|ancestry\_difference\|leaves)*

  *Scripting interface.*

- **db** *(init\|info\|version\|dump\|load\|migrate\|rebuild\|execute\|check)*

  *Manipulate database state.*

## DESCRIPTION

*Monotone is a version control system, which allows you to keep old* *versions of files, as well as special manifest files which* *describe the location of files in a tree. Unlike other systems,* *versions in monotone are identified by cryptographic hash, and* *operations are authenticated by individual users' evaluating* *cryptographic signatures on meta-data, rather than any central* *authority.*

*Monotone keeps a collection of versions in a single-file relational* *database. It is essentially serverless, using network servers only as* *untrusted communication facilities. A monotone database is a regular* *file, which contains all the information needed to extract previous* *versions of files, verify signatures, merge and modify versions, and* *communicate with network servers.*

## OPTIONS

- **--help**

  *Print help message.*

- **--debug**

  *Turn on debugging log on standard error stream. This is very* *verbose. Default is to be silent, unless an error occurs, in which* *case failure log is dumped.*

- **--quiet**

  *Turn off normal progress messages.*

- **--dump=***\<file\>*

  *Dump debugging log to file on failure.*

- **--nostd**

  *Do not evaluate "standard" lua hooks compiled into* **monotone***.*

- **--norc**

  *Do not load lua hooks from user's* **~/.monotonerc** *file.*

- **--rcfile=***\<file\>*

  *Load extra lua hooks from file (may be given multiple times).*

- **--db=***\<file\>*

  *Use database in file.*

- **--key=***\<keyid\>*

  *Use keyid for operations which produce RSA signatures. Default* *is inferred from presence of unique private key in database. Can also* *be customized on a per-branch basis with hook function*  **get\_branch\_key(branchname)***.*

- **-k** *\<keyid\>*

  *An alias for* **--key=***\<keyid\>*

- **--branch=***\<branchname\>*

  *Use branchname for operations on a branch. Default is inferred* *in operations on existing branches (commit, update, etc).*

- **-b** *\<branchname\>*

  *An alias for* **--branch=***\<branchname\>*

- **--ticket=***dot\|count*

  *Use the given method to print tickers.  The* **count** *method prints* *the count for each ticker on one line, incrementing the numbers in* *place, while the* **dot** *method prints a continuous string of* *characters (like some programs provide a progress line of dots).* *The default is* **count***.*

- **--revision=***\<id\>*

  *Currently this option only applies to the diff command where it may be* *used to compare a working copy with a specific revision or to compare* *two specific revisions. It will likely apply to other commands in the* *future.*

- **-r** *\<id\>*

  *An alias for* **--revision=***\<id\>*

- **--message=***\<log message\>*

  **Use the given message as the changelog when committing a new revision** **rather than invoking the log message editor. Currently this option only** **applies to the commit command but it may also apply to the comment** **command in the future.**

- **-m** *\<log message\>*

  **An alias for --message=***\<log message\>*

- **--root=***\<root dir\>*

  **Stop the search for a working copy (containing the @file{MT} directory)** **at the specified root directory rather than at the physical root of the** **filesystem.**

- **-xargs=***\<file\>*

  **Inject the contents of the file in place among the command line** **arguments.  This may be useful in case the command line would** **otherwise become too long for your system.  This option can be used** **more than once if needed.**

- **-@** *\<file\>*

  **An alias for --xargs=***\<file\>*

## ENVIRONMENT

- **EDITOR**

  **Used to edit comments, log messages, etc.**

- **VISUAL**

  **Used in preference to EDITOR, if set.**

## FILES

- **$HOME/.monotonerc**

  **A lua script, used as a customization file.**

## NOTES

- •

  **Command line options override environment variables and** **settings in lua scripts (such as .monotonerc)**

## SEE ALSO

**info monotone**

## BUGS

**see http://savannah.nongnu.org/bugs/?group=monotone**

## AUTHOR

**graydon hoare \<graydon@pobox.com\>**
