Subject: CVS commit: pkgsrc/devel/monotone
From: Julio M. Merino Vidal
Date: 2010-06-16 16:47:27
Message id: 20100616144727.2C48F175DD@cvs.netbsd.org

Log Message:
Update to 0.48:

Changes

- Much more information is now passed to the editor when composing a
  commit message for a new revision. The Author, Date, Branch and
  Changelog values may now all be changed directly in the editor
  allowing new branches to be created without using the --branch option.
  Changes to other lines of this information must not be made or the
  commit will abort.

- The edit_comment lua hook now only takes one argument which is the
  text to be passed to the editor to edit a commit. Existing hooks that
  override the default hook will need to be changed to work properly.

- The long date/time format used by 'status', 'commit' and 'log' must
  be sufficient to preserve a date through a formatting and parsing
  cycle. The 'status' command now checks for this and warns if the
  format is unsuitable and 'commit' will refuse to operate with an
  unsuitable format.

- The output of the 'status' and 'log' commands has changed to align
  with the new information displayed by 'commit' so that all three
  commands display revisions similarly.

- The 'setup' as well as the 'clone' command check if no managed default
  database exists and if no database is given either as command line
  or as workspace option and eventually create a new default database
  outside of the bookkeeping directory of the new workspace (see below
  for more information on the new management features).

- The output of monotone diff has changed to use /dev/null as the source
  for added files and as the target for deleted files. This is
  compatible with patch(1) and will cause it to add and delete files
  where appropriate. As part of this change diff will now include the
  removed contents of deleted files which were omitted in earlier
  versions of monotone.

- Monotone will only warn about bad certs if there are not also matching
  trusted certs. So if someone commits a bad branch cert, monotone will
  only warn about that bad cert until someone else approves that
  revision into the same branch (fixes monotone bug #8033).

- 'db check' now checks for errors in the branch heads cache,
  and 'db regenerate_caches' fixes them.

- The output of the Lua functions print() and io.write() is now
  redirected to the standard progress message stream of monotone.
  See chapter 6.3 in the documentation for details.

New features

- Monotone has now database management capabilities: If you place your
  databases in one or more specific locations (defaults to
  %APPDIR%/monotone/databases on Windows and $HOME/.monotone/databases
  on Linux, configurable by a hook), it is able to discover these
  databases and access them only by giving the (base) name of their
  filename, for example ":my-database.mtn".

  You can also directly create new databases in the first found default
  location by issuing 'mtn db init -d ":my-database.mtn".

  Some commands, like 'setup' and 'clone' automatically fall back to
  a default database (":default.mtn", also configurable by a hook) if
  no database option is explicitely given.

  Additionally, monotone remembers checked out workspaces for every
  managed database and displays these "known" registered paths together
  with other information in the new 'list databases' command
  (closes monotone bug #8916).

- A set of accompanying management commands - 'register_workspace',
  'unregister_workspace' and 'cleanup_workspace_list' - to handle moved
  or removed workspaces for managed databases have been added.

- Many commands that change the heads of a branch (approve, disapprove,
  pull, merge, etc) can now take an option "--update". If run from
  a workspace which is based on a head of the branch and has no local
  changes, this option makes these commands update that workspace to
  the new head. If you always want this behavior, you can define the
     get_default_command_options(cmd)
  hook in your monotonerc (fixes monotone bug #17878).

- New command 'undrop' which undoes a 'drop' done by mistake
  (fixes monotone bug #13604).

- New automation command 'update' which behaves identical to
  the normal 'update' command.

- 'ls tags' now outputs the branch name(s) a tagged revision is on.
  The revision id is shortened to the first ten characters to get some
  more space for this (fixes monotone bug #12773).

- Default include and exclude patterns are now remembered per server.
  This means that you can have for example one server that you sync
  everything to, and one that you only sync some branches to, and you
  don't have to worry about forgetting to give the include pattern and
  accidentally trying to sync everything to the second server.

- A new Lua extension function change_workspace(directory) has been
  added. This should be most useful for custom commands which need
  to work on multiple workspaces from the same monotone instance.

- There is also the new server_set_listening(bool) Lua extention
  function available since 0.47, which can be used to let a monotone
  server exit gracefully instead of having to be killed.

Bugs fixed

- A regression in 0.47 prevent successful execution of push / pull /
  sync over pipes (Debian bug 574512); this has been fixed.

- A bug in 0.46 and 0.47 could lead to pulls or possibly commits taking
  approximately forever, if any of the previous branch heads was not a
  "close" relation of the new head. This has been fixed.

- Several bugs related to restrictions not including the required parent
  directories of included files have been fixed. It is now possible to
  say 'mtn add a/b/c' followed by 'mtn commit a/b/c' and have the commit
  succeed. See the restrictions section in the manual for more details
  (fixes monotone bugs #15994, #17499, #20447 and #22044).

- monotone no longer saves changed options from the command line back
  to _MTN/options in case the command execution was unsuccessful
  (fixes monotone bug #22928).

- When monotone reads packets from files, like f.e. keys in a directory
  given by the --keydir option, and these files are large and do
  not contain packet data at all, monotone no longer uses an excessive
  amount of time and memory to figure this out
  (fixes monotone bug #28799).

- The 'log' command no longer crashes if it is executed in a workspace
  whose parent revision(s) do not exist in the specified database
  (fixes monotone bug #29677).

- The 'clone' command no longer removes an existing bookkeeping
  directory if the target directory "." points to a workspace
  (fixes monotone bug #29927).

- The commands in monotone's help output are now sorted alphabetically.

- monotone on Windows will now have a non-zero exit code when
  interrupted (^C). This was broken in 0.47 when it was fixed to not
  throw an exception on being interrupted.

- In 0.46 and 0.47, monotone could sometimes get confused
  about which revisions were the heads of a particular branch.
  This would happen when a new branch cert was added to a
  revision that was an ancestor of one or more of the current
  heads of the branch, most commonly during netsync when
  multiple people had performed identical merges. This is
  fixed now. 'db check' will identify the problem; if your
  database currently gives incorrect 'heads' results, or 'mtn
  bug' on 'merge', you can fix it by running 'mtn db
  regenerate_caches'.

- In 0.46, spurious network disconnects could occur when transferring
  sufficiently large items (files, diffs, revisions). This was fixed
  in 0.47 but not noted in the release notes at that time
  (fixes monotone bug #28991).

Other

- Support for the diffuse merger (http://diffuse.sourceforge.net)
  has been added.

Files:
RevisionActionfile
1.63modifypkgsrc/devel/monotone/Makefile
1.44modifypkgsrc/devel/monotone/distinfo