Notices: This section not yet converted to new layout. Download stats are rolling back out.



Package test results are passing.

Private CDN cached downloads available for licensed customers. Never experience 404 breakages again! Learn more...

This package was approved by moderator ferventcoder on 12/28/2015.

Monotone (mtn) is a distributed version control tool. 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. It provides a simple, single-file transactional version store, with fully disconnected operation and an efficient peer-to-peer synchronization protocol. It understands history-sensitive merging, lightweight branches, integrated code review and 3rd party testing. It uses cryptographic version naming and client-side RSA certificates. It has good internationalization support, runs on Linux, Solaris, Mac OS X, Windows, and other unixes, and is licensed under the GNU GPL.


  • Store multiple versions of files you are working on efficiently.
  • Transmit changes to files between you and your colleagues.
  • Merge changes you make with those your colleagues make.
  • Make notes about your opinion of the quality of versions of files.
  • Make decisions about using or ignoring versions, depending on the notes you receive from others.

Please be aware that monotone is a slightly unorthodox version control tool, and many of its concepts are similar — but subtly or significantly different — from concepts with similar names in other version control tools.

To install Monotone, run the following command from the command line or from PowerShell:

C:\> choco install mtn

To upgrade Monotone, run the following command from the command line or from PowerShell:

C:\> choco upgrade mtn


  • tools\chocolateyInstall.ahk Show
    ; default environment
    DetectHiddenWindows, off
    SetControlDelay, 20
    ; modified environment
    DetectHiddenText, off
    SetTitleMatchMode, 2
    ; variables
    winTitle = monotone documentation: Top -  
    WinWait, %winTitle%, , 180
       KeyWait Control
       KeyWait Shift
       BackupClipbrd := Clipboard
       Sleep 50
       Send !d  ;Select the url
       Sleep 150
       Send ^c  ;Copy the url
       ClipWait 0.1
        Clipboard := BackupClipbrd
      If Clipboard Contains monotone/documentation/html/index.html
        Send, ^w
       Clipboard := BackupClipbrd
  • tools\chocolateyInstall.ps1 Show
    $packageName = 'mtn'
    $installerType = 'exe'
    $url = ''
    $checksum = '29f45b2a1a233a3b09e6041ebaf09c07a9cba361'
    $checksumType = 'sha1'
    $validExitCodes = @(0)
    Write-Verbose "Starting AutoHotKey for assistance in silent and/or automated install"
    Write-Verbose "Actively using the computer while AutoHotKey is running may interfere with automation"
    $scriptPath = Split-Path -parent $MyInvocation.MyCommand.Definition
    $ahkFile = Join-Path $scriptPath "chocolateyInstall.ahk"
    $ahkExe = 'AutoHotKey'
    Start-Process $ahkExe $ahkFile
    Install-ChocolateyPackage -PackageName "$packageName" `
                              -FileType "$installerType" `
                              -SilentArgs "$silentArgs" `
                              -Url "$url" `
                              -ValidExitCodes $validExitCodes `
                              -Checksum "$checksum" `
                              -ChecksumType "$checksumType"
    Write-Verbose "Querying registry for install location..."
    $packageSearch = "monotone *"
    $regKey = Get-ItemProperty -Path @('HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
                                       'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*') `
                               -ErrorAction:SilentlyContinue `
              | Where-Object {$_.DisplayName -like $packageSearch}
    $binPath = Join-Path $regKey.InstallLocation "bin"
    if ($binPath) {
      Write-Verbose "Adding `"$binPath`" to path environment variable..."
      Install-ChocolateyPath $binPath 'Machine'
  • tools\chocolateyUninstall.ps1 Show
    $packageName = 'mtn'
    $packageSearch = "monotone *"
    $installerType = 'exe'
    $validExitCodes = @(0,3010)
    $toolsPath = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
    $unPath = Join-Path $toolsPath 'Uninstall-ChocolateyPath.psm1'
    Write-Verbose "Querying registry for install key..."
    $regKey = Get-ItemProperty -Path @('HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
                                       'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*') `
                               -ErrorAction:SilentlyContinue `
              | Where-Object {$_.DisplayName -like $packageSearch}
    Write-Verbose "Uninstalling $packageName and removing package..."
    $regKey | ForEach-Object {
      Uninstall-ChocolateyPackage -PackageName "$packageName" `
                                  -FileType "$installerType" `
                                  -SilentArgs "$($silentArgs)" `
                                  -File "$($_.UninstallString)" `
                                  -ValidExitCodes $validExitCodes }
    Write-Verbose "Removing from path..."
    $binPath = Join-Path $regKey.InstallLocation "bin"
    Import-Module $unPath
    Uninstall-ChocolateyPath $binPath 'Machine' 
  • tools\Uninstall-ChocolateyPath.psm1 Show
    function Uninstall-ChocolateyPath {
      [string] $pathToUninstall,
      [System.EnvironmentVariableTarget] $pathType = [System.EnvironmentVariableTarget]::User
      Write-Debug "Running 'Uninstall-ChocolateyPath' with pathToUninstall:`'$pathToUninstall`'";
      #get the PATH variable
      $envPath = $env:PATH
      #$envPath = [Environment]::GetEnvironmentVariable('Path', $pathType)
      if (!$envPath.ToLower().Contains($pathToUninstall.ToLower())) {
        Write-Host "PATH environment variable does not have $pathToUninstall in it."
      Write-Host "PATH environment variable has $pathToUninstall in it. Removing..."
      $actualPath = [Environment]::GetEnvironmentVariable('Path', $pathType)
      # escape regex metachars, match possible backslash and item separator at eol
      $pathToUninstallRegex = ($pathToUninstall -replace '([\\().])', '\$1') + '\\?(;|$)'
      # remove pathToUninstall from actualPath
      $actualPath = $actualPath -replace "$pathToUninstallRegex", ''
      if ($pathType -eq [System.EnvironmentVariableTarget]::Machine) {
        $psArgs = "[Environment]::SetEnvironmentVariable('Path',`'$actualPath`', `'$pathType`')"
        Start-ChocolateyProcessAsAdmin "$psArgs"
      } else {
        [Environment]::SetEnvironmentVariable('Path', $actualPath, $pathType)
      # remove from path of current powershell session
      $envPSPath = $env:PATH
      $env:Path = $envPSPath -replace "$pathToUninstallRegex", ''

Virus Scan Results

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.


Package Maintainer(s)

Software Author(s)

  • Monotone Team


© 2003 Monotone Team


Release Notes



  • Automatically built and uploaded by dtgm

Version History

Version Downloads Last updated Status

Discussion for the Monotone Package

Ground rules:

  • This discussion is only about Monotone and the Monotone package. If you have feedback for Chocolatey, please contact the google group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or Monotone, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.

comments powered by Disqus uses cookies to enhance the user experience of the site.