<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>monotone - distributed version control</title>
        <link>http://monotone.ca/releases.xml</link>
        <description>monotone releases with links to the sources.</description>
        <language>en</language>
        <pubDate>Sun, 17 Jan 2010 21:40:00 +0000</pubDate>
        <item>
            <title>monotone 0.46 released</title>
            <description>
<![CDATA[
<h2>Changes</h2>

<ul>
<li>"automate stdio" (and "automate remote_stdio", see below)
  use separate streams to encode out-of-band information like
  informational messages, warnings or tickers. A special
  "header" section has been added to the standard output to
  identify future stdio version changes. The error codes used
  in the output of both stdio and remote_stdio, have also
  slightly changed: errors which are the result of a wrong
  call (unknown command, invalid options, parsing errors, ...)
  are returned with code 1, while errors which happened while
  the actual command executed are returned with code 2. Error
  codes are no longer echoed with every packet, but only as
  the payload of the final 'l' ("last") packet.
  <br /><br />
  Please consult the manual section "mtn automate stdio" for a
  detailed description of the new format.</li>

<li>The 'heads' command should be significantly faster now (not
  that it was particularly slow before). This probably isn't
  terribly noticable unless you're in the habit of using "h:*"
  (heads of all branches) as a selector, it's primarily meant
  to enable future changes that will depend on fast 'heads'.
  <br /> <br />
  The database schema has been changed, so you will need to
  run 'mtn db migrate' (preferably after making a backup copy
  of your db).</li>

<li>the 'status' command now includes the current (to be committed)
  revision number and will indicate when the branch option in
  _MTN/options has been changed and does not match one of the
  revision's parent branches.</li>

<li>Cert labels in the output of the 'log' command are now
  localized.</li>
</ul>

<h2>New features</h2>

<ul>
<li>There's a new command "automate remote_stdio" that makes it
  possible to execute automate commands on a remote server
  (for example, to permit a single database to be used both
  for serving netsync connections and for running a viewmtn
  instance). This requires that the server be running monotone
  0.46 or later. Access control on the server uses a new lua
  hook "get_remote_automate_permitted(identity, command_line,
  options)".</li>

<li>There's also a new command "automate remote" that's very much
  the same, but executes only a single command and does not
  stdio-encode the output.</li>

<li>A new 'bisect' command has been added to allow searching for a
  specific revision within a range of revisions. This can be useful for
  locating the exact revision that broke something or removed a
  particular feature.</li>

<li>Three new commands - 'push', 'pull' and 'sync' - have been added
  to the automation interface. They work just as their non-automate
  counterparts.</li>

<li>The global option '--timestamps' has been added which prefixes
  the current local timestamp before diagnostic messages such as
  warnings, progress messages, errors and tickers.  For example,
  this option can be used to log the date and time when clients
  connect to a monotone server.</li>
</ul>

<h2>Bugs fixed</h2>

<ul>
<li>A regression from 0.45's key migration prevented the proper
  output of the `committer` field in 'git_export'.</li>

<li>'db info --full' no longer crashes when executed on a database
  with only one revision.</li>

<li>The mtn_automate Lua function which can be used for custom
  commands now properly handles binary data.</li>

<li>`db info` now returns a correct byte count for certs again.</li>

<li>If a public key was read in via the `read` or
  `automate read_packets`, an invariant was triggered if the
  key was already existing in the database. This has been fixed.</li>

<li>`annotate` no longer crashes if the annotated file is empty.</li>
</ul>

<h2>Other</h2>

<ul>
<li>Added the script of the Lua-based contributed Monotone
  extension command "mtn remote_export" to contrib/command/
  with which a remote revision can be exported locally without
  having to fetch all of the history before.</li>
</ul>
]]>
            </description>
            <pubDate>Sun, 17 Jan 2010 21:40:00 +0000</pubDate>
            <enclosure url="http://monotone.ca/downloads/0.46/monotone-0.46.tar.gz" length="4568806" type="application/octet-stream"/>
        </item>
        <item>
            <title>monotone 0.45 released</title>
            <description>
<![CDATA[
<h2>Changes</h2>

<ul>
<li>Certs now link to the key that signed them by the key's
hash, instead of its name.  This should provide some
security and usability improvements.
<br /><br />
The database schema has been changed, so you will need to
run 'mtn db migrate' (preferably after making a backup copy
of your db).
<br /><br />
The netsync protocol version has also changed. However, we
found space to implement full protocol version negotiation,
so no flag day is needed.  If your particular project has a
situation where there are multiple keys with the same name,
you will receive errors when trying to sync certs signed by
those keys to older netsync peers.
<br /><br />
A number of commands have slightly different output now,
particularly 'ls certs', 'ls tags', 'automate keys',
'automate tags' and 'automate certs'.  There is a new Lua
hook associated with these changes,
'get_local_key_name(identity)', and all Lua hooks that used
to take a key name as an argument now instead take a table
with several fields.
<br /><br />
Commands which previously accepted a key name now also
accept the key's hash or local name, which is a local alias
for equally named keys.  'read-permissions' and
'write-permissions' accept either the key name or the hash.
<br /><br />
There is also a new 'db fix_certs' command which fixes wrong
key assignments in migrated databases if you have the correct
key available.</li>

<li>The 'resolved_user' conflict resolution is no longer
reported by 'automate show_conflicts' for file content
conflicts; 'resolved_user_left' is used instead.</li>

<li>'format_version' was removed from 'automate tags' and
'automate get_attributes' which both do not need this
additional versioning information.</li>
</ul>

<h2>New features</h2>

<ul>
<li>The 'log' command now, by default, converts all dates it
prints to your timezone instead of leaving them in UTC, and
uses a somewhat more friendly format for the dates.
<br /><br />
You can customize the date format with the new
"get_date_format_spec" Lua hook, which returns a strftime(3)
format string.  You can also override the format for one
command with the new --date-format option, disable date
conversion for one command with --no-format-dates, or
disable it by default by having the above Lua hook return an
empty string.</li>

<li>The 'diff' and 'automate content_diff' commands take a
'--reverse' option when one revision is specified, to
control the order of the diff with the workspace.</li>

<li>The 'update', 'checkout', 'pluck', and 'pivot_root' commands
take an option '--move-conflicting-paths', to handle
unversioned files that are blocking the action. The
unversioned files are moved to
_MTN/resolutions/&lt;workspace_path&gt;, so the action can
succeed, and the user can recover the files if necessary.</li>

<li>Resolution of orphaned file conflicts is now supported by
'merge --resolve-conflicts' and the 'conflicts' commands.</li>

<li>Duplicate name conflicts now support the 'keep' resolution.</li>

<li>Monotone now accepts ':memory:' as argument to the --db option
and sets up a memory-only SQLite database.</li>

<li>'clone' allows cloning into the current directory when
'.' is given as argument.</li>
</ul>

<h2>Bugs fixed</h2>

<ul>
<li>Monotone now sanely skips paths with invalid characters
it encounters during 'add' or 'automate inventory'.</li>

<li>Key names, cert names, and var domains with non-ASCII
characters should work properly now.  Previously, they would
be (usually) converted to punycode on input, and not decoded
on output. They will now not be converted to punycode at
all.</li>

<li>The 'conflict' commands can now handle duplicate name
conflicts for directories.</li>

<li>'cvs_import' now properly parses CVS timestamps (again).</li>

<li>Windows' cmd.exe is recognized as smart terminal and thus
monotone should create more readable output in
netsync operations.</li>

</ul>
]]>
            </description>
            <pubDate>Fri, 11 Sep 2009 20:50:00 +0000</pubDate>
            <enclosure url="http://monotone.ca/downloads/0.45/monotone-0.45.tar.gz" length="4645511" type="application/octet-stream"/>
        </item>
        <item>
            <title>monotone 0.44 released</title>
            <description>
<![CDATA[
<h2>Changes</h2>

<ul>
<li>Private keys no longer have a separate hash from the associated
  public key. This changes the hashes output by 'ls keys', and also
  changes the format of 'automate keys' and 'automate genkey'.
</li>
</ul>

<h2>New features</h2>

<ul>
<li>New 'w:' selector type for selecting the revision the workspace
  is based on.
</li>
</ul>

<h2>Bugs fixed</h2>

<ul>
<li>C++ exceptions in Lua extension functions are now converted into
  Lua errors catchable with pcall, instead of causing a crash.
</li>
<li>In 0.43 revert became excessively noisy and would report changes to
  all attributes on included files and directories regardless of whether
  the attributes had been changed or not. This has been silenced.
  Monotone will now specifically report changes to execute permissions
  only when they occur.
</li>
<li>In 0.43 monotone would lose execute permissions on all files modified
  during an update operation. Execute permissions are now reset on
  updated files that have the mtn:execute attribute set to true.
</li>
<li>Invalid revision selectors now cause an immediate error instead of
  being dropped from the selection.  The old behavior could produce
  undesired effects from typoed commands, such as spewing a list of
  all revisions in the database.
</li>
<li>If "automate stdio" is in use, invalid selectors are reported via
  the automate protocol rather than on stderr.
</li>
<li>"Best-effort" character set conversions now work again; 'mtn log'
  will not crash just because there is a change log entry with a
  character not representable in your locale.  However, if your system
  iconv(3) implementation does not support the //TRANSLIT extension,
  you may see garbage characters in the above scenario.
</li>
</ul>

<h2>Internal</h2>

<ul>
<li>Various small code changes to make monotone compile under (Open)
  Solaris using Sun Studio, and under Windows with Visual C++.
</li>
<li>monotone.spec has been removed from the distribution.
</li>
</ul>
]]>
            </description>
            <pubDate>Tue, 12 May 2009 20:44:00 +0000</pubDate>
            <enclosure url="http://monotone.ca/downloads/0.44/monotone-0.44.tar.gz" length="4603920" type="application/octet-stream"/>

        </item>
        <item>
            <title>monotone 0.43 released</title>
            <description>
<![CDATA[
<h2>Changes</h2>

<ul>
<li>The Monotone source distribution no longer includes copies of
  several third-party libraries.  This means they must be downloaded
  and built separately, before building monotone.  See INSTALL for a
  complete list of necessary libraries.<br /><br />

  This allows monotone's developers to concentrate on monotone
  itself, rather than tracking external library updates, which in
  practice did not happen.  By way of illustration, we were still
  shipping sqlite 3.4.1, which is years out of date.  This has also
  been a long-standing request of various redistributors of binary
  packages, who prefer the use of globally shared libraries.
</li>
<li>There is a new db var "database delta-direction", which can have
  values "reverse" (default), "forward", and "both". This controls
  what kind of deltas are stored for new file versions. Forward
  deltas are very fast for netsync, but slow for most other uses.
  Set this to "both" (or perhaps "forward" if you're very short on
  disk space) on an empty db and pull everything into it, to get a
  database which will be much faster for server usage (especially
  initial pulls).
</li>
<li>'mtn help &lt;command_or_group>' or 'mtn &lt;command_or_group> --help' no
  longer print global options, thus making the output of specific help
  requests more compact. You still see all available global options
  by executing 'mtn help' without any arguments.
</li>
<li>'mtn automate get_current_revision' now returns an empty changeset
  instead of an error if a workspace contains no changes.
</li>
</ul>

<h2>New features</h2>

<ul>
<li>A monotone database may be exported in the git fast-import format
  using the git_export command. The output from this command may be
  piped into git fast-import or other tools supporting this format.
</li>
<li>Additional 'u:' and 'm:' selector types for selecting the revision the
  workspace was last updated from and revisions matching specified
  message globs in changelog and comment certs.
</li>
<li>Additional '--revision' option for 'mtn log' allows logging of
  selected sets of revisions.
</li>
<li>Additional '--full' option for 'mtn db info' to display some
  statistic analysis of the date certs in the database.
</li>
<li>Command line options in the EDITOR and/or VISUAL environment
  variables are honored; for instance, EDITOR="emacs -nw"
  works now.  (Debian bug #320565.)
</li>
<li>The `mtn_automate' lua function now correctly parses and sets
  options for executed automate commands.
</li>
<li>The 'commit' command accepts a non-empty _MTN/log as the log
  message when '--message-file=_MTN/log' is given.
</li>
</ul>

<h2>Bugs fixed</h2>

<ul>
<li>Performance of the log command has been improved significantly.
  Previous versions of monotone loaded individual certs by name for each
  printed revision and this caused sqlite to not use the correct
  index. Now, all certs are loaded for each printed revision once and
  individual certs are selected from the full list which allows sqlite
  to use the preferred index.
</li>
<li>In 0.42, a netsync writer would attempt to queue up all outgoing
  data as soon as it knew what data to send, in a single operation,
  without servicing the event loop. If there was a large amount of
  data to send, this would cause very long pauses and sometimes
  timeouts and dropped connections (for pauses over 10 minutes).
  The bug that caused this is fixed, and that operation now has a
  safety timer that should prevent it from coming back.
</li>
<li>When the netsync server receives garbage over the network, it
  should be much better about only terminating the offending connection
  instead of the entire server.
</li>
<li>The log command was missing '--depth' and '--exclude' options used to
  restrict revisions printed to those touching specific paths. Log now
  allows these options and uses them properly.
</li>
<li>The update command previously did not clear execute permissions from
  files that had their associated 'mtn:execute' attribute cleared.
</li>
<li>Several minor problems with workspace attributes have been fixed.
  Earlier versions of monotone would reset attributes such as
  mtn:execute on all files when any workspace modifying command was
  executed. Applying attribute changes to workspace files is now done
  much more selectively in the same manner that content and name changes
  are applied.
</li>
<li>In certain cases, especially also on FreeBSD and Mac OS X, netsync
  called select() even after read() returned 0 bytes to indicate the
  end of the file, resulting in a confusing error message. This
  is fixed by treating EOF specially and prevent further calls
  to select() on the file handle, as recommended by the
  select_tut man page.
</li>
<li>If given a filename, `mtn ssh_agent_export' now creates that
  file with the correct permissions (i.e. mode 600), creates
  directories as necessary, and does not throw an internal
  error if creation or writing fails.  (You're still on your
  own for directory creation and permissions if you take the
  key on standard output and redirect it to a file.)
</li>
<li>The `p:' selector now accepts single character revision ids.
</li>
<li>`mtn merge_into_workspace' no longer crashes if one tries to merge
  in an ancestor or descendant of a workspace, but gives a helpful
  error message.
</li>
<li>Several bugfixes to `mtn automate stdio':
<ul>
  <li>It now correctly distinguishs between syntax and command errors by
    returning error code 1 for the former and error code 2 for the
    latter - just as advertised in the documentation.
  </li>
  <li>The stdio event loop no longer quits if a syntax error occurs, but
    rather discards the wrong state and accepts new (valid) commands.
  </li>
  <li>Option errors haven't been catched properly and thus weren't encoded
    in stdio either; this has been fixed as well.
  </li>
  <li>Global options, which were set or changed by a previously executed
    command, weren't properly reset before the next command was issued.
    It was f.e. not possible to "unignore" suspended branches for
    the `branches' command when `--ignore-suspend-certs' was given in
    a previous run. Now only those global options persist between
    executed commands which were given to stdio directly.
   </li>
</ul>
</li>
</ul>

<h2>Internal</h2>

<ul>
<li>Using 64 bit integer values to represent dates internally. This
  has no user visible effect.
</li>
<li>The unit test code has been separated from the main source, thus
  building the tests no longer requires a full recompilation. Also,
  the number of modules which are linked into unit tester has
  decreased tremendously.
</li>
<li>A couple of debug commands have been added to the `database'
  command group to aid performance timing. See `mtn help --hidden db'
  for a list of available commands.
</li>
<li>Our internal error handling has been overhauled. N() is gone, and E()
  takes three arguments instead of 2: E(bool, origin::type, i18n_format).
  origin::type is an enum describing the source of the error, eg network,
  user, internal. Data types can publically inherit origin_aware (as the
  vocab types do) to obtain a public origin::type member named
  'made_from'; this can then be supplied to E() when sanity-checking
  that data. origin_aware and origin::type are in origin_type.hh.
  I() will throw a unrecoverable_failure, and E() will throw either a
  unrecoverable_failure or a recoverable_failure depending on the
  origin::type provided. informative_failure is gone.
</li>
</ul>
]]>
            </description>
            <pubDate>Sun, 22 Mar 2009 22:26:00 +0000</pubDate>
            <enclosure url="http://monotone.ca/downloads/0.43/monotone-0.43.tar.gz" length="4591647" type="application/octet-stream"/>

    </item>
    <item>
            <title>monotone 0.42 released</title>
            <description>
<![CDATA[
<h2>Changes</h2>

<ul>
<li>The output of 'automate show_conflicts' has been changed; a
default resolution for file content conflicts and user resolutions
for other conflict types has been added. 'directory_loop_created'
changed to 'directory_loop'.</li>

<li>The French, Brazilian-Portuguese and Japanese translations were
outdated and thus have been removed from the distribution. In case
you care about them and want them back, drop us a note at
monotone-devel@nongnu.org.</li>
</ul>

<h2>Bugs fixed</h2>

<ul>
<li>'mtn db kill_rev_locally' did not update the inodeprint
cache when executed from a workspace on which the
revision's changes where applied.</li>
<li>Some recent performance issues have been corrected:
<ul>
<li>since 0.40, there is much more use of hex encoding/decoding.
These functions have been sped up considerably.
<li>since 0.40, every command in an 'automate stdio' session
would reinitialize the database. This was rather slow, so
monotone will now keep the database open between commands.</li>
</ul></li>
<li>The Lua-based contributed Monotone extension introduced in
0.38 haven't been added to the tarball; this has been fixed.</li>
<li>Monotone died if _MTN/options contained an empty / not-existing
'keydir' entry. This has been fixed. Also, invalid options are now
better detected and give a more useful error message.</li>
<li>Monotone crashed if it was called with more than 2048 command
line arguments. This has been fixed.</li>
<li>If vim is used as merger, it no longer prompts the user for an
enter key press.</li>
<li>Decoding errors f.e. through to garbage from the network no longer
results in informative failures, but in warning. This was made
possible by introducing the concept of origin-aware sanity checks.</li>
<li>Monotone crashed if it was called with nested wildcards such as
'a.{i.{x,y},j}'. This has been fixed.</li>
<li>The standard implementation of the 'ignore_file' hook now accepts
windows and unix line endings in .mtn-ignore files.</li>
</ul>

<h2>New features</h2>

<ul>
<li>New 'mtn ls duplicates' command which lets you list
duplicated files in a given revision or the workspace.</li>
<li>New option --no-workspace, to make monotone ignore any
workspace it might have been run in.</li>
<li>New command group 'mtn conflicts *'; provides asynchronous
conflict resolutions for merge and propagate.</li>
<li>New 'automate file_merge' command which runs the internal line
merger on two files from two revisions and outputs the result.</li>
<li>New 'automate lua' command with which lua functions, like
monotone hooks, can be called over automate. This is particularily
useful to get user defaults, like ignorable files, branch keys and
passwords, which are managed through one or more monotonerc files.</li>
<li>New 'automate read_packets' command which reads data packets like
public keys similar to 'mtn read'.</li>
<li>'merge' and 'propagate' accept user commit messages; the
'merge rev rev' or 'propagate branch branch' message will be
prefixed to the user message. --no-prefix removes the prefix.</li>
</ul>

<h2>Internal</h2>

<ul>
<li>Update Botan to 1.7.12.</li>
</ul>
]]>
            </description>
            <pubDate>Fri, 26 Dec 2008 22:08:00 +0000</pubDate>
            <enclosure url="http://monotone.ca/downloads/0.42/monotone-0.42.tar.gz" length="5182313" type="application/octet-stream"/>

    </item>
    <item>
            <title>monotone 0.41 released</title>
            <description>
<![CDATA[
<h2>Changes</h2>

<ul>
<li>'mtn clone' now takes a branch argument rather than a branch
option which is more what people expect given the fact that
mtn push/pull/sync do not use a branch option either.</li>

<li>'mtn automate inventory' will show the birth revision for
any file that has been committed.</li>
</ul>

<h2>Bugs fixed</h2>

<ul>
<li>If the options '--db' or '--keydir' were previously
specified for a command which was executed inside a
workspace and one or both option arguments were invalid
(f.e. invalid paths), they were still written to
_MTN/options of the particular workspace.  This lead to
errors on any subsequent command which used these
options. This bug is fixed in so far that basic file type
checks are applied on both options, so its no longer
possible to set non-existing paths accidentally or use a
path to a directory as option argument for '--db'.</li>

<li>If a key clash occurs on a netsync operation, i.e. two
different keys with the same key id are encountered, mtn now
fails cleanly and provides further guidance how to proceed.</li>

<li>It was previously not possible to clone a branch / database
anonymously; this has been fixed.</li>

<li>If the client tries to use an unknown key, try to fall back
to anonymous pull instead of failing immediately.</li>

<li>'mtn automate identify' was broken in 0.40 when used over
stdio, i.e. the output of the command did not get into the
right output channel; this has been fixed.</li>

<li>Monotone would produce a warning if executed from the root
directory of a Windows drive; this has been fixed.</li>

<li>The 'note_commit' hook now returns the new revision id
hex-encoded again - the bug was introduced in 0.40.</li>
</ul>

<h2>New features</h2>

<ul>
<li>New 'mtn suspend' command which lets you mark certain
revisions and thus whole branches as discontinued
("suspended") by attaching a special suspend cert to the
revision. All relevant mtn commands (f.e. mtn heads,
mtn ls branches) honor this cert by default. To ignore it,
simply add '--ignore-suspend-certs' to your command line.
Suspended revisions can have children, which are in no
way affected by the cert of their parent, i.e. suspended
development lines or branches can simply be "unsuspended"
by committing to them.<br />
This feature was already added in monotone 0.37, but was
forgotten to be mentioned in NEWS back then.</li>

<li>New 'get_default_command_options' lua hook which lets you
specify default options for a given, triggered command.
Useful f.e. if you always want to have your 'mtn add'
command executed with '-R' / '--recursive'.</li>

<li>Add 'automate show_conflicts' command.</li>

<li>Add 'automate get_workspace_root' command.</li>

<li>Add Lua hooks 'note_netsync_revision_sent',
'note_netsync_cert_sent' and 'note_netsync_pubkey_sent'.</li>
</ul>
]]>
            </description>
            <pubDate>Wed, 3 Sep 2008 21:13:18 +0000</pubDate>
            <enclosure url="http://monotone.ca/downloads/0.41/monotone-0.41.tar.gz" length="5330052" type="application/octet-stream"/>

    </item>
    <item>
            <title>monotone 0.40 released</title>
            <description>
<![CDATA[
<h2>Changes</h2>

<ul>
<li>The vim merger has been improved and now uses diff3 to merge
non-conflict changes automatically before executing vimdiff.</li>

<li>Values used with the --depth option used to control recursion with
node and path restrictions have changed. Using --depth=0 now means
exactly the specified directories and *not* their children. Using
--depth=1 now means the specified directories and their immediate
children. Previously --depth=0 included children and --depth=1
included grandchildren and it was not possible to exclude children
using --depth.  The simple fix for anyone using --depth is to add 1 to
the values they are using.</li>

<li>Document that ssh: and file: sync transports are not supported on
native Win32.</li>
</ul>

<h2>Bugs fixed</h2>

<ul>
<li>`commit' now uses keydir specified in _MTN/options</li>

<li>duplicate name conflicts now show a proper error message, even if
a parent directory got renamed as well. In that case, the error
message now shows both names for the directory and the offending
file name.</li>
</ul>

<h2>New features</h2>

<ul>
<li>The bare parent selector 'p:' can now be used in a workspace to
query the parent(s) of the workspace' base revision. This is
equivalent to "mtn au select p:`mtn au get_base_workspace_revision`".</li>

<li>
<p>push, pull, and sync can be run with a single argument, which looks like</p>
<blockquote>mtn://hostname?include_pattenr/-exclude_pattern</blockquote>
<p>or</p>
<blockquote>mtn://hostname?include=include_pattern/exclude=exclude_pattern</blockquote>
</li>
</ul>

<h2>Internal</h2>

<ul>
<li>Update Botan to 1.7.4.</li>

<li>Usage of the internal app_state object has been reduced, objects
are better encapsulated now. The database interface has been
enhanced to ease reduction of locking contention in the future.</li>

<li>Merged the two indexes on revision_certs into a single one.</li>

<li>
<p>The database schema has been changed so that it now stores
binary SHA1 hashes rather than their hexadecimal encoding,
in most places where these are used.  This reduces the
database size and speeds up operations a little.</p>

<p>Users who like to fiddle with the database directly are
advised to use the sqlite functions hex() and quote() to
print columns that store hashes (including IDs), and the
hexadecimal literal notation x'DEADBEEF' to input them.</p>
</li>

<li>Binary SHA1 hashes are also used for most in-memory
processing, avoiding conversions and saving memory.</li>
</ul>
]]>
            </description>
            <pubDate>Fri, 11 Apr 2008 22:50:44 +0000</pubDate>
            <enclosure url="http://monotone.ca/downloads/0.40/monotone-0.40.tar.gz" length="5366351" type="application/octet-stream"/>

    </item>

    <item>
            <title>monotone 0.39 released</title>
            <description>
<![CDATA[
<h2>Changes</h2>

<ul>
<li>'mtn di' is now an alias for 'mtn diff'.</li>

<li>'automate db_set' has been renamed to 'automate set_db_variable'.</li>

<li>'automate db_get' has been replaced by 'automate get_db_variables'
which returns all database variables similar to 'list vars' in
basic_io format, optionally restricted by domain.</li>

<li>The REVID argument of 'automate get_revision' is now mandatory;
to retrieve the current workspace revision, use the new command
'automate get_current_revision'</li>

<li>messages describing conflicts from all of the various merge commands
have been reworked and should be much more informative.</li>

<li>mtn show_conflicts now outputs much more detailed and descriptive
messages, however it may report content conflicts that will be
resolved automatically by the line merger.</li>

<li>The internal copy of PCRE has been updated to version 7.6.
If you use the '--with-system-pcre' configure switch, it
will insist on at least this version.</li>

<li>"emacs" has been removed from the list of dumb terminal types;
tickers should now default to --ticker=count with emacs terminals</li>

<li>extensive section on merge conflicts and ways to resolve them
added to the manual.</li>
</ul>

<h2>Bugs fixed</h2>

<ul>
<li>for changes near the beginning of a file, mtn's unified diff
output sometimes contained too many leading context lines.</li>

<li>the path handling of 'mtn revert' was improved and fixed two bugs:
now a restricted revert on a node "dir1/file1" reverts only the
content changes in "file1", but leaves renames of any of its
ancestor nodes untouched; furthermore, if "dir0/" was renamed to
"dir1" and "dir1/file1" was dropped, mtn now re-creates file1 at the
proper place ("dir1/") and leaves no missing files around because
of the non-existing "dir0/".</li>

<li>a few changes needed to build with gcc 4.3.</li>
</ul>

<h2>New features</h2>

<ul>
<li>'automate drop_db_variables' which drops one database variable
(like the 'unset' command) or all variables within a given domain.</li>

<li>'automate inventory' now accepts the options '--no-ignored',
'--no-unknown', '--no-unchanged' and '--no-corresponding-renames'.
Please consult the monotone documentation for more information about
these new options.
In addition, 'automate inventory' no longer recurses into ignored
directories. The typical case of listing files that need attention
now runs at least four times faster.</li>

<li>'automate get_current_revision' which outputs the revision text of
changes in the current workspace</li>
</ul>
]]>
            </description>
            <pubDate>Mon, 25 Feb 2008 15:55:36 +0000</pubDate>
            <enclosure url="http://monotone.ca/downloads/0.39/monotone-0.39.tar.gz" length="5332200" type="application/octet-stream"/>

    </item>

    <item>
            <title>monotone 0.38 released</title>
            <description>
<![CDATA[
<h2>Changes</h2>

<ul>
<li>mtn log now prints a single dot for a project's root
directory instead of an empty string.</li>

<li>mtn now warns if changes to a file will be ignored because
the file has been deleted on one side of a merge.</li>

<li>mtn now errors if your chosen private key doesn't match the public
key of the same name in your database.</li>

<li>mtn now checks for your key before a merge action takes place to
ensure that any manually merged file isn't lost in an error case</li>
</ul>

<h2>Bugs fixed</h2>

<ul>
<li>a bug introduced in 0.37 prevented an external merger from being
executed unless the MTN_MERGE environment variable was set</li>

<li>mtn read successfully reads revision data, and cert packets again</li>

<li>mtn consistently supports certs with empty values
(fixed 'ls certs' and 'read') </li>
</ul>

<h2>Internal</h2>

<ul>
<li>Update Botan to 1.7.2.</li>

<li>Moved the gzip implementation out of the Botan directory.</li>
</ul>

<h2>Other</h2>

<ul>
<li>Added the scripts of the following Lua-based contributed
Monotone extension commands to contrib/command/:
"mtn base", "mtn fuse", "mtn revision", "mtn conflicts".</li>

<li>Added a hooks version of the contributed ciabot script,
contrib/ciabot_monotone_hookversion.lua</li>

<li>The monotone manual is now licensed under the GPL rather than
the GFDL.</li>
</ul>

]]>
            </description>
            <pubDate>Wed, 12 Dec 2007 21:21:15 +0000</pubDate>
            <enclosure url="http://monotone.ca/downloads/0.38/monotone-0.38.tar.gz" length="5264665" type="application/octet-stream"/>

    </item>

        <item>
            <title>monotone 0.37 released</title>
            <description>
<![CDATA[
<p>
Time for a new, and currently not so regular release.  This is
version 0.37, with quite a number of changes that I imagine would be
interesting for quite a lot of people.
</p>

<h2>Changes</h2>

<ul>
<li>mtn db kill_rev_locally now checks for an existing workspace
before the revision is killed and tries to apply the changes
of this particular revision back to the workspace to allow
easy re-committing afterwards

<li>the "--brief" switch for mtn annotate has been renamed to
"--revs-only" for clarity

<li>mtn help now lists the commands (and their aliases) available
within a group, so its easier to get an overview which commands
are available at all

<li>the "MTN_MERGE=diffutils" merger (provided by std_hooks.lua)
was improved. It now accepts a MTN_MERGE_DIFFUTILS environment
variable which can be used to control its behaviour
through comma-separated "key[=value]" entries. Currently
supported entries are "partial" for doing a partial
batch/non-modal 3-way merge conflict "resolution" which uses
embedded content conflict markers and "diff3opts=[...]" and
"sdiffopts=[...]" for passing arbitrary options to the used
"diff3" and "sdiff" tools. When used in combination with "mtn
merge_into_workspace" this way one especially can achieve a
CVS/SVN style non-modal workspace-based merging.

<li>There is a new revision selector: "p:REV" selects the
parent(s) of revision REV.  For example, if a revision has
one parent,

    <code>mtn diff -r p:REV -r REV</code>

will show the changes made in that revision.

<li>Monotone now uses the Perl-Compatible Regular Expression
(PCRE) library for all regular expressions, instead of the
boost::regex library.  This means that external Boost
libraries are no longer required to build or use Monotone.
If building from source, you will still need the Boost headers
available somewhere.  See INSTALL for details.

<li>PCRE's syntax for regular expressions is a superset of
boost::regex's syntax; it is unlikely that any existing
.mtn-ignore files or other user uses of regexps will break.
The manual now contains detailed documentation of the regexp
syntax, borrowed from PCRE itself.

<li>the format of "mtn automate inventory" has changed to basic_io.
This fixes a couple of corner cases where the old format
returned wrong information and introduces new capabilities like
restricted output, recognized attribute changes, and more.
For a complete overview on the new format, please take a look
in the appropriate manual section.
</ul>

<h2>Bugs fixed</h2>

<ul>
<li>mtn automate heads called without a branch argument now properly
returns the head revisions of the workspace's branch if called
over mtn automate stdio

<li>mtn commit no longer crashes if it creates a revision whose
roster already exists, i.e. was left behind by the command
`mtn db kill_rev_locally REV` (savannah #18990)
</ul>

<h2>Documentation changes</h2>

<ul>
<li>the documentation of the "--revs-only" (formerly "--brief")
switch for the annotate command didn't match its actual
behavior, this has been fixed

<li>documentation for the "ssh_agent_add" command was missing
and has been added
</ul>

<h2>Other</h2>

<ul>
<li>contrib/usher.cc has been removed. Please use the
net.venge.monotone.contrib.usher branch instead.
</ul>

<h2>Internal</h2>

<ul>
<li>Update SQLite to 3.4.1.

<li>Update Lua to 5.1.2 plus latest bug fixes.

<li>Update Botan to 1.5.10.

<li>Internal use of regular expressions has been almost eliminated.
(Regular expressions are still used for .mtn-ignore and the
--show-encloser feature of mtn diff, and are still available to
Lua hooks.)
</ul>

]]>
            </description>
            <pubDate>Thu, 25 Oct 2007 22:35:33 +0000</pubDate>
            <enclosure url="http://monotone.ca/downloads/0.37/monotone-0.37.tar.gz" length="5259352" type="application/octet-stream"/>
        </item>
    </channel>
</rss>
