Subject: CVS commit: pkgsrc/devel/monotone
From: Julio Merino
Date: 2010-11-07 21:51:46
Message id: 20101107205146.9C083175DD@cvs.netbsd.org

Log Message:
Update to 0.99:

Changes

- The database scheme was changed; please execute 'mtn db migrate'
  on all your local and remote databases.

- Normal and automate sync, push, and pull now take a
  --dry-run option; no data is transferred, but the connection
  is made and a summary of what would be transferred is
  output.

- The changelog editor format was simplified; user entered text
  is back at the top of file and the instructions have been reduced.
  The edited text is saved now even if a commit is canceled.

- Selectors are much more powerful now and selector functions to
  calculate common sets of revisions have been introduced.
  The characters '(', ')', and ';' need to be quoted if mean literally
  (just like '/') because of this. See section 3.2 in the documentation
  for details.
  (fixes monotone bug #18302).

- The SERVER [BRANCH] call syntax for network-related commands
  has been deprecated in favour of the existing, universal
  URI syntax.  Additionally, file:// and ssh:// URIs are now
  parsed for include and exclude patterns just as the native
  mtn:// URIs.

  The possibility to specify include patterns by using
  'include=' and exclude patterns by using 'exclude='
  in the query string has been removed. Patterns are separated
  by ';' and will be treated as include patterns unless prefixed
  with '-'. Where you could previously specify
  'mtn://host/?include=foo,exclude=bar', you would now give
  'mtn://host/?foo;-bar' instead.

  The URI parser was made a bit more standards compliant and
  treats the scheme and host in a case insensitive manner.
  The path and query parts are now automatically URL-decoded.

  We deviate from RFC 3986 however by recognizing the authority
  part in scheme-less URLs, where the standard would force us
  to recognize a path instead.  For example, for the URL

      'code.monotone.ca/monotone'

  we'd normally parse 'code.monotone.ca/monotone' as path, but our
  implementation parses 'code.monotone.ca' as authority and
  '/monotone' as path, so you are not forced to type 'mtn://' on
  command line, just as you are not forced to type 'http://' in
  your browser.  Monotone's native scheme / protocol 'mtn' is by
  the way set as default in cases like this.

  The format for the server part of the 'default-server',
  'known-server', 'server-include' and 'server-exclude'
  database variables has been changed and now always includes
  the complete (normalized) URI resource, consisting of the
  used protocol, user, host, port and path parts.  Older entries
  in existing databases which do not match the new format are
  preserved and not changed by monotone.

  Please check the manual section 5.3 for more details on the
  URI syntax.

- Naturally, the 'clone' command now also accepts mtn:// URIs,
  though the use of branch globs is forbidden unless a branch is
  specified separately with the new --branch option.

  To avoid confusion with an existing workspace, clone no longer
  looks for and loads the options of such a workspace, therefor
  it now also falls back to the configured default database and
  no longer to the database used in the workspace if no explicit
  database is given.

- Server defaults for netsync operations are now only saved if
  the exchange was successful.  The progress messages which have
  been issued for this previously have been removed, since they
  would come up now unexpectedly and would clutter the output of
  commands such as 'clone', 'automate remote' and
  'automate remote_stdio'.

- The following characters have been deprecated in branch names

        ?,;*%+{}[]!^

  as they denote either meta characters in monotone's URI syntax
  or are used in globs to resolve branch patterns.
  Furthermore, branch names should no longer start with a dash
  (-), since this character is used to denote an exclude pattern
  in the aforementioned URI syntax.

  monotone warns on the creation of branches which violate these
  restrictions and gives further directions.

- The 'cert' command can now operate on multiple revisions at once.

- The command 'db kill_rev_locally' has been renamed to
  'local kill_revision', and 'db kill_tag_locally' and
  'db kill_branch_certs_locally' have been replaced with a more
  flexible command 'local kill_certs'.

- The 'import' command now keeps the created bookkeeping root if
  --dry-run is not specified.  This makes it possible to re-use
  the import directory as workspace and is also more closely
  to what our documentation states, when it says that import
  is basically "setup with a twist".

- On Win32 native, the option '--no-format-dates' which disables
  the localized date format, is now the default for 'commit', since
  dates are not parseable on Win32 native.

- The automate commands sync, push, and pull now output information
  about each transferred revision, cert and key, in basic_io format.

- monotone no longer passes syntactically correct, but non-existent
  revision ids through the selector machinery.  The most visible
  place for this change is 'automate select', which no longer
  echoes every possible 40 hex-byte string.

- The 'automate genkey' command has been renamed to
  'automate generate_key'

New features

- Options can now be overridden; you can specify '--no-unknown
  --unknown' on the command line and effectively get back the original
  state in the application.  Similarly, you can specify '--no-unknown'
  in the 'get_default_command_options' hook and then override that
  with '--unknown' on the command line.

- New global options:
  --no-ignore-suspend-certs     undo previous --ignore-suspend-certs
  --use-default-key             undo previous --key
  --allow-default-confdir       undo previous --no-default-confdir
  --allow-workspace             undo previous --no-workspace
  --interactive                 undo previous --non-interactive
  --no-standard-rcfiles         replaces --norc
  --standard-rcfiles            undo previous --no-standard-rcfiles
  --no-builtin-rcfile           replaces --nostd
  --builtin-rcfile              undo previous --no-builtin-rcfile
  --clear-rcfiles               undo previous --rcfile
  --verbose [-v]                increase verbosity (opposite of --quiet)

- Global options now hidden:
  --roster-cache-performance-log

- New command options:
  add
    --no-recursive                  undo previous --recursive
    --respect-ignore                undo previous --no-respect-ignore
    --no-unknown                    undo previous --unknown
  bisect *, checkout, pivot_root, pluck, update, automate update
    --no-move-conflicting-paths     undo previous --move-conflicting-paths
  diff
    --without-header                undo previous --with-header
    --show-encloser                 undo previous --no-show-encloser
  disapprove, suspend
    --no-update                     undo previous --update
  drop
    --no-recursive                  undo previous --recursive
  explicit_merge, merge, merge_into_dir propagate
    --no-resolve-conflicts          undo previous --resolve-conflicts
    --no-update                     undo previous --update
  log
    --no-brief                      undo previous --brief
    --no-diffs                      undo previous --diffs
    --clear-from                    undo previous --from
    --files                         undo previous --no-files
    --graph                         undo previous --no-graph
    --merges                        undo previous --no-merges
    --clear-to                      undo previous --to
  import
    --no-dry-run                    undo previous --dry-run
    --respect-ignore                undo previous --no-respect-ignore
  mkdir
    --respect-ignore                undo previous --no-respect-ignore
  serve
    --no-pid-file                   undo previous --pid-file
  sync, pull, push, automate remote_stdio, automate remote
  automate pull, automate push, automate sync
    --no-set-default                undo previous --set-default
  sync, pull, push, automate pull, automate push, automate sync
    --dry-run                       just report what would be sent/received
  automate inventory
    --corresponding-renames         undo previous --no-corresponding-renames
    --ignored                       undo previous --no-ignored
    --unchanged                     undo previous --no-unchanged
    --unknown                       undo previous --no-unknown
  automate content_diff
    --without-header                undo previous --with-header
  automate show_conflicts
    --no-ignore-suspend-certs       undo previous --ignore-suspend-certs
  automate log
    --clear-from                    undo previous --from
    --merges                        undo previous --no-merges
    --clear-to                      undo previous --to

- Command options now hidden:
  (several commands) --no-prefix
  serve    --stdio --no-transport-auth
  (all netsync/remote commands) --min-netsync-version --max-netsync-version

- Deprecated options:
  --norc         use --no-standard-rcfiles
  --nostd        use --no-builtin-rcfile
  --reallyquiet  use --quiet --quiet
  --debug        use --verbose

- To aid command line typing, partial option names are tried to
  be expanded; if the expansion leads to multiple possibilities,
  all matches and an accompanying short description of the
  particular expansion are displayed.

  Two types of expansions are available: simple prefix matching
  and word abbreviation matching. Single-word options like '--update'
  are easier to expand from prefixes, as they're unique after a few
  characters, in this example '--up' already matches.

  Multi-word options like for example '--ignore-suspend-certs' might
  collide however with single-worded ones and are best expanded from
  abbreviations, in this case '--isc'.

- The 'disapprove' command now accepts a revision range in
  addition to a single revision.

- A new 'manpage' command has been added which dumps the monotone
  command help including all global and command specific options in
  standard troff format.  If this command is used interactively, its
  output is automatically processed through nroff and less, in case
  both are available on your system.  If not, you can change the default
  command by overwriting the 'get_man_page_formatter_command' hook.

  The 'manpage' command is also used to create a static version of
  mtn(1) which is now installed with the rest of monotone's docs.

- New 'k:' selector type to query revisions where at least one
  certificate was signed with the given key.

- New automate command 'log' which behaves identical to the
  normal 'log' command, except that it only outputs the
  revision ids.

- New automate command 'checkout' which works just as its
  non-automate counterpart.

- Monotone now tracks file size information (hence the previously
  mentioned schema change).
  File sizes are currently only queryable via the automation
  interface, directly for specific files via 'get_file_size' or
  as part of the extended manifest (see below), but these
  information may become visible as part of the user UI later on
  as well.

- New automate command 'get_extended_manifest_of', which prints
  a beefed-up manifest format with file size and extensive marking
  information.  This can be used to easily determine when specific
  nodes have been changed or moved at last.

- New automate commands 'put_public_key', 'get_public_key' and
  'drop_public_key'. (closes monotone bug #30345)

Bugs fixed

- The 'mv' command now warns when a source is being renamed onto
  itself or one of its children (fixes monotone bug #29484).

- The 'mv' command now also handles this usage properly, where
  'foo' is a directory:

     $ mv foo bar
     $ mtn mv --bookkeep-only foo bar

- monotone no longer asks to pick a branch from a set of branches
  of a revision in which all but one branch have been suspended
  (fixes monotone bug #29843)

- The annotate command no longer fails if it should print out
  empty or untrusted date cert values
  (fixes monotone bug #30150)

- monotone now tries harder to find the cancel hint in a commit
  message and only aborts if it can't find it anywhere
  (fixes monotone bug #30215)

- The import command no longer warns about not being able
  to write out _MTN/options on --dry-run
  (fixes monotone bug #30225)

- 'automate remote' and 'automate remote_stdio' can now be used
  without transport authentication (e.g. on file:// or ssh://
  transports) as well as anonymously over netsync
  (fixes monotone bug #30237)

- monotone does no longer warn about missing implicit includes
  when dealing with restricted file sets
  (fixes monotone bug #30291)

- The 'passphrase' and 'dropkey' commands now handle private keys
  in old-style key files (without the hash part in the file name)
  properly.
  monotone also makes it very sure now that the key file of a
  private key which is about to be deleted really and only
  contains the key which should be deleted and nothing else
  (fixes monotone bug #30376)

- monotone no longer throws an unrecoverable error if a public or
  private key is addressed with some non-existing key id
  (fixes monotone bug #30462)

- A globish that contains a bracket pair with an empty sub-pattern
  such as "{,.foo}", "{.foo,}" or even \ 
"{.foo,,.bar}" now correctly
  expands the empty target, so e.g. the branch pattern

     "net.venge.monotone{,.*}"

  now matches "net.venge.monotone" and "net.venge.monotone.*"
  as expected. (fixes monotone bug #30655)

- A regression in 0.48 made a path-restricted 'mtn log' show
  revisions, in which not the picked path(s), but one of its parents
  were changed.  This has been fixed.

- 'mtn trusted' will no longer accept single bogus revision ids,
  but instead validates if the given revision really exists in the
  current database.

- 'mtn read' (and also 'mtn automate read_packets') now tests public
  and private key data more thoroughly and aborts if it encounters
  invalid data.

- 'mtn conflicts store' now gives a proper error message when
  run outside a workspace (fixes monotone bug #30473)

- monotone did not properly parse URIs which missed a scheme or
  which did not mark the start of the authority with a double slash.
  This has been fixed.
  (fixes monotone issue 94)

Files:
RevisionActionfile
1.65modifypkgsrc/devel/monotone/Makefile
1.22modifypkgsrc/devel/monotone/PLIST
1.46modifypkgsrc/devel/monotone/distinfo
1.22removepkgsrc/devel/monotone/patches/patch-aa