# # # patch "NEWS" # from [f36c9a7ea8c52a74a822b2d2d248aa35c8259d0e] # to [c2114e3597f77fa5e2408fc16c4ad313afba60cd] # # patch "automate.cc" # from [fce0bfb5651e4b12b02d8efc1050ab0ccffe1981] # to [fa24428de48ae21e3a4cd877ac6af11055383399] # # patch "cmd_automate.cc" # from [d715e6735b4a263881a587911a343aa06b339706] # to [f507718f94531c96f86f38ec3582d7892b802136] # # patch "monotone.texi" # from [31f04971d6258ad56e5aa5decae4d616bfa20349] # to [a3060533beabafb85b1d20b5d0e6ce513f079220] # ============================================================ --- NEWS f36c9a7ea8c52a74a822b2d2d248aa35c8259d0e +++ NEWS c2114e3597f77fa5e2408fc16c4ad313afba60cd @@ -1,3 +1,21 @@ +??? ??? ?? ??:??:?? UTC 2008 + + 0.39 release. + + Changes + + - '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. + + New features + + - 'automate drop_db_variables' which drops one database variable + (like the 'unset' command) or all variables within a given domain. + + Wed Dec 12 21:21:15 UTC 2007 0.38 release. @@ -15,7 +33,7 @@ Wed Dec 12 21:21:15 UTC 2007 - mtn now checks for your key before a merge action takes place to ensure that any manually merged file isn't lost in an error case - + Bugs fixed - a bug introduced in 0.37 prevented an external merger from being @@ -23,8 +41,8 @@ Wed Dec 12 21:21:15 UTC 2007 - mtn read successfully reads revision data, and cert packets again - - mtn consistently supports certs with empty values - (fixed 'ls certs' and 'read') + - mtn consistently supports certs with empty values + (fixed 'ls certs' and 'read') Internal @@ -32,7 +50,7 @@ Wed Dec 12 21:21:15 UTC 2007 - Moved the gzip implementation out of the Botan directory. - Other + Other - Added the scripts of the following Lua-based contributed Monotone extension commands to contrib/command/: @@ -41,8 +59,8 @@ Wed Dec 12 21:21:15 UTC 2007 - Added a hooks version of the contributed ciabot script, contrib/ciabot_monotone_hookversion.lua - - The monotone manual is now licensed under the GPL rather than - the GFDL. + - The monotone manual is now licensed under the GPL rather than + the GFDL. Fri Oct 25 22:35:33 UTC 2007 @@ -1865,10 +1883,10 @@ Sun Apr 10 17:49:25 PDT 2005 Sun Apr 10 17:49:25 PDT 2005 0.18 release. performance improvements, features, and bug fixes. - This release is dedicated to Shweta Narayan. + This release is dedicated to Shweta Narayan. - most operations sped up by a factor of 2 or better; many sped up - by up several orders of magnitude. + by up several orders of magnitude. - special thanks to Matt Johnston , Derek Scherger , Linus Torvalds . @@ -1888,12 +1906,12 @@ Sun Apr 10 17:49:25 PDT 2005 previously synced with, to prevent man-in-the-middle attacks. - several powerful new "automate" commands added. - - new command 'ls known', lists files that are under version - control. Thanks to Florian Weimer . - - preliminary "inodeprints" functionality -- speeds up diff, - status, etc. No UI or documentation yet -- in a working - copy, 'touch MT/inodeprints' to enable, then commit or - update to populate cache. + - new command 'ls known', lists files that are under version + control. Thanks to Florian Weimer . + - preliminary "inodeprints" functionality -- speeds up diff, + status, etc. No UI or documentation yet -- in a working + copy, 'touch MT/inodeprints' to enable, then commit or + update to populate cache. - UI improvements: - Added short options -r, -b, -k, -m. - default to 'dot' ticker-style when stderr is @@ -1915,9 +1933,9 @@ Sun Apr 10 17:49:25 PDT 2005 email notification, Bash completion. - 33 new integration tests. total line coverage: ~82%. - many bug fixes - - Special thanks to Matt Johnston , - for going above and beyond to track down the last - release blocker. + - Special thanks to Matt Johnston , + for going above and beyond to track down the last + release blocker. - upgrading from 0.17 requires only a 'db migrate'. @@ -1970,214 +1988,214 @@ Thu Dec 30 01:37:54 EST 2004 Thu Dec 30 01:37:54 EST 2004 - 0.16 release. bug fixes. + 0.16 release. bug fixes. - - 50+ new integration tests - - many NetBSD portability fixes - - release build on gcc 3.4 / FC3 - - masses of changeset bugs in 0.15 fixed + - 50+ new integration tests + - many NetBSD portability fixes + - release build on gcc 3.4 / FC3 + - masses of changeset bugs in 0.15 fixed - - some bogus changesets were generated - in the 0.16 development cycle. you will - need to rebuild revision graph. + - some bogus changesets were generated + in the 0.16 development cycle. you will + need to rebuild revision graph. Sun Nov 7 14:06:03 EST 2004 - 0.15 release. major changes. + 0.15 release. major changes. - - overhauled the internal representation of changes. see - README.changesets for details - - fixed bugs in merkle trie synchronization code - - fixed echoing and progress UI bugs - (helps when using in emacs) - - upgraded cryptopp to 5.2.1 - - fixed bug 8715, diff hunk coordinate reporting - - added figures, new tutorial to manual - - improve accuracy of log command - - several build, configure, and linkage fixes - - some OSX / PPC portability fixes + - overhauled the internal representation of changes. see + README.changesets for details + - fixed bugs in merkle trie synchronization code + - fixed echoing and progress UI bugs + (helps when using in emacs) + - upgraded cryptopp to 5.2.1 + - fixed bug 8715, diff hunk coordinate reporting + - added figures, new tutorial to manual + - improve accuracy of log command + - several build, configure, and linkage fixes + - some OSX / PPC portability fixes Sat Jul 31 15:38:02 EDT 2004 - 0.14 release. bug fixes. + 0.14 release. bug fixes. - - some compile fixes for g++ 3.4 - - made --dump=FILE option for saving traces, - otherwise failures just print reason (no trace) - - some things disabled, as scheduled for replacement - by upcoming changeset branch work - - disabled "disapprove" command due to bad semantics - - removed "bump" and .mt-nonce machinery - - several critical rename-merging bugs fixed - - renames vs. deletes - - renames vs. deltas - - parallel renames - - bugs fixed from savannah bug tracker: - - 9223 argv overflow - - 9075 empty commits - - 8919 rename --verbose to --debug - - 8958 rename debug to db execute - - 8920 empty passphrase message - - 8917 connection refused message - - 8913 testresult argument - - 8912 passphrase read on serve - - 8472 approve into branch - - 8428 duplicate key warning - - 8928 nonce uses too many bits + - some compile fixes for g++ 3.4 + - made --dump=FILE option for saving traces, + otherwise failures just print reason (no trace) + - some things disabled, as scheduled for replacement + by upcoming changeset branch work + - disabled "disapprove" command due to bad semantics + - removed "bump" and .mt-nonce machinery + - several critical rename-merging bugs fixed + - renames vs. deletes + - renames vs. deltas + - parallel renames + - bugs fixed from savannah bug tracker: + - 9223 argv overflow + - 9075 empty commits + - 8919 rename --verbose to --debug + - 8958 rename debug to db execute + - 8920 empty passphrase message + - 8917 connection refused message + - 8913 testresult argument + - 8912 passphrase read on serve + - 8472 approve into branch + - 8428 duplicate key warning + - 8928 nonce uses too many bits Thu May 20 22:26:27 EDT 2004 - 0.13 release. bug fixes. + 0.13 release. bug fixes. - - remove (file|manifest) in several commands - - "list missing" command - - fixed bugs: - - (critical) empty data netsync crash - - mkstemp, platform lua - - runtime error reporting chatter - - non-posix database names - - non-posix dirnames - - non-posix merge names - - 2-way merge algorithm and hook - - single-character filenames - - multiple password reads - - .svn ignore pattern + - remove (file|manifest) in several commands + - "list missing" command + - fixed bugs: + - (critical) empty data netsync crash + - mkstemp, platform lua + - runtime error reporting chatter + - non-posix database names + - non-posix dirnames + - non-posix merge names + - 2-way merge algorithm and hook + - single-character filenames + - multiple password reads + - .svn ignore pattern Sun May 2 21:03:38 EDT 2004 - 0.12 release. win32 port, bug fixes and optimizations. + 0.12 release. win32 port, bug fixes and optimizations. - - ported to native win32 (mingw) - - implemented human friendly version selectors - - added post-commit hook for change notification - - removed spirit-based parsers, reduced compile costs - - many netsync bugs removed, pipeline performance improved - - removed old, deprecated networking system - - several minor CVS import bugs fixed - - upgraded bundled netxx + - ported to native win32 (mingw) + - implemented human friendly version selectors + - added post-commit hook for change notification + - removed spirit-based parsers, reduced compile costs + - many netsync bugs removed, pipeline performance improved + - removed old, deprecated networking system + - several minor CVS import bugs fixed + - upgraded bundled netxx Sun Mar 28 12:41:07 EST 2004 - 0.11 release. bug fixes and optimizations. + 0.11 release. bug fixes and optimizations. - NOTE: this release expands the sqlite page size. YOU WILL NEED - to dump existing databases before upgrading and reload it - after upgrading, otherwise monotone will complain that the - database image appears malformed. this condition cannot - unfortunately be distinguished from a real malformed image on - disk. for example: + NOTE: this release expands the sqlite page size. YOU WILL NEED + to dump existing databases before upgrading and reload it + after upgrading, otherwise monotone will complain that the + database image appears malformed. this condition cannot + unfortunately be distinguished from a real malformed image on + disk. for example: - $ monotone --db=my.db db dump >dump.sql - $ - $ mv my.db my.db.backup - $ monotone --db=my.db db load dump.sql + $ + $ mv my.db my.db.backup + $ monotone --db=my.db db load 8k + - fixed bugs: + - aliasing bug on debian (-O2 now works) + - netsync ppc portability / checksums + - sha1 whitespace bug + - netsync broken formatter + - broken symlink handling + - merger execution pessimism + - LCA bitset calculation pessimism + - static object initialization order + - CVS single-version import + - CVS first-version changelog + - CVS branch inference and topology + - cryptographic SSE2 paths enabled on linux/x86. + - builds against boost 1.31.0. + - removed boost::socket + - removed documentation about old networking system. + - "officially" deprecated old networking system. + - enable building with system-local libraries. + - upgraded bundled sqlite. + - changed sqlite page size from 1k -> 8k Mon Mar 1 00:32:07 EST 2004 - 0.10 release. new "netsync" protocol implemented, allowing - direct monotone-to-monotone database synchronization. random - number underflow problem fixed. more tests added. database - schema changed, must migrate schema. added new QA logic to - update and merge algorithms (testresult / approval). + 0.10 release. new "netsync" protocol implemented, allowing + direct monotone-to-monotone database synchronization. random + number underflow problem fixed. more tests added. database + schema changed, must migrate schema. added new QA logic to + update and merge algorithms (testresult / approval). Thu Jan 1 18:23:06 EST 2004 - 0.9 release. support international users (non-ASCII character - sets, locales). some corrections to update algorithm. line - merging algorithm reimplemented. support working copy - MT/monotonerc file. broke format compatibility with MT/work - files; commit any pending work before upgrading. permit - spaces, colons, other "funny" characters in filenames. support - HTTP 1.1, HTTP proxies, handle some corner cases in ancestry - graph and database faults. + 0.9 release. support international users (non-ASCII character + sets, locales). some corrections to update algorithm. line + merging algorithm reimplemented. support working copy + MT/monotonerc file. broke format compatibility with MT/work + files; commit any pending work before upgrading. permit + spaces, colons, other "funny" characters in filenames. support + HTTP 1.1, HTTP proxies, handle some corner cases in ancestry + graph and database faults. Fri Nov 21 20:25:26 EST 2003 - 0.8 release. row size increased to 16mb. more performance - improvements in cvs importer. cvs branch tags imported now. - minor UI improvements. new commands: SQL dump and load, vcheck - for enhanced collision detection, queue addtree for recursive - queueing. improved networking scalability. historical rename - certs and .mt-attrs file format changed to accomodate upcoming - i18n work. + 0.8 release. row size increased to 16mb. more performance + improvements in cvs importer. cvs branch tags imported now. + minor UI improvements. new commands: SQL dump and load, vcheck + for enhanced collision detection, queue addtree for recursive + queueing. improved networking scalability. historical rename + certs and .mt-attrs file format changed to accomodate upcoming + i18n work. Sun Nov 2 23:38:09 EST 2003 - 0.7 release. many critical merge and patch set calculation - bugs fixed. groups merged with URLs, "monotone db migrate" - necessary. directory renames and explicit rename certs - supported. added SMTP support. incorporated adns library, - avoiding gethostbyname(). new queue commands. + 0.7 release. many critical merge and patch set calculation + bugs fixed. groups merged with URLs, "monotone db migrate" + necessary. directory renames and explicit rename certs + supported. added SMTP support. incorporated adns library, + avoiding gethostbyname(). new queue commands. Sat Oct 18 22:10:09 EDT 2003 - 0.6 release. more stability and bug fixing, including fix to - some silent failures in LCA calculation. some minor new - features: persistent attributes (eg. 'the execute bit'), - rename and log commands. performance of cvs importer greatly - improved, lua system upgraded to 5.0, much expanded - documentation. + 0.6 release. more stability and bug fixing, including fix to + some silent failures in LCA calculation. some minor new + features: persistent attributes (eg. 'the execute bit'), + rename and log commands. performance of cvs importer greatly + improved, lua system upgraded to 5.0, much expanded + documentation. Sat Sep 27 11:50:08 EDT 2003 - 0.5 release. stability and bug fixing. many UI issues - addressed, including SHA1 completion, persistent options, new - revert command and new diff modes. database migration, - inspection and debugging interfaces added. LCS algorithm and - line-merger overhauled. several multi-depot bugs - fixed. existing depot databases should be migrated (depot.cgi - migratedb). + 0.5 release. stability and bug fixing. many UI issues + addressed, including SHA1 completion, persistent options, new + revert command and new diff modes. database migration, + inspection and debugging interfaces added. LCS algorithm and + line-merger overhauled. several multi-depot bugs + fixed. existing depot databases should be migrated (depot.cgi + migratedb). Thu Sep 4 15:40:07 EDT 2003 - 0.4 release. monotone is now self-hosting. database - compatibility broken since 0.3. depot uses RSA signatures now, - not mac keys. many bugs removed. depot database compatibility - broken. database schemas should now remain stable (or be - provided with safe schema-upgrading function). + 0.4 release. monotone is now self-hosting. database + compatibility broken since 0.3. depot uses RSA signatures now, + not mac keys. many bugs removed. depot database compatibility + broken. database schemas should now remain stable (or be + provided with safe schema-upgrading function). Mon Aug 25 18:00:37 EDT 2003 - 0.3 release. database compatibility broken. packet format - compatibility broken. dropped boost sandbox library dependency. - redid networking to support private HTTP+CGI depots along with - netnews. wrote depot. added 'propagate' command to move changes - between branches asymmetrically. rewrote testsuite in autotest. - cleaned up command line processing. expanded testsuite. improved - user-friendly error reporting. + 0.3 release. database compatibility broken. packet format + compatibility broken. dropped boost sandbox library dependency. + redid networking to support private HTTP+CGI depots along with + netnews. wrote depot. added 'propagate' command to move changes + between branches asymmetrically. rewrote testsuite in autotest. + cleaned up command line processing. expanded testsuite. improved + user-friendly error reporting. Fri Aug 8 10:20:01 EDT 2003 - 0.2 release. database compatibility broken. dropped many - library dependencies. hand-reimplemented xdelta, parts of - nana. incorporated subset of cryptopp and sqlite into - sources. added RCS and CVS importer. switched to piecewise - reconstruction. generally much more robust storage system. - scalability tests against real world CVS archives show - performance gap with CVS closing, but still present. + 0.2 release. database compatibility broken. dropped many + library dependencies. hand-reimplemented xdelta, parts of + nana. incorporated subset of cryptopp and sqlite into + sources. added RCS and CVS importer. switched to piecewise + reconstruction. generally much more robust storage system. + scalability tests against real world CVS archives show + performance gap with CVS closing, but still present. Sun Apr 6 20:20:42 EDT 2003 + initial release - initial release ============================================================ --- automate.cc fce0bfb5651e4b12b02d8efc1050ab0ccffe1981 +++ automate.cc fa24428de48ae21e3a4cd877ac6af11055383399 @@ -1499,6 +1499,9 @@ namespace symbol const private_hash("private_hash"); symbol const public_location("public_location"); symbol const private_location("private_location"); + + symbol const domain("domain"); + symbol const entry("entry"); } }; @@ -1875,19 +1878,88 @@ CMD_AUTOMATE(cert, N_("REVISION-ID NAME guard.commit(); } -// Name: db_set +// Name: get_db_variables // Arguments: // variable domain +// Changes: +// 4.1 (added as 'db_get') +// 7.0 (changed to 'get_db_variables', output is now basic_io) +// Purpose: +// Retrieves db variables, optionally filtered by DOMAIN +// Output format: +// basic_io, see the mtn docs for details +// Error conditions: +// none +CMD_AUTOMATE(get_db_variables, N_("[DOMAIN]"), + N_("Retrieve database variables"), + "", + options::opts::none) +{ + N(args.size() < 2, + F("wrong argument count")); + + bool filter_by_domain = false; + var_domain filter; + if (args.size() == 1) + { + filter_by_domain = true; + filter = var_domain(idx(args, 0)()); + } + + map vars; + app.db.get_vars(vars); + + var_domain cur_domain; + basic_io::stanza st; + basic_io::printer pr; + bool found_something = false; + + for (map::const_iterator i = vars.begin(); + i != vars.end(); ++i) + { + if (filter_by_domain && !(i->first.first == filter)) + continue; + + found_something = true; + + if (cur_domain != i->first.first) + { + // check if we need to print a previous stanza + if (st.entries.size() > 0) + { + pr.print_stanza(st); + st.entries.clear(); + } + cur_domain = i->first.first; + st.push_str_pair(syms::domain, cur_domain()); + } + + st.push_str_triple(syms::entry, i->first.second(), i->second()); + } + + N(found_something, + F("No variables found or invalid domain specified")); + + // print the last stanza + pr.print_stanza(st); + output.write(pr.buf.data(), pr.buf.size()); +} + +// Name: set_db_variable +// Arguments: +// variable domain // variable name // veriable value -// Added in: 4.1 +// Changes: +// 4.1 (added as 'db_set') +// 7.0 (renamed to 'set_db_variable') // Purpose: // Set a database variable (like mtn database set) // Output format: // nothing // Error conditions: // none -CMD_AUTOMATE(db_set, N_("DOMAIN NAME VALUE"), +CMD_AUTOMATE(set_db_variable, N_("DOMAIN NAME VALUE"), N_("Sets a database variable"), "", options::opts::none) @@ -1902,38 +1974,56 @@ CMD_AUTOMATE(db_set, N_("DOMAIN NAME VAL app.db.set_var(key, var_value(value())); } -// Name: db_get +// Name: drop_db_variables // Arguments: // variable domain // variable name -// Added in: 4.1 +// Changes: +// 7.0 (added) // Purpose: -// Get a database variable (like mtn database ls vars | grep NAME) +// Drops a database variable (like mtn unset DOMAIN NAME) or all variables +// within a domain // Output format: -// variable value +// none // Error conditions: -// a runtime exception is thrown if the variable is not set -CMD_AUTOMATE(db_get, N_("DOMAIN NAME"), - N_("Gets a database variable"), +// a runtime exception is thrown if the variable was not found +CMD_AUTOMATE(drop_db_variables, N_("DOMAIN [NAME]"), + N_("Drops a database variable"), "", options::opts::none) { - N(args.size() == 2, + N(args.size() == 1 || args.size() == 2, F("wrong argument count")); - var_domain domain = var_domain(idx(args, 0)()); - utf8 name = idx(args, 1); - var_key key(domain, var_name(name())); - var_value value; - try + var_domain domain(idx(args, 0)()); + + if (args.size() == 2) { - app.db.get_var(key, value); + var_name name(idx(args, 1)()); + var_key key(domain, name); + N(app.db.var_exists(key), + F("no var with name %s in domain %s") % name % domain); + app.db.clear_var(key); } - catch (std::logic_error) + else { - N(false, F("variable not found")); + map vars; + app.db.get_vars(vars); + bool found_something = false; + + for (map::const_iterator i = vars.begin(); + i != vars.end(); ++i) + { + if (i->first.first == domain) + { + found_something = true; + app.db.clear_var(i->first); + } + } + + N(found_something, + F("no variables found in domain %s") % domain); } - output << value(); } // Local Variables: ============================================================ --- cmd_automate.cc d715e6735b4a263881a587911a343aa06b339706 +++ cmd_automate.cc f507718f94531c96f86f38ec3582d7892b802136 @@ -62,7 +62,7 @@ namespace commands { } } -static string const interface_version = "6.0"; +static string const interface_version = "7.0"; // Name: interface_version // Arguments: none ============================================================ --- monotone.texi 31f04971d6258ad56e5aa5decae4d616bfa20349 +++ monotone.texi a3060533beabafb85b1d20b5d0e6ce513f079220 @@ -7816,41 +7816,56 @@ @section Automation @end table address@hidden mtn automate db_get @var{domain} @var{name} address@hidden mtn automate get_db_variables address@hidden @table @strong @item Arguments: -The @var{domain} and @var{name} specify the database variable -which is returned. +The optional @var{domain} restricts the output to variables only within +this domain. address@hidden Added in: address@hidden Changes: -4.1 address@hidden address@hidden +7.0 -- converted output to basic_io, renamed to 'get_db_variables' address@hidden +4.1 -- added as 'db_get' address@hidden itemize @item Purpose: -Read a database variable, see also @ref{Vars}. +Reads and outputs database variables. For more information about variables, +see @ref{Vars}. @item Sample output: @verbatim -off.net +domain "database" + entry "default-exclude-pattern" "" + entry "default-include-pattern" "net.venge.monotone*" + entry "default-server" "monotone.ca" + +domain "known-servers" + entry "monotone.ca" "3e6f5225bc2fffacbc20c9de37ff2dae1e20892e" + entry "monotone.mtn-host.prjek.net" "a52f85615cb2445989f525bf17a603250381a751" + entry "venge.net" "70a0f283898a18815a83df37c902e5f1492e9aa2" @end verbatim @item Output format: -Exactly the variable's content. Since this command is mainly intended for address@hidden stdio} it will not add a trailing newline. +basic_io-formatted stanzas. Each stanza starts with a 'domain', followed by one +or more 'entry' lines. Each 'entry' contains the @var{name} and the @var{value} +of the respective database variable. @item Error conditions: -If the variable is unknown prints an error message to stderr and exits with -status 1. +If the domain is unknown or no variables where found, prints an error message +to stderr and exits with status 1. @end table address@hidden mtn automate db_put @var{domain} @var{name} @var{value} address@hidden mtn automate set_db_variable @var{domain} @var{name} @var{value} @table @strong @item Arguments: @@ -7858,9 +7873,14 @@ @section Automation The @var{domain} and @var{name} specify the database variable which is changed to @var{value}. address@hidden Added in: address@hidden Changes: -4.1 address@hidden address@hidden +7.0 -- renamed to 'set_db_variable' address@hidden +4.1 -- added as 'db_set' address@hidden itemize @item Purpose: @@ -7869,7 +7889,7 @@ @section Automation @item Sample usage: @verbatim -mtn automate db_set database default-server off.net +mtn automate set_db_variable database default-server off.net @end verbatim @item Output format: @@ -7882,6 +7902,40 @@ @section Automation @end table address@hidden mtn automate drop_db_variables @var{domain} address@hidden + address@hidden @strong address@hidden Arguments: + +The @var{domain} and @var{name} specify the database variable +which should be dropped. If @var{name} is ommitted, all database +variables in the @var{domain} are dropped. + address@hidden Added in: + +7.0 + address@hidden Purpose: + +Drops one or more database variables, see also @ref{Vars}. + address@hidden Sample usage: + address@hidden +mtn automate drop_db_variables known-servers address@hidden verbatim + address@hidden Output format: + +No output. + address@hidden Error conditions: + +If the specific variable or any variables in the given domain are not found, +prints to stderr and exits with status 1. + address@hidden table + @item mtn automate put_file address@hidden @var{contents} @table @strong @@ -8075,12 +8129,12 @@ @chapter Hook Reference @smallexample @group do - local old_hook = default_hook - function default_hook(arg) - if not old_hook(arg) then - -- do other stuff - end - end + local old_hook = default_hook + function default_hook(arg) + if not old_hook(arg) then + -- do other stuff + end + end end @end group @end smallexample @@ -8655,7 +8709,7 @@ @subsection Netsync Transport Hooks @smallexample @group function get_mtn_command(host) - return "mtn" + return "mtn" end @end group @end smallexample @@ -8751,7 +8805,7 @@ @subsection Trust Evaluation Hooks do if res == true and new_results[test] ~= true then - return false + return false end end return true @@ -9221,7 +9275,7 @@ @chapter Special Topics * Hash Integrity:: Notes on probability and failure. * Rebuilding ancestry:: In case of corruption. * Mark-Merge:: The merging algorithm used by Monotone. -* Regexps:: The syntax of regular expressions +* Regexps:: The syntax of regular expressions used by Monotone. @end menu