---
name: "mtn"
section: "1"
platform: "linux"
package: "monotone"
version: "1.1-9"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/mtn"
---

# mtn(1)

a distributed version control system

## NAME

monotone - a distributed version control system

## SYNOPSIS

**mtn** *\[options...\] command \[arguments...\]*

## DESCRIPTION

monotone is a highly reliable, very customizable distributed version control system that provides lightweight branches, history-sensitive merging and a flexible trust setup. monotone has an easy-to-learn command set and comes with a rich interface for scripting purposes and thorough documentation.

For more information on monotone, visit **http://www.monotone.ca**.

The complete documentation, including a tutorial for a quick start with the system, can be found online on **http://www.monotone.ca/docs**.

## GLOBAL OPTIONS

- \--confdir \<arg\>

  set location of configuration directory

- \--date-format \<arg\>

  [strftime(3)](/strftime/3.md) format specification for printing dates

- \--db \[ -d \] \<arg\>

  set name of database

- \--dump \<arg\>

  file to dump debugging log to, on failure

- \--help \[ -h \]

  display help message

- \--ignore-suspend-certs / --no-ignore-suspend-certs

  do not ignore revisions marked as suspended

- \--key \[ -k \] \<arg\> / --use-default-key

  sets the key for signatures, using either the key name or the key hash

- \--keydir \<arg\>

  set location of key store

- \--log \<arg\>

  file to write the log to

- \--no-builtin-rcfile / --builtin-rcfile

  do not load the built-in lua file with the default hooks

- \--no-default-confdir / --allow-default-confdir

  forbid use of the default confdir

- \--no-format-dates

  print date certs exactly as stored in the database

- \--no-standard-rcfiles / --standard-rcfiles

  do not load '~/.monotone/monotonerc' or '\_MTN/monotonerc' lua files

- \--no-workspace / --allow-workspace

  don't look for a workspace

- \--non-interactive / --interactive

  do not prompt the user for input

- \--quiet \[ -q \]

  decrease verbosity (undo previous '-v', then disable informational output, then disable warnings)

- \--rcfile \<arg\> / --clear-rcfiles

  load extra lua file

- \--root \<arg\>

  limit search for workspace to specified root

- \--ssh-sign \<arg\>

  controls use of ssh-agent.  valid arguments are: 'yes' to use ssh-agent to make signatures if possible, 'no' to force use of monotone's internal code, 'only' to force use of ssh-agent, 'check' to sign with both and compare

- \--ticker \<arg\>

  set ticker style (count\|dot\|none)

- \--timestamps

  show timestamps in front of errors, warnings and progress messages

- \--verbose \[ -v \]

  increase verbosity (undo previous '-q', and then enable debug output)

- \--version

  print version number, then exit

- \--xargs \[ -@ \] \<arg\>

  insert command line arguments taken from the given file

## COMMANDS

### command group 'automation'

Commands that aid in scripted execution.

- **automate ancestors** REV1 \[REV2 \[REV3 \[...\]\]\]

  Prints the ancestors of the given revisions.

- **automate ancestry\_difference** NEW\_REV \[OLD\_REV1 \[OLD\_REV2 \[...\]\]\]

  Lists the ancestors of the first revision given, not in the others.

- **automate branches**

  Prints all branch certs in the revision graph.

- **automate cert** REVISION-ID NAME VALUE

  Adds a revision certificate.

- **automate certs** REV

  Prints all certificates attached to a revision.

- **automate checkout** \[DIRECTORY\]

  Checks out a revision from the database into a directory. If a revision is given, that's the one that will be checked out.  Otherwise, it will be the head of the branch (given or implicit).  If no directory is given, the branch name will be used as directory.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **automate children** REV

  Prints the children of a revision.

- **automate common\_ancestors** REV1 \[REV2 \[REV3 \[...\]\]\]

  Prints revisions that are common ancestors of a list of revisions.

- **automate content\_diff** \[FILE \[...\]\]

  Calculates diffs of files.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--reverse

    reverse order of diff

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

  - \--with-header / --without-header

    show the matching cset in the diff header

- **automate descendents** REV1 \[REV2 \[REV3 \[...\]\]\]

  Prints the descendents of the given revisions.

- **automate drop\_attribute** PATH \[KEY\]

  Drops an attribute or all of them from a certain path.

- **automate drop\_db\_variables** DOMAIN \[NAME\]

  Drops a database variable.

- **automate drop\_public\_key** KEY\_NAME\_OR\_HASH

  Drops a public key.

- **automate erase\_ancestors** \[REV1 \[REV2 \[REV3 \[...\]\]\]\]

  Erases the ancestors in a list of revisions.

- **automate erase\_descendants** \[REV1 \[REV2 \[REV3 \[...\]\]\]\]

  Erases the descendants in a list of revisions.

- **automate file\_merge** LEFT\_REVID LEFT\_FILENAME RIGHT\_REVID RIGHT\_FILENAME

  Prints the results of the internal line merger, given two child revisions and file names.

- **automate generate\_key** KEY\_NAME PASSPHRASE

  Generates an RSA key-pair.

  - \--force-duplicate-key

    force genkey to not error out when the named key already exists

- **automate get\_attributes** PATH

  Prints all attributes for the specified path. If an explicit revision is given, the file's attributes at this specific revision are returned.

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **automate get\_base\_revision\_id**

  Shows the revision on which the workspace is based.

- **automate get\_content\_changed** REV FILE

  Lists the revisions that changed the content relative to another revision.

- **automate get\_corresponding\_path** REV1 FILE REV2

  Prints the name of a file in a target revision relative to a given revision.

- **automate get\_current\_revision** \[PATHS ...\]

  Shows change information for a workspace.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

- **automate get\_current\_revision\_id**

  Shows the revision of the current workspace.

- **automate get\_db\_variables** \[DOMAIN\]

  Retrieve database variables.

- **automate get\_extended\_manifest\_of** REVISION

  Prints the extended manifest for the given identifier.

- **automate get\_file** FILEID

  Prints the contents of a file (given an identifier).

- **automate get\_file\_of** FILENAME

  Prints the contents of a file (given a name).

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **automate get\_file\_size** FILEID

  Prints the size of a file (given an identifier).

- **automate get\_manifest\_of** \[REVID\]

  Shows the manifest associated with a revision.

- **automate get\_option** OPTION

  Shows the value of an option.

- **automate get\_public\_key** KEY\_NAME\_OR\_HASH

  Prints a public key packet.

- **automate get\_revision** REVID

  Shows change information for a revision.

- **automate get\_workspace\_root**

  Prints the workspace root for the current directory.

- **automate graph**

  Prints the complete ancestry graph.

- **automate heads** \[BRANCH\]

  Prints the heads of the given branch.

- **automate identify** PATH

  Prints the file identifier of a file.

- **automate interface\_version**

  Prints the automation interface's version.

- **automate inventory** \[PATH\]...

  Prints a summary of files found in the workspace.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--no-corresponding-renames / --corresponding-renames

    don't output corresponding renames if restricted on such nodes

  - \--no-ignored / --ignored

    don't output ignored files

  - \--no-unchanged / --unchanged

    don't output unchanged files

  - \--no-unknown / --unknown

    don't output unknown files

- **automate keys**

  Lists all keys in the keystore.

- **automate leaves**

  Lists the leaves of the revision graph.

- **automate log** \[PATH\] ...

  Lists the selected revision history.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--from \<arg\> / --clear-from

    revision(s) to start logging at

  - \--last \<arg\>

    limit log output to the last number of entries

  - \--next \<arg\>

    limit log output to the next number of entries

  - \--no-merges / --merges

    exclude merges when printing logs

  - \--to \<arg\> / --clear-to

    revision(s) to stop logging at

- **automate lua** LUA\_FUNCTION \[ARG1 \[ARG2 \[...\]\]\]

  Executes the given lua function and returns the result.

- **automate packet\_for\_fdata** FILEID

  Prints the file data in packet format.

- **automate packet\_for\_fdelta** OLD\_FILE NEW\_FILE

  Prints the file delta in packet format.

- **automate packet\_for\_rdata** REVID

  Prints the revision data in packet format.

- **automate packets\_for\_certs** REVID

  Prints the certs associated with a revision in packet format.

- **automate parents** REV

  Prints the parents of a revision.

- **automate pull** \[URI\]

  - **automate pull** \[ADDRESS\[:PORTNUMBER\] \[PATTERN ...\]\]

  Pulls branches from a netsync server.

  - \--dry-run / --no-dry-run

    don't perform the operation, just show what would have happened

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--set-default / --no-set-default

    use the current netsync arguments and options as the future default

- **automate push** \[URI\]

  - **automate push** \[ADDRESS\[:PORTNUMBER\] \[PATTERN ...\]\]

  Pushes branches to a netsync server.

  - \--dry-run / --no-dry-run

    don't perform the operation, just show what would have happened

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--key-to-push \<arg\>

    push the specified key even if it hasn't signed anything

  - \--set-default / --no-set-default

    use the current netsync arguments and options as the future default

- **automate put\_file** \[FILEID\] CONTENTS

  Stores a file in the database.

- **automate put\_public\_key** KEY-PACKET-DATA

  Store the public key in the database.

- **automate put\_revision** REVISION-DATA

  Stores a revision into the database.

- **automate read\_packets** PACKET-DATA

  Load the given packets into the database.

- **automate remote** COMMAND \[ARGS\]

  Executes COMMAND on a remote server.

  - \--remote-stdio-host \<arg\>

    sets the host (and optionally the port) for a remote netsync action

  - \--set-default / --no-set-default

    use the current netsync arguments and options as the future default

- **automate remote\_stdio** \[URI\]

  - **automate remote\_stdio** \[ADDRESS\[:PORTNUMBER\]\]

  Opens an 'automate stdio' connection to a remote server.

  - \--set-default / --no-set-default

    use the current netsync arguments and options as the future default

- **automate roots**

  Lists the roots of the revision graph.

- **automate select** SELECTOR

  Lists the revisions that match a selector.

- **automate set\_attribute** PATH KEY VALUE

  Sets an attribute on a certain path.

- **automate set\_db\_variable** DOMAIN NAME VALUE

  Sets a database variable.

- **automate show\_conflicts** \[LEFT\_REVID RIGHT\_REVID\]

  Shows the conflicts between two revisions. If no arguments are given, LEFT\_REVID and RIGHT\_REVID default to the first two heads that would be chosen by the 'merge' command.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--ignore-suspend-certs / --no-ignore-suspend-certs

    do not ignore revisions marked as suspended

- **automate stdio**

  Automates several commands in one run.

  - \--automate-stdio-size \<arg\>

    block size in bytes for 'automate stdio' output

- **automate sync** \[URI\]

  - **automate sync** \[ADDRESS\[:PORTNUMBER\] \[PATTERN ...\]\]

  Synchronizes branches with a netsync server.

  - \--dry-run / --no-dry-run

    don't perform the operation, just show what would have happened

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--key-to-push \<arg\>

    push the specified key even if it hasn't signed anything

  - \--set-default / --no-set-default

    use the current netsync arguments and options as the future default

- **automate tags** \[BRANCH\_PATTERN\]

  Prints all tags attached to a set of branches.

- **automate toposort** \[REV1 \[REV2 \[REV3 \[...\]\]\]\]

  Topologically sorts a list of revisions.

- **automate update**

  Updates the workspace.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

### command group 'database'

Commands that manipulate the database.

- **db changesetify**

  Converts the database to the changeset format.

- **db check**

  Does some sanity checks on the database. Ensures that the database is consistent by issuing multiple checks.

- **db dump**

  Dumps the contents of the database. Generates a list of SQL instructions that represent the whole contents of the database.  The resulting output is useful to later restore the database from a text file that serves as a backup.

- **db execute**

  Executes an SQL command on the database. Directly executes the given SQL command on the database

- **db fix\_certs**

  Attempt to fix bad certs. Older monotone versions could sometimes associate certs with the wrong key. This fixes such certs if you have the correct key, and can optionally drop any certs that you don't have the correct key for. This should only be needed if you had such certs in your db when upgrading from 0.44 or earlier, or if you loaded such certs with 'mtn read'.

  - \--drop-bad-certs

    drop certs signed by keys we don't know about

- **db info**

  Shows information about the database.

  - \--full / --concise

    print detailed information

- **db init**

  Initializes a database. Creates a new database file and initializes it.

- **db load**

  Loads the contents of the database. Reads a list of SQL instructions that regenerate the contents of the database.  This is supposed to be used in conjunction with the output generated by the 'dump' command.

- **db migrate**

  Migrates the database to a newer schema. Updates the database's internal schema to the most recent one.  Needed to automatically resolve incompatibilities that may be introduced in newer versions of monotone.

- **db regenerate\_caches**

  Regenerates the caches stored in the database.

- **db rosterify**

  Converts the database to the rosters format.

  - \--drop-attr \<arg\>

    when rosterifying, drop attrs entries with the given key

- **db set\_epoch** BRANCH EPOCH

  Sets the branch's epoch.

- **db version**

  Shows the database's version.

- **local kill\_certs** SELECTOR CERTNAME \[CERTVAL\]

  Deletes the specified certs from the local database. Deletes all certs which are on the given revision(s) and have the given name and if a value is specified then also the given value.

- **local kill\_revision** REVID

  Kills a revision from the local database.

### command group 'debug'

Commands that aid in program debugging.

- **asciik** SELECTOR

  Prints an ASCII representation of the revisions' graph.

- **fdiff** SRCNAME DESTNAME SRCID DESTID

  Differences 2 files and outputs the result.

  - \--context

    use context diff format

  - \--diff-args \<arg\>

    argument to pass external diff hook

  - \--external

    use external diff hook for generating diffs

  - \--no-show-encloser / --show-encloser

    do not show the function containing each block of changes

  - \--reverse

    reverse order of diff

  - \--unified

    use unified diff format

  - \--with-header / --without-header

    show the matching cset in the diff header

- **fload**

  Loads a file's contents into the database.

- **fmerge** PARENT\_FILEID LEFT\_FILEID RIGHT\_FILEID

  Merges 3 files and outputs the result.

- **get\_roster** \[REVID\]

  Dumps the roster associated with a given identifier. If no REVID is given, the workspace is used.

- **identify** \[PATH\]

  Calculates the identity of a file or stdin. If any PATH is given, calculates their identity; otherwise, the one from the standard input is calculated.

- **rcs\_import** RCSFILE...

  Parses versions in RCS files. This command doesn't reconstruct or import revisions.  You probably want to use cvs\_import.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

### command group 'informative'

Commands for information retrieval.

- **annotate** PATH

  Prints an annotated copy of a file. Calculates and prints an annotated copy of the given file from the specified REVISION.

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

  - \--revs-only

    annotate using full revision ids only

- **bisect bad**

  Marks the current revision or specified revisions as bad. Known bad revisions are removed from the set being searched.

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **bisect good**

  Marks the current revision or specified revisions as good. Known good revisions are removed from the set being searched.

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **bisect reset**

  Reset the current bisection search. Update the workspace back to the revision from which the bisection was started and remove all current search information, allowing a new search to be started.

- **bisect skip**

  Excludes the current revision or specified revisions from the search. Skipped revisions are removed from the set being searched. Revisions that cannot be tested for some reason should be skipped.

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **bisect status**

  Reports on the current status of the bisection search. Lists the total number of revisions in the search set, the number of revisions that have been determined to be good or bad, the number of revisions that have been skipped and the number of revisions remaining to be tested.

- **bisect update**

  Updates the workspace to the next revision to be tested by bisection. This command can be used if updates by good, bad or skip commands fail due to blocked paths or other problems.

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

- **cat** FILENAME

  Prints a file from the database. Fetches the given file FILENAME from the database and prints it to the standard output.

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **complete** (revision\|file\|key) PARTIAL-ID

  Completes a partial identifier.

- **di** \[PATH\]...

  - **diff** \[PATH\]...

  Shows current differences. Compares the current tree with the files in the repository and prints the differences on the standard output. If one revision is given, the diff between the workspace and that revision is shown.  If two revisions are given, the diff between them is given.  If no format is specified, unified is used by default.

  - \--context

    use context diff format

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--diff-args \<arg\>

    argument to pass external diff hook

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--external

    use external diff hook for generating diffs

  - \--no-show-encloser / --show-encloser

    do not show the function containing each block of changes

  - \--reverse

    reverse order of diff

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

  - \--unified

    use unified diff format

  - \--with-header / --without-header

    show the matching cset in the diff header

- **help** command \[ARGS...\]

  Displays help about commands and options.

  - \--hidden / --no-hidden

    show hidden commands and options

- **list branches** \[PATTERN\]

  Lists branches in the database that match a pattern.

  - \--exclude \<arg\>

    leave out anything described by its argument

- **list certs** REVID

  Lists certificates attached to a revision.

- **list changed** \[PATH...\]

  Lists files that have changed with respect to the current revision.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

- **list databases**

  - **list dbs**

  Lists managed databases and their known workspaces.

- **list duplicates**

  Lists duplicate files in the specified revision. If no revision is specified, use the workspace.

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **list epochs** \[BRANCH \[...\]\]

  Lists the current epoch of branches that match a pattern.

- **list ignored** \[PATH\]

  Lists workspace files that are ignored in the current branch.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--recursive \[ -R \] / --no-recursive

    also operate on the contents of any listed directories

- **list keys** \[PATTERN\]

  Lists keys that match a pattern.

- **list known**

  Lists workspace files that belong to the current branch.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

- **list missing**

  Lists files that belong to the branch but are not in the workspace.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

- **list tags** \[PATTERN\]

  Lists all tags in the database.

  - \--exclude \<arg\>

    leave out anything described by its argument

- **list unknown** \[PATH\]

  Lists workspace files that are unknown in the current branch.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--recursive \[ -R \] / --no-recursive

    also operate on the contents of any listed directories

- **list vars** \[DOMAIN\]

  Lists variables in the whole database or a domain.

- **list workspaces**

  Lists known workspaces of a specified database.

- **log** \[PATH\] ...

  Prints selected history in forward or reverse order. This command prints selected history in forward or reverse order, filtering it by PATH if given.

  - \--brief / --no-brief

    print a brief version of the normal output

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--diffs / --no-diffs

    print diffs along with logs

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--from \<arg\> / --clear-from

    revision(s) to start logging at

  - \--last \<arg\>

    limit log output to the last number of entries

  - \--next \<arg\>

    limit log output to the next number of entries

  - \--no-files / --files

    exclude files when printing logs

  - \--no-graph / --graph

    do not use ASCII graph to display ancestry

  - \--no-merges / --merges

    exclude merges when printing logs

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

  - \--to \<arg\> / --clear-to

    revision(s) to stop logging at

- **manpage**

  Generate a manual page from monotone's command help.

  - \--formatted / --plain

    automatically run the output through nroff (default if the output is a terminal)

  - \--hidden / --no-hidden

    show hidden commands and options

- **show\_conflicts** REV REV

  Shows what conflicts need resolution between two revisions. The conflicts are calculated based on the two revisions given in the REV parameters.

- **status** \[PATH\]...

  Shows workspace's status information.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

- **version**

  Shows the program version.

  - \--full / --concise

    print detailed information

### command group 'key\_and\_cert'

Commands to manage keys and certificates.

- **cert** SELECTOR CERTNAME \[CERTVAL\]

  Creates a certificate for a revision or set of revisions. Creates a certificate with the given name and value on each revision that matches the given selector

- **dropkey** KEY\_NAME\_OR\_HASH

  Drops a public and/or private key.

- **genkey** KEY\_NAME

  Generates an RSA key-pair.

  - \--force-duplicate-key

    force genkey to not error out when the named key already exists

- **passphrase** KEY\_NAME\_OR\_HASH

  Changes the passphrase of a private RSA key.

- **ssh\_agent\_add**

  Adds a private key to ssh-agent.

- **ssh\_agent\_export** \[FILENAME\]

  Exports a private key for use with ssh-agent.

- **trusted** REVISION NAME VALUE SIGNER1 \[SIGNER2 \[...\]\]

  Tests whether a hypothetical certificate would be trusted. The current settings are used to run the test.

### command group 'network'

Commands that access the network.

- **clone** URI \[DIRECTORY\]

  - **clone** HOST\[:PORTNUMBER\] BRANCH \[DIRECTORY\]

  Checks out a revision from a remote database into a directory. If a revision is given, that's the one that will be checked out.  Otherwise, it will be the head of the branch supplied.  If no directory is given, the branch name will be used as directory

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **pull** \[URI\]

  - **pull** \[ADDRESS\[:PORTNUMBER\] \[PATTERN ...\]\]

  Pulls branches from a netsync server. This pulls all branches that match the pattern given in PATTERN from the netsync server at the address ADDRESS.

  - \--dry-run / --no-dry-run

    don't perform the operation, just show what would have happened

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--set-default / --no-set-default

    use the current netsync arguments and options as the future default

  - \--update / --no-update

    automatically update the workspace, if it was at a head and the command creates a new head

- **push** \[URI\]

  - **push** \[ADDRESS\[:PORTNUMBER\] \[PATTERN ...\]\]

  Pushes branches to a netsync server. This will push all branches that match the pattern given in PATTERN to the netsync server at the address ADDRESS.

  - \--dry-run / --no-dry-run

    don't perform the operation, just show what would have happened

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--key-to-push \<arg\>

    push the specified key even if it hasn't signed anything

  - \--set-default / --no-set-default

    use the current netsync arguments and options as the future default

- **serve**

  Serves the database to connecting clients.

  - \--bind \<arg\>

    address:port to listen on (default :4691)

  - \--pid-file \<arg\> / --no-pid-file

    record process id of server

- **sync** \[URI\]

  - **sync** \[ADDRESS\[:PORTNUMBER\] \[PATTERN ...\]\]

  Synchronizes branches with a netsync server. This synchronizes branches that match the pattern given in PATTERN with the netsync server at the address ADDRESS.

  - \--dry-run / --no-dry-run

    don't perform the operation, just show what would have happened

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--key-to-push \<arg\>

    push the specified key even if it hasn't signed anything

  - \--set-default / --no-set-default

    use the current netsync arguments and options as the future default

  - \--update / --no-update

    automatically update the workspace, if it was at a head and the command creates a new head

### command group 'packet\_io'

Commands for packet reading and writing.

- **privkey** KEY\_NAME\_OR\_HASH

  Prints a private key packet.

- **pubkey** KEY\_NAME\_OR\_HASH

  Prints a public key packet.

- **read** \[FILE1 \[FILE2 \[...\]\]\]

  Reads packets from files. If no files are provided, the standard input is used.

### command group 'review'

Commands to review revisions.

- **approve** REVISION

  Approves a particular revision.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--update / --no-update

    automatically update the workspace, if it was at a head and the command creates a new head

- **comment** REVISION \[COMMENT\]

  Comments on a particular revision.

- **disapprove** \[PARENT-REVISION\] CHILD-REVISION

  Disapproves a particular revision or revision range.

  - \--author \<arg\>

    override author for commit

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--date \<arg\>

    override date/time for commit

  - \--message \[ -m \] \<arg\>

    set commit changelog message

  - \--message-file \<arg\>

    set filename containing commit changelog message

  - \--update / --no-update

    automatically update the workspace, if it was at a head and the command creates a new head

- **suspend** REVISION

  Suspends a particular revision.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--update / --no-update

    automatically update the workspace, if it was at a head and the command creates a new head

- **tag** REVISION TAGNAME

  Puts a symbolic tag certificate on a revision.

- **testresult** REV (pass\|fail\|true\|false\|yes\|no\|1\|0)

  Notes the results of running a test on a revision.

### command group 'tree'

Commands to manipulate the tree.

- **checkout** \[DIRECTORY\]

  - **co** \[DIRECTORY\]

  Checks out a revision from the database into a directory. If a revision is given, that's the one that will be checked out.  Otherwise, it will be the head of the branch (given or implicit).  If no directory is given, the branch name will be used as directory.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **conflicts clean**

  Delete any bookkeeping files related to conflict resolution.

- **conflicts resolve\_first** RESOLUTION

  Set the resolution for the first unresolved single-file conflict.. Use 'mtn conflicts show\_first' to see possible resolutions.

  - \--conflicts-file \<arg\>

    file in which to store conflicts

- **conflicts resolve\_first\_left** RESOLUTION

  Set the left resolution for the first unresolved two-file conflict.

  - \--conflicts-file \<arg\>

    file in which to store conflicts

- **conflicts resolve\_first\_right** RESOLUTION

  Set the right resolution for the first unresolved two-file conflict.

  - \--conflicts-file \<arg\>

    file in which to store conflicts

- **conflicts show\_first**

  Show the first unresolved conflict in the conflicts file, and possible resolutions.

  - \--conflicts-file \<arg\>

    file in which to store conflicts

- **conflicts show\_remaining**

  Show the remaining unresolved conflicts in the conflicts file.

  - \--conflicts-file \<arg\>

    file in which to store conflicts

- **conflicts store** \[LEFT\_REVID RIGHT\_REVID\]

  Store the conflicts from merging two revisions. If no arguments are given, LEFT\_REVID and RIGHT\_REVID default to the first two heads that would be chosen by the 'merge' command. If '--conflicts-file' is not given, '\_MTN/conflicts' is used.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--conflicts-file \<arg\>

    file in which to store conflicts

- **explicit\_merge** LEFT-REVISION RIGHT-REVISION DEST-BRANCH

  Merges two explicitly given revisions. The results of the merge are placed on the branch specified by DEST-BRANCH.

  - \--author \<arg\>

    override author for commit

  - \--date \<arg\>

    override date/time for commit

  - \--message \[ -m \] \<arg\>

    set commit changelog message

  - \--message-file \<arg\>

    set filename containing commit changelog message

  - \--resolve-conflicts / --no-resolve-conflicts

    specify conflict resolutions in a file, instead of interactively

  - \--resolve-conflicts-file \<arg\>

    use file to resolve conflicts

  - \--update / --no-update

    automatically update the workspace, if it was at a head and the command creates a new head

- **heads**

  Shows unmerged head revisions of a branch.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

- **import** DIRECTORY

  Imports the contents of a directory into a branch.

  - \--author \<arg\>

    override author for commit

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--date \<arg\>

    override date/time for commit

  - \--dry-run / --no-dry-run

    don't perform the operation, just show what would have happened

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--message \[ -m \] \<arg\>

    set commit changelog message

  - \--message-file \<arg\>

    set filename containing commit changelog message

  - \--no-respect-ignore / --respect-ignore

    do not ignore any files

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **merge**

  Merges unmerged heads of a branch.

  - \--author \<arg\>

    override author for commit

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--date \<arg\>

    override date/time for commit

  - \--message \[ -m \] \<arg\>

    set commit changelog message

  - \--message-file \<arg\>

    set filename containing commit changelog message

  - \--resolve-conflicts / --no-resolve-conflicts

    specify conflict resolutions in a file, instead of interactively

  - \--resolve-conflicts-file \<arg\>

    use file to resolve conflicts

  - \--update / --no-update

    automatically update the workspace, if it was at a head and the command creates a new head

- **merge\_into\_dir** SOURCE-BRANCH DEST-BRANCH DIR

  Merges one branch into a subdirectory in another branch.

  - \--author \<arg\>

    override author for commit

  - \--date \<arg\>

    override date/time for commit

  - \--message \[ -m \] \<arg\>

    set commit changelog message

  - \--message-file \<arg\>

    set filename containing commit changelog message

  - \--resolve-conflicts / --no-resolve-conflicts

    specify conflict resolutions in a file, instead of interactively

  - \--resolve-conflicts-file \<arg\>

    use file to resolve conflicts

  - \--update / --no-update

    automatically update the workspace, if it was at a head and the command creates a new head

- **merge\_into\_workspace** OTHER-REVISION

  Merges a revision into the current workspace's base revision. Merges OTHER-REVISION into the current workspace's base revision, and update the current workspace with the result.  There can be no pending changes in the current workspace.  Both OTHER-REVISION and the workspace's base revision will be recorded as parents on commit.  The workspace's selected branch is not changed.

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

- **migrate\_workspace** \[DIRECTORY\]

  Migrates a workspace directory's metadata to the latest format. If no directory is given, defaults to the current workspace.

- **propagate** SOURCE-BRANCH DEST-BRANCH

  Merges from one branch to another asymmetrically.

  - \--author \<arg\>

    override author for commit

  - \--date \<arg\>

    override date/time for commit

  - \--message \[ -m \] \<arg\>

    set commit changelog message

  - \--message-file \<arg\>

    set filename containing commit changelog message

  - \--resolve-conflicts / --no-resolve-conflicts

    specify conflict resolutions in a file, instead of interactively

  - \--resolve-conflicts-file \<arg\>

    use file to resolve conflicts

- **refresh\_inodeprints**

  Refreshes the inodeprint cache.

- **setup** \[DIRECTORY\]

  Sets up a new workspace directory. If no directory is specified, uses the current directory.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

### command group 'variables'

Commands to manage persistent variables.

- **cleanup\_workspace\_list**

  Removes all invalid, registered workspace paths for the current database.

- **register\_workspace** \[WORKSPACE\_PATH\]

  Registers a new workspace for the current database. This command adds WORKSPACE\_PATH to the list of \`known-workspaces'.

- **set** DOMAIN NAME VALUE

  Sets a database variable. This command modifies (or adds if it did not exist before) the variable named NAME, stored in the database, and sets it to the given value in VALUE.  The variable is placed in the domain DOMAIN.

- **unregister\_workspace** \[WORKSPACE\_PATH\]

  Unregisters an existing workspace for the current database. This command removes WORKSPACE\_PATH to the list of \`known-workspaces'.

- **unset** DOMAIN NAME

  Unsets a database variable. This command removes the variable NAME from domain DOMAIN, which was previously stored in the database.

### command group 'vcs'

Commands for interaction with other version control systems.

- **cvs\_import** CVSROOT

  Imports all versions in a CVS repository.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

- **git\_export**

  Produces a git fast-export data stream on stdout.

  - \--authors-file \<arg\>

    file mapping author names from original to new values

  - \--branches-file \<arg\>

    file mapping branch names from original to new values

  - \--export-marks \<arg\>

    save the internal marks table after exporting revisions

  - \--import-marks \<arg\>

    load the internal marks table before exporting revisions

  - \--log-certs / --no-log-certs

    include standard cert values in commit logs

  - \--log-revids / --no-log-revids

    include revision ids in commit logs

  - \--refs \<arg\>

    include git refs for 'revs', 'roots' or 'leaves'

  - \--use-one-changelog

    use only one changelog cert for the git commit message

### command group 'workspace'

Commands that deal with the workspace.

- **add** \[PATH\]...

  Adds files to the workspace.

  - \--no-respect-ignore / --respect-ignore

    do not ignore any files

  - \--recursive \[ -R \] / --no-recursive

    also operate on the contents of any listed directories

  - \--unknown / --no-unknown

    perform the operations for unknown files from workspace

- **attr drop** PATH \[ATTR\]

  Removes attributes from a file. If no attribute is specified, this command removes all attributes attached to the file given in PATH.  Otherwise only removes the attribute specified in ATTR.

- **attr get** PATH \[ATTR\]

  Gets the values of a file's attributes. If no attribute is specified, this command prints all attributes attached to the file given in PATH.  Otherwise it only prints the attribute specified in ATTR.

- **attr set** PATH ATTR VALUE

  Sets an attribute on a file. Sets the attribute given on ATTR to the value specified in VALUE for the file mentioned in PATH.

- **ci** \[PATH\]...

  - **commit** \[PATH\]...

  Commits workspace changes to the database.

  - \--author \<arg\>

    override author for commit

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--date \<arg\>

    override date/time for commit

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--message \[ -m \] \<arg\>

    set commit changelog message

  - \--message-file \<arg\>

    set filename containing commit changelog message

- **drop** \[PATH\]...

  - **rm** \[PATH\]...

  Drops files from the workspace.

  - \--bookkeep-only

    only update monotone's internal bookkeeping, not the filesystem

  - \--missing

    perform the operations for files missing from workspace

  - \--recursive \[ -R \] / --no-recursive

    also operate on the contents of any listed directories

- **mkdir** \[DIRECTORY...\]

  Creates directories and adds them to the workspace.

  - \--no-respect-ignore / --respect-ignore

    do not ignore any files

- **pivot\_root** NEW\_ROOT PUT\_OLD

  Renames the root directory. After this command, the directory that currently has the name NEW\_ROOT will be the root directory, and the directory that is currently the root directory will have name PUT\_OLD. Use of '--bookkeep-only' is NOT recommended.

  - \--bookkeep-only

    only update monotone's internal bookkeeping, not the filesystem

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

- **pluck** \[PATH...\]

  Applies changes made at arbitrary places in history. This command takes changes made at any point in history, and edits your current workspace to include those changes.  The end result is identical to 'mtn diff -r FROM -r TO \| patch -p0', except that this command uses monotone's merger, and thus intelligently handles renames, conflicts, and so on. If one revision is given, applies the changes made in that revision compared to its parent. If two revisions are given, applies the changes made to get from the first revision to the second.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

- **mv** SRC DEST

  - **mv** SRC1 \[SRC2 \[...\]\] DEST\_DIR

  - **rename** SRC DEST

  - **rename** SRC1 \[SRC2 \[...\]\] DEST\_DIR

  Renames entries in the workspace.

  - \--bookkeep-only

    only update monotone's internal bookkeeping, not the filesystem

- **revert** \[PATH\]...

  Reverts files and/or directories. In order to revert the entire workspace, specify '.' as the file name.

  - \--depth \<arg\>

    limit the number of levels of directories to descend

  - \--exclude \<arg\>

    leave out anything described by its argument

  - \--missing

    perform the operations for files missing from workspace

- **undrop** PATH...

  Reverses a mistaken 'drop'. If the file was deleted from the workspace, this is the same as 'revert'. Otherwise, it just removes the 'drop' from the manifest.

- **update**

  Updates the workspace. This command modifies your workspace to be based off of a different revision, preserving uncommitted changes as it does so.  If a revision is given, update the workspace to that revision.  If not, update the workspace to the head of the branch.

  - \--branch \[ -b \] \<arg\>

    select branch cert for operation

  - \--move-conflicting-paths / --no-move-conflicting-paths

    move conflicting, unversioned paths into '\_MTN/resolutions' before proceeding with any workspace change

  - \--revision \[ -r \] \<arg\>

    select revision id for operation

## SEE ALSO

info mtn and the documentation on **http://www.monotone.ca/docs**

## BUGS

Please report bugs to **https://code.monotone.ca/p/monotone/issues/**.

## AUTHORS

monotone was written originally by Graydon Hoare \<graydon@pobox.com\> in 2003 and has since then received numerous contributions from many individuals. A complete list of authors can be found in AUTHORS.

Nowadays, monotone is maintained by a collective of enthusiastic programmers, known as the monotone development team.

## COPYRIGHT

monotone and this man page is Copyright (c) 2003 - 2016 by the monotone development team.
