pkgsrc/devel/monotone/Makefile

61 lines
1.6 KiB
Makefile
Raw Normal View History

Update monotone to 0.47: Changes - The default '<unknown>' author used by the git_export command has changed to 'Unknown <unknown>' and must be changed in existing author map files. The old '<unknown>' author will be rejected by the new validate_git_author lua hook. - The 'git_export' command now validates all git author and committer values using a new 'validate_git_author' lua hook before they are written to the output stream. The export will fail if any value is rejected by this hook. - The 'git_export' command now calls a new 'unmapped_git_author' lua hook for all git author values not found in the author map file. The default implementation of this hook attempts to produce valid git authors using several default pattern replacements. - The 'get_date_format_spec' lua hook now has an additional parameter which hints at the wanted format (f.e. a short date or a long date time). The default implementation now returns '%x' for short and long dates, '%X' for short and long times (currently unused) and '%x %X' for short and long date times. - The options '--date-format' and '--no-format-dates' are no longer specific to the 'log' command, but can now be used globally. - monotone now prompts only three times for a key password. New features - Added portuguese translation (thanks to Américo Monteiro) Bugs fixed - 'passphrase' now allows an empty new password to be given (fixes monotone bug #28809) - 'automate remote' and 'automate remote_stdio' no longer require an existing database (fixes monotone bug #28885) - monotone no longer throws an exception on Windows if it is interrupted (^C); a couple of other bug have been fixed for this platform as well which generally improve the compatibility. - The annotation of 'annotate' is now localized. - The various occurrences where a revision is described by its certs now come with proper localized date output. - Fix problems with newer Lua versions especially when LUA_COMPAT_VARARG not set. Other - Roster handling has been sped up significantly, and roster cache performance has been fixed for the case of overly large rosters. This should be mostly noticable when digging through history (especially initial pulls, since those send so many revisions), and be more noticable for projects with larger trees. The most significant internal change from this is that rosters and marking_maps are now copy-on-write. A longer overview of the internal changes is at: http://lists.gnu.org/archive/html/monotone-devel/2010-02/msg00043.html - Improve the compatibility with newer Botan versions.
2010-03-15 10:51:32 +01:00
# $NetBSD: Makefile,v 1.62 2010/03/15 09:51:32 jmmv Exp $
#
Update monotone to 0.47: Changes - The default '<unknown>' author used by the git_export command has changed to 'Unknown <unknown>' and must be changed in existing author map files. The old '<unknown>' author will be rejected by the new validate_git_author lua hook. - The 'git_export' command now validates all git author and committer values using a new 'validate_git_author' lua hook before they are written to the output stream. The export will fail if any value is rejected by this hook. - The 'git_export' command now calls a new 'unmapped_git_author' lua hook for all git author values not found in the author map file. The default implementation of this hook attempts to produce valid git authors using several default pattern replacements. - The 'get_date_format_spec' lua hook now has an additional parameter which hints at the wanted format (f.e. a short date or a long date time). The default implementation now returns '%x' for short and long dates, '%X' for short and long times (currently unused) and '%x %X' for short and long date times. - The options '--date-format' and '--no-format-dates' are no longer specific to the 'log' command, but can now be used globally. - monotone now prompts only three times for a key password. New features - Added portuguese translation (thanks to Américo Monteiro) Bugs fixed - 'passphrase' now allows an empty new password to be given (fixes monotone bug #28809) - 'automate remote' and 'automate remote_stdio' no longer require an existing database (fixes monotone bug #28885) - monotone no longer throws an exception on Windows if it is interrupted (^C); a couple of other bug have been fixed for this platform as well which generally improve the compatibility. - The annotation of 'annotate' is now localized. - The various occurrences where a revision is described by its certs now come with proper localized date output. - Fix problems with newer Lua versions especially when LUA_COMPAT_VARARG not set. Other - Roster handling has been sped up significantly, and roster cache performance has been fixed for the case of overly large rosters. This should be mostly noticable when digging through history (especially initial pulls, since those send so many revisions), and be more noticable for projects with larger trees. The most significant internal change from this is that rosters and marking_maps are now copy-on-write. A longer overview of the internal changes is at: http://lists.gnu.org/archive/html/monotone-devel/2010-02/msg00043.html - Improve the compatibility with newer Botan versions.
2010-03-15 10:51:32 +01:00
DISTNAME= monotone-0.47
CATEGORIES= devel scm
Update monotone to 0.47: Changes - The default '<unknown>' author used by the git_export command has changed to 'Unknown <unknown>' and must be changed in existing author map files. The old '<unknown>' author will be rejected by the new validate_git_author lua hook. - The 'git_export' command now validates all git author and committer values using a new 'validate_git_author' lua hook before they are written to the output stream. The export will fail if any value is rejected by this hook. - The 'git_export' command now calls a new 'unmapped_git_author' lua hook for all git author values not found in the author map file. The default implementation of this hook attempts to produce valid git authors using several default pattern replacements. - The 'get_date_format_spec' lua hook now has an additional parameter which hints at the wanted format (f.e. a short date or a long date time). The default implementation now returns '%x' for short and long dates, '%X' for short and long times (currently unused) and '%x %X' for short and long date times. - The options '--date-format' and '--no-format-dates' are no longer specific to the 'log' command, but can now be used globally. - monotone now prompts only three times for a key password. New features - Added portuguese translation (thanks to Américo Monteiro) Bugs fixed - 'passphrase' now allows an empty new password to be given (fixes monotone bug #28809) - 'automate remote' and 'automate remote_stdio' no longer require an existing database (fixes monotone bug #28885) - monotone no longer throws an exception on Windows if it is interrupted (^C); a couple of other bug have been fixed for this platform as well which generally improve the compatibility. - The annotation of 'annotate' is now localized. - The various occurrences where a revision is described by its certs now come with proper localized date output. - Fix problems with newer Lua versions especially when LUA_COMPAT_VARARG not set. Other - Roster handling has been sped up significantly, and roster cache performance has been fixed for the case of overly large rosters. This should be mostly noticable when digging through history (especially initial pulls, since those send so many revisions), and be more noticable for projects with larger trees. The most significant internal change from this is that rosters and marking_maps are now copy-on-write. A longer overview of the internal changes is at: http://lists.gnu.org/archive/html/monotone-devel/2010-02/msg00043.html - Improve the compatibility with newer Botan versions.
2010-03-15 10:51:32 +01:00
MASTER_SITES= http://monotone.ca/downloads/0.47/
MAINTAINER= jmmv@NetBSD.org
HOMEPAGE= http://monotone.ca/
COMMENT= Free distributed version control system
PKG_DESTDIR_SUPPORT= user-destdir
GCC_REQD+= 3.0
GNU_CONFIGURE= yes
INFO_FILES= yes
2008-09-13 18:19:15 +02:00
TEST_TARGET= check
Update to 0.17: 0.17 release. bug fixes and features. - many, many robustness improvements - more careful checking everywhere - much more thorough test suite - all revisions subject to careful checks before entering database - not yet fully optimized; "pull" may be very slow and use lots of cpu - support for "epochs", to safely manage future rebuilds, hash migration, etc. - new "db check" command, thanks to Derek Scherger <derek@echologic.com>. - now uses sqlite3, thanks to Christof Petig <christof@petig-baender.de>. - removes most former size limitations - "restrictions" support, thanks to Derek Scherger <derek@echologic.com>. - most commands now take a list of files to limit their actions to - monotone can now be run from anywhere in the working directory (not just the root) - new command "monotone setup" required to create a working directory for a new project - important security fix -- don't use shell when calling external merge commands. - format change for "MT/options", ".mt-attrs"; you may have to edit these files - new command "attr" for managing .mt-attrs. - builds merkle tries in-memory -- netsync starts up many times faster - start of new "automate" interface, for shell scripts and others. - new command "cdiff": generates context diffs. - remove most of now-obsolete manifest/file cert support. - 60+ new integration tests. - many portability fixes - in particular, major win32 cleanups, thanks to Jon Bright <jon@siliconcircus.com>. win32 is once again fully and natively supported. - many bug fixes - several incompatible changes: see file UPGRADE for migration information
2005-03-21 23:50:20 +01:00
UNLIMIT_RESOURCES+= datasize
Update to 0.45. Changes since 0.42 follow: Fri Sep 11 20:50:00 UTC 2009 0.45 release. Changes - 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. The database schema has been changed, so you will need to run 'mtn db migrate' (preferably after making a backup copy of your db). 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. 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. 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. There is also a new 'db fix_certs' command which fixes wrong key assignments in migrated databases if you have the correct key available. - The 'resolved_user' conflict resolution is no longer reported by 'automate show_conflicts' for file content conflicts; 'resolved_user_left' is used instead. - 'format_version' was removed from 'automate tags' and 'automate get_attributes' which both do not need this additional versioning information. New features - 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. 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. - 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. - 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/<workspace_path>, so the action can succeed, and the user can recover the files if necessary. - Resolution of orphaned file conflicts is now supported by 'merge --resolve-conflicts' and the 'conflicts' commands. - Duplicate name conflicts now support the 'keep' resolution. - Monotone now accepts ':memory:' as argument to the --db option and sets up a memory-only SQLite database. - 'clone' allows cloning into the current directory when '.' is given as argument. Bugs fixed - Monotone now sanely skips paths with invalid characters it encounters during 'add' or 'automate inventory'. - 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. - The 'conflict' commands can now handle duplicate name conflicts for directories. - 'cvs_import' now properly parses CVS timestamps (again). - Windows' cmd.exe is recognized as smart terminal and thus monotone should create more readable output in netsync operations. Tue May 12 20:44:00 UTC 2009 0.44 release. Changes - 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'. New features - New 'w:' selector type for selecting the revision the workspace is based on. Bugs fixed - C++ exceptions in Lua extension functions are now converted into Lua errors catchable with pcall, instead of causing a crash. - 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. - 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. - 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. - If "automate stdio" is in use, invalid selectors are reported via the automate protocol rather than on stderr. - "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. Internal - Various small code changes to make monotone compile under (Open) Solaris using Sun Studio, and under Windows with Visual C++. - monotone.spec has been removed from the distribution. Sun Mar 22 22:26:00 UTC 2009 0.43 release. Changes - 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. 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. - 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). - 'mtn help <command_or_group>' or 'mtn <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. - 'mtn automate get_current_revision' now returns an empty changeset instead of an error if a workspace contains no changes. New features - 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. - 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. - Additional '--revision' option for 'mtn log' allows logging of selected sets of revisions. - Additional '--full' option for 'mtn db info' to display some statistic analysis of the date certs in the database. - Command line options in the EDITOR and/or VISUAL environment variables are honored; for instance, EDITOR="emacs -nw" works now. (Debian bug #320565.) - The `mtn_automate' lua function now correctly parses and sets options for executed automate commands. - The 'commit' command accepts a non-empty _MTN/log as the log message when '--message-file=_MTN/log' is given. Bugs fixed - 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. - 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. - 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. - 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. - The update command previously did not clear execute permissions from files that had their associated 'mtn:execute' attribute cleared. - 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. - 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. - 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.) - The `p:' selector now accepts single character revision ids. - `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. - Several bugfixes to `mtn automate stdio': * 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. * The stdio event loop no longer quits if a syntax error occurs, but rather discards the wrong state and accepts new (valid) commands. * Option errors haven't been catched properly and thus weren't encoded in stdio either; this has been fixed as well. * 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. Internal - Using 64 bit integer values to represent dates internally. This has no user visible effect. - 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. - 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. - 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.
2009-09-23 18:05:06 +02:00
USE_TOOLS+= gmake makeinfo pax pkg-config
USE_LANGUAGES= c c++
Update to 0.23: Possibly incompatible changes: - hook_note_commit and hook_note_netsync_revision_received take a new argument containing the text of the revision that was received. (Timothy Brownawell <tbrownaw@gmail.com>) - 'cat FILENAME' now acts like the old 'cat file REV FILENAME'; use new commands 'automate get_revision', 'automate get_manifest', 'automate get_file' to fetch objects by hash. (Grahame Bowland <grahame@angrygoats.net>) General improvements: - .mt-ignore support (Martin Dvorak <jezek2@advel.cz>, Timothy Brownawell <tbrownaw@gmail.com>) - much work on making monotone more i18n friendly (Benoît Dejean <benoit@placenet.org>, Matt Johnston <matt@ucc.asn.au>) - support for more interactive merge tools: - FileMerge.app (comes with OS X) (Marcel van der Boom <marcel@hsdev.com>) - TortoiseMerge (Win32; comes with TortoiseSVN) (Matthew Gregan <kinetik@orcon.net.nz>) - rename and drop now actually perform the specified rename or deletion when the argument --execute is passed. (Richard Levitte <richard@levitte.org>) - 'help' command, same as --help (Matt Johnston <matt@ucc.asn.au>). - 'usher' support: experimental method for proxying multiple netsync servers through a single port (similar concept to vhosts) (Timothy Brownawell <tbrownaw@gmail.com>) - support long passphrases (Matt Johnston <matt@ucc.asn.au>) - Faster binary file detection (Eric Anderson <anderse-monotone@cello.hpl.hp.com>) - netsync speedups: - when handling large files (Eric Anderson <anderse-monotone@cello.hpl.hp.com>) - when handling many branches (Marcel van der Boom <marcel@hsdev.com>) - new system to allow crash logs to contain not just execution traces, but also dumps of data being handled when the error was detected -- greatly improves debuggability of user crashes. - complete rework of path handling code, for clarity, robustness, and speed. No user visible changes, except for the many bugs fixed. (Special thanks to Matthew Gregan <kinetik@orcon.net.nz> and Grahame Bowland <grahame@angrygoats.net>.) - however, if you have non-normalized paths in your history (symptom: fresh pulls with 0.18 work, but fresh pulls with 0.19 do not), then 0.23 will report an error and refuse to handle the affected revisions. Since it is believed this only affects one project, and to conserve core developer time, implementing a migration was put off for now. If this causes problems or for more details, please send an email to monotone-devel@nongnu.org. - as always, many small bug fixes, speedups, and improved messages. New translations: - fr (Benoît Dejean <benoit@placenet.org>) - ja (Satoru SATOH <ss@gnome.gr.jp>) Other new monotone-related projects since 0.22: - mtsh by Timothy Brownawell: https://netfiles.uiuc.edu/brownawe/www/mtsh/ GTK+ wrapper for monotone focusing on working copy operations -- add/drop/revert/rename/commit/update/diff and browsing. Has a mechanism for per-file commit comments. - "dumb server" support by Nathaniel Smith (share your monotone repositories via HTTP/FTP, no netsync daemon needed): http://viewmtn.angrygoats.net//branch.psp?branch=net.venge.monotone.dumb Still needs a command-line frontend to be usable, among other things. Help wanted. In python. - m7 by Larry Hastings <larry@hastings.org> http://www.midwinter.com/~lch/programming/m7/ Experimental drop-in command-line wrapper for monotone. Uses certs to add local incrementing version numbers, and an enhanced annotate front-end.
2005-09-30 15:18:24 +02:00
USE_PKGLOCALEDIR= yes
Update to 0.37: Changes - 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 - the "--brief" switch for mtn annotate has been renamed to "--revs-only" for clarity - 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 - 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. - There is a new revision selector: "p:REV" selects the parent(s) of revision REV. For example, if a revision has one parent, mtn diff -r p:REV -r REV will show the changes made in that revision. - 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. 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. - 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. Bugs fixed - 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 - 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) Documentation changes - the documentation of the "--revs-only" (formerly "--brief") switch for the annotate command didn't match its actual behavior, this has been fixed - documentation for the "ssh_agent_add" command was missing and has been added Other - contrib/usher.cc has been removed. Please use the net.venge.monotone.contrib.usher branch instead. Internal - Update SQLite to 3.4.1. - Update Lua to 5.1.2 plus latest bug fixes. - Update Botan to 1.5.10. - 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.)
2007-10-26 16:08:24 +02:00
CONFIGURE_ARGS+= --with-system-pcre
PKG_OPTIONS_VAR= PKG_OPTIONS.monotone
PKG_SUPPORTED_OPTIONS= inet6
CHECK_INTERPRETER_SKIP+= share/monotone/contrib/*
CHECK_PORTABILITY_SKIP+= debian/*
Update to monotone-0.41. pkgsrc-specific changes: add REPLACE_SH for new bin/mtnopt shell script. Remove unneeded patch-aa; the bug is no longer. NEWS: Changes - '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. - 'mtn automate inventory' will show the birth revision for any file that has been committed. Bugs fixed - 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'. - 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. - It was previously not possible to clone a branch / database anonymously; this has been fixed. - If the client tries to use an unknown key, try to fall back to anonymous pull instead of failing immediately. - '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. - Monotone would produce a warning if executed from the root directory of a Windows drive; this has been fixed. - The 'note_commit' hook now returns the new revision id hex-encoded again - the bug was introduced in 0.40. New features - 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. This feature was already added in monotone 0.37, but was forgotten to be mentioned in NEWS back then. - 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'. - Add 'automate show_conflicts' command. - Add 'automate get_workspace_root' command. - Add Lua hooks 'note_netsync_revision_sent', 'note_netsync_cert_sent' and 'note_netsync_pubkey_sent'.
2008-09-05 22:48:46 +02:00
REPLACE_SH= mtnopt
.include "../../mk/bsd.options.mk"
.if !empty(PKG_OPTIONS:Minet6)
CONFIGURE_ARGS+= --enable-ipv6
.else
CONFIGURE_ARGS+= --disable-ipv6
.endif
post-install:
${INSTALL_DATA_DIR} ${DESTDIR}${PREFIX}/share/monotone
cd ${WRKSRC} && rm -rf contrib/.deps && \
pax -rw -pm contrib \
${DESTDIR}${PREFIX}/share/monotone
cd ${WRKSRC} && pax -rw -pm figures/*.png \
Update to 0.36: Changes - The help command is now able to show documentation on subcommands (such as 'attr set'). - The help command now shows a brief abstract of each command, instead of only listing their names. - The command `list changed` now outputs the new path of any renamed item making it easier to copy and paste these paths for external program usage. - `automate attributes` has been renamed to `automate get_attributes`, also a bug has been fixed there so resurrected attributes are now properly outputted as "new" and not "changed". New features - Two new commands to set and drop attributes over automate: `automate set_attribute` and `automate drop_attribute` - There is a new function available to the lua hooks, 'server_request_sync(what, address, include, exclude)', which will initate a netsync connection to the server at "address", with the given include and exclude patterns, and will sync, push, or pull, as given in the "what" argument. If called from a monotone instance which is not acting as a server, this function will do nothing. - There is a new hook available, 'get_netsync_key(server, include, exclude)', which is called to determine which key to use for netsync operations. Note that the server calls this once at startup with the address it is listening on, "*", and "" as arguments, rather than for each connection. Other - Giving the --confdir argument will automatically set the key store directory to keys/ under that directory, unless --keydir is also given. This is a bugfix. - Fixed a regression in 0.35 that resulted in some databases becoming significantly larger when storing new revisions. Existing databases with this problem can be fixed by pulling into a fresh database using 0.36. - contrib/lua-mode.el, a Lua mode for GNU emacs. - contrib/monotone-buildbot-notification.lua, a netsync hook to have a server notify a buildbot when new changes have arrived. Useful for anyone who uses a buildbot with monotone as source. - contrib/monotone-cluster-push.lua, a netsync hook script to have arriving changes be forwarded to other servers automatically. It uses the new internal lua function 'server_request_sync'. - contrib/mtn_makepermissions, a simple script to create read-permissions and write-permissions from files in the directories read-permissions.d and write-permissions.d, Debian style. - contrib/Monotone.pm, a first attempt to write a Perl module to interface with 'monotone automate stdio'. - contrib/monotone-import.pl has been removed since monotone now has an internal import command. Internal - Commands are now defined as a tree of commands instead of a plain list, which allows the help system to look up information of a command at an level in the tree. - The command class, the automate class and all the associated macros have been cleaned up. - All C++ files now depend on base.hh, which includes the few things that are used virtually everywhere. 'make distcheck' will check for the presence of base.hh in all source files and will protest if it's not there. This is explained further in HACKING. - Update the internal SQLite to version 3.4.0. - Updated Visual C building system, which now also builds the test programs. The script visualc/runtests.bat can be used to run the tests. - Monotone can now be built successfully with Boost 1.34. Older versions of monotone would sometimes seem to work depending on the compiler used, but would have bugs in path normalization. - Monotone now requires Boost 1.33 or later. - The Boost filesystem library is no longer required. - The Boost unit test system is no longer required.
2007-08-03 20:01:23 +02:00
${DESTDIR}${PREFIX}/share/doc/monotone
Update to 0.39: Changes - 'mtn di' is now an alias for 'mtn diff'. - 'automate db_set' has been renamed to 'automate set_db_variable'. - '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. - The REVID argument of 'automate get_revision' is now mandatory; to retrieve the current workspace revision, use the new command 'automate get_current_revision' - messages describing conflicts from all of the various merge commands have been reworked and should be much more informative. - 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. - 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. - "emacs" has been removed from the list of dumb terminal types; tickers should now default to --ticker=count with emacs terminals - extensive section on merge conflicts and ways to resolve them added to the manual. Bugs fixed - for changes near the beginning of a file, mtn's unified diff output sometimes contained too many leading context lines. - 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/". - a few changes needed to build with gcc 4.3. New features - 'automate drop_db_variables' which drops one database variable (like the 'unset' command) or all variables within a given domain. - '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. - 'automate get_current_revision' which outputs the revision text of changes in the current workspace
2008-02-27 15:16:50 +01:00
BUILDLINK_API_DEPENDS.pcre+= pcre>=7.6
.include "../../converters/libiconv/buildlink3.mk"
Update to 0.45. Changes since 0.42 follow: Fri Sep 11 20:50:00 UTC 2009 0.45 release. Changes - 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. The database schema has been changed, so you will need to run 'mtn db migrate' (preferably after making a backup copy of your db). 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. 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. 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. There is also a new 'db fix_certs' command which fixes wrong key assignments in migrated databases if you have the correct key available. - The 'resolved_user' conflict resolution is no longer reported by 'automate show_conflicts' for file content conflicts; 'resolved_user_left' is used instead. - 'format_version' was removed from 'automate tags' and 'automate get_attributes' which both do not need this additional versioning information. New features - 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. 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. - 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. - 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/<workspace_path>, so the action can succeed, and the user can recover the files if necessary. - Resolution of orphaned file conflicts is now supported by 'merge --resolve-conflicts' and the 'conflicts' commands. - Duplicate name conflicts now support the 'keep' resolution. - Monotone now accepts ':memory:' as argument to the --db option and sets up a memory-only SQLite database. - 'clone' allows cloning into the current directory when '.' is given as argument. Bugs fixed - Monotone now sanely skips paths with invalid characters it encounters during 'add' or 'automate inventory'. - 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. - The 'conflict' commands can now handle duplicate name conflicts for directories. - 'cvs_import' now properly parses CVS timestamps (again). - Windows' cmd.exe is recognized as smart terminal and thus monotone should create more readable output in netsync operations. Tue May 12 20:44:00 UTC 2009 0.44 release. Changes - 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'. New features - New 'w:' selector type for selecting the revision the workspace is based on. Bugs fixed - C++ exceptions in Lua extension functions are now converted into Lua errors catchable with pcall, instead of causing a crash. - 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. - 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. - 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. - If "automate stdio" is in use, invalid selectors are reported via the automate protocol rather than on stderr. - "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. Internal - Various small code changes to make monotone compile under (Open) Solaris using Sun Studio, and under Windows with Visual C++. - monotone.spec has been removed from the distribution. Sun Mar 22 22:26:00 UTC 2009 0.43 release. Changes - 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. 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. - 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). - 'mtn help <command_or_group>' or 'mtn <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. - 'mtn automate get_current_revision' now returns an empty changeset instead of an error if a workspace contains no changes. New features - 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. - 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. - Additional '--revision' option for 'mtn log' allows logging of selected sets of revisions. - Additional '--full' option for 'mtn db info' to display some statistic analysis of the date certs in the database. - Command line options in the EDITOR and/or VISUAL environment variables are honored; for instance, EDITOR="emacs -nw" works now. (Debian bug #320565.) - The `mtn_automate' lua function now correctly parses and sets options for executed automate commands. - The 'commit' command accepts a non-empty _MTN/log as the log message when '--message-file=_MTN/log' is given. Bugs fixed - 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. - 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. - 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. - 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. - The update command previously did not clear execute permissions from files that had their associated 'mtn:execute' attribute cleared. - 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. - 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. - 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.) - The `p:' selector now accepts single character revision ids. - `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. - Several bugfixes to `mtn automate stdio': * 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. * The stdio event loop no longer quits if a syntax error occurs, but rather discards the wrong state and accepts new (valid) commands. * Option errors haven't been catched properly and thus weren't encoded in stdio either; this has been fixed as well. * 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. Internal - Using 64 bit integer values to represent dates internally. This has no user visible effect. - 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. - 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. - 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.
2009-09-23 18:05:06 +02:00
.include "../../databases/sqlite3/buildlink3.mk"
Update to 0.37: Changes - 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 - the "--brief" switch for mtn annotate has been renamed to "--revs-only" for clarity - 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 - 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. - There is a new revision selector: "p:REV" selects the parent(s) of revision REV. For example, if a revision has one parent, mtn diff -r p:REV -r REV will show the changes made in that revision. - 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. 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. - 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. Bugs fixed - 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 - 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) Documentation changes - the documentation of the "--revs-only" (formerly "--brief") switch for the annotate command didn't match its actual behavior, this has been fixed - documentation for the "ssh_agent_add" command was missing and has been added Other - contrib/usher.cc has been removed. Please use the net.venge.monotone.contrib.usher branch instead. Internal - Update SQLite to 3.4.1. - Update Lua to 5.1.2 plus latest bug fixes. - Update Botan to 1.5.10. - 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.)
2007-10-26 16:08:24 +02:00
.include "../../devel/boost-headers/buildlink3.mk"
.include "../../devel/gettext-lib/buildlink3.mk"
Update to 0.45. Changes since 0.42 follow: Fri Sep 11 20:50:00 UTC 2009 0.45 release. Changes - 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. The database schema has been changed, so you will need to run 'mtn db migrate' (preferably after making a backup copy of your db). 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. 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. 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. There is also a new 'db fix_certs' command which fixes wrong key assignments in migrated databases if you have the correct key available. - The 'resolved_user' conflict resolution is no longer reported by 'automate show_conflicts' for file content conflicts; 'resolved_user_left' is used instead. - 'format_version' was removed from 'automate tags' and 'automate get_attributes' which both do not need this additional versioning information. New features - 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. 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. - 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. - 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/<workspace_path>, so the action can succeed, and the user can recover the files if necessary. - Resolution of orphaned file conflicts is now supported by 'merge --resolve-conflicts' and the 'conflicts' commands. - Duplicate name conflicts now support the 'keep' resolution. - Monotone now accepts ':memory:' as argument to the --db option and sets up a memory-only SQLite database. - 'clone' allows cloning into the current directory when '.' is given as argument. Bugs fixed - Monotone now sanely skips paths with invalid characters it encounters during 'add' or 'automate inventory'. - 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. - The 'conflict' commands can now handle duplicate name conflicts for directories. - 'cvs_import' now properly parses CVS timestamps (again). - Windows' cmd.exe is recognized as smart terminal and thus monotone should create more readable output in netsync operations. Tue May 12 20:44:00 UTC 2009 0.44 release. Changes - 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'. New features - New 'w:' selector type for selecting the revision the workspace is based on. Bugs fixed - C++ exceptions in Lua extension functions are now converted into Lua errors catchable with pcall, instead of causing a crash. - 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. - 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. - 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. - If "automate stdio" is in use, invalid selectors are reported via the automate protocol rather than on stderr. - "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. Internal - Various small code changes to make monotone compile under (Open) Solaris using Sun Studio, and under Windows with Visual C++. - monotone.spec has been removed from the distribution. Sun Mar 22 22:26:00 UTC 2009 0.43 release. Changes - 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. 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. - 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). - 'mtn help <command_or_group>' or 'mtn <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. - 'mtn automate get_current_revision' now returns an empty changeset instead of an error if a workspace contains no changes. New features - 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. - 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. - Additional '--revision' option for 'mtn log' allows logging of selected sets of revisions. - Additional '--full' option for 'mtn db info' to display some statistic analysis of the date certs in the database. - Command line options in the EDITOR and/or VISUAL environment variables are honored; for instance, EDITOR="emacs -nw" works now. (Debian bug #320565.) - The `mtn_automate' lua function now correctly parses and sets options for executed automate commands. - The 'commit' command accepts a non-empty _MTN/log as the log message when '--message-file=_MTN/log' is given. Bugs fixed - 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. - 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. - 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. - 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. - The update command previously did not clear execute permissions from files that had their associated 'mtn:execute' attribute cleared. - 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. - 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. - 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.) - The `p:' selector now accepts single character revision ids. - `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. - Several bugfixes to `mtn automate stdio': * 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. * The stdio event loop no longer quits if a syntax error occurs, but rather discards the wrong state and accepts new (valid) commands. * Option errors haven't been catched properly and thus weren't encoded in stdio either; this has been fixed as well. * 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. Internal - Using 64 bit integer values to represent dates internally. This has no user visible effect. - 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. - 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. - 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.
2009-09-23 18:05:06 +02:00
.include "../../devel/libidn/buildlink3.mk"
Update to 0.37: Changes - 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 - the "--brief" switch for mtn annotate has been renamed to "--revs-only" for clarity - 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 - 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. - There is a new revision selector: "p:REV" selects the parent(s) of revision REV. For example, if a revision has one parent, mtn diff -r p:REV -r REV will show the changes made in that revision. - 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. 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. - 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. Bugs fixed - 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 - 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) Documentation changes - the documentation of the "--revs-only" (formerly "--brief") switch for the annotate command didn't match its actual behavior, this has been fixed - documentation for the "ssh_agent_add" command was missing and has been added Other - contrib/usher.cc has been removed. Please use the net.venge.monotone.contrib.usher branch instead. Internal - Update SQLite to 3.4.1. - Update Lua to 5.1.2 plus latest bug fixes. - Update Botan to 1.5.10. - 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.)
2007-10-26 16:08:24 +02:00
.include "../../devel/pcre/buildlink3.mk"
Update to 0.45. Changes since 0.42 follow: Fri Sep 11 20:50:00 UTC 2009 0.45 release. Changes - 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. The database schema has been changed, so you will need to run 'mtn db migrate' (preferably after making a backup copy of your db). 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. 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. 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. There is also a new 'db fix_certs' command which fixes wrong key assignments in migrated databases if you have the correct key available. - The 'resolved_user' conflict resolution is no longer reported by 'automate show_conflicts' for file content conflicts; 'resolved_user_left' is used instead. - 'format_version' was removed from 'automate tags' and 'automate get_attributes' which both do not need this additional versioning information. New features - 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. 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. - 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. - 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/<workspace_path>, so the action can succeed, and the user can recover the files if necessary. - Resolution of orphaned file conflicts is now supported by 'merge --resolve-conflicts' and the 'conflicts' commands. - Duplicate name conflicts now support the 'keep' resolution. - Monotone now accepts ':memory:' as argument to the --db option and sets up a memory-only SQLite database. - 'clone' allows cloning into the current directory when '.' is given as argument. Bugs fixed - Monotone now sanely skips paths with invalid characters it encounters during 'add' or 'automate inventory'. - 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. - The 'conflict' commands can now handle duplicate name conflicts for directories. - 'cvs_import' now properly parses CVS timestamps (again). - Windows' cmd.exe is recognized as smart terminal and thus monotone should create more readable output in netsync operations. Tue May 12 20:44:00 UTC 2009 0.44 release. Changes - 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'. New features - New 'w:' selector type for selecting the revision the workspace is based on. Bugs fixed - C++ exceptions in Lua extension functions are now converted into Lua errors catchable with pcall, instead of causing a crash. - 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. - 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. - 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. - If "automate stdio" is in use, invalid selectors are reported via the automate protocol rather than on stderr. - "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. Internal - Various small code changes to make monotone compile under (Open) Solaris using Sun Studio, and under Windows with Visual C++. - monotone.spec has been removed from the distribution. Sun Mar 22 22:26:00 UTC 2009 0.43 release. Changes - 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. 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. - 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). - 'mtn help <command_or_group>' or 'mtn <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. - 'mtn automate get_current_revision' now returns an empty changeset instead of an error if a workspace contains no changes. New features - 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. - 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. - Additional '--revision' option for 'mtn log' allows logging of selected sets of revisions. - Additional '--full' option for 'mtn db info' to display some statistic analysis of the date certs in the database. - Command line options in the EDITOR and/or VISUAL environment variables are honored; for instance, EDITOR="emacs -nw" works now. (Debian bug #320565.) - The `mtn_automate' lua function now correctly parses and sets options for executed automate commands. - The 'commit' command accepts a non-empty _MTN/log as the log message when '--message-file=_MTN/log' is given. Bugs fixed - 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. - 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. - 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. - 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. - The update command previously did not clear execute permissions from files that had their associated 'mtn:execute' attribute cleared. - 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. - 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. - 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.) - The `p:' selector now accepts single character revision ids. - `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. - Several bugfixes to `mtn automate stdio': * 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. * The stdio event loop no longer quits if a syntax error occurs, but rather discards the wrong state and accepts new (valid) commands. * Option errors haven't been catched properly and thus weren't encoded in stdio either; this has been fixed as well. * 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. Internal - Using 64 bit integer values to represent dates internally. This has no user visible effect. - 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. - 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. - 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.
2009-09-23 18:05:06 +02:00
.include "../../lang/lua/buildlink3.mk"
.include "../../security/botan/buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"