# # # add_file "docs/Merge-Conflicts.html" # content [ad80fc4535b65c5f2000f1873a3e2edea37462d5] # # patch "NEWS" # from [f36c9a7ea8c52a74a822b2d2d248aa35c8259d0e] # to [b9034e67e73f60163830996df6020058d77a332c] # # patch "UPGRADE" # from [ef451e84d9d3c847f9d1fde2f470a9d20cdd19a9] # to [6052a50d43bd883a92d73daa17b0ec2909b6448a] # # patch "docs/Additional-Lua-Functions.html" # from [e8f257471f9a6518560cba09bc3d3ab2a6143ba0] # to [5c22e2f5d0b963c9af369381855eb5bd24c9a1de] # # patch "docs/Advanced-Uses.html" # from [a5a5438f8a86bcbcdc677673000a05cfa29a5190] # to [6118babc8bf465f006910584e31eadeda3db685c] # # patch "docs/Automation.html" # from [35bed8de0799c40422cc86ce6784e00e82d1667c] # to [6b134ea5f3c2d82793b95327288d0ce8aea0bb62] # # patch "docs/Branches.html" # from [478cd3e4a9b9ff7ed91a3d32d88aaa05050e030b] # to [75e3558c493ba581490a1d29238b686383f7417a] # # patch "docs/Command-Reference.html" # from [ac73891fbac9546afc4fcfdd53eaeca93f7f6c8b] # to [81528258f7efb52cac2afd98e507627ad46d55d7] # # patch "docs/Concepts.html" # from [0a0a28e84c6b2364c55a81596080a66438ee0498] # to [4de3d8b44350b0afe922b776fd224a1377661766] # # patch "docs/Creating-a-Database.html" # from [dd4d71928c1cfcd0bae494cf2f671ec5e14b7f10] # to [bc25e00f5402e3215da4915ab1a75e6aa64cc803] # # patch "docs/File-Attributes.html" # from [07a04b4dc5dd34222afc29ac756a3bee696cfe0c] # to [b3bbc4368b308b72b3456895d886ea1eb90a218c] # # patch "docs/General-Index.html" # from [4935e1b875af4cd6dcc2d04dfd692887c69e4c0a] # to [592fbda10b81fd727dd44f36ea52bd542fd56f7c] # # patch "docs/Hook-Reference.html" # from [ac7f505461c97439c2534cee928cf54168ef632b] # to [6a7c40e5e3e82e0d8bd8d4efbe6e903121141555] # # patch "docs/Hooks.html" # from [d32c0db23daf71b0884b9465b74fcd30f8e819de] # to [a76cb47c503fde7fe8b0002a8e5aec0f7a11049e] # # patch "docs/Importing-from-CVS.html" # from [f52c8fd7dd6784f50c00c456c74d6589a72ab15f] # to [9cad4a2003527573f0139431426aef261d5aa724] # # patch "docs/Inodeprints.html" # from [4e462bbef7cfa65afde05c0e51771a6c831ec672] # to [a6a0aa517d9a10827fa3bf102d0c11ed4173e3fd] # # patch "docs/Internationalization.html" # from [20915ed9d3412b0f53b5a5b6c7e3c28f8586fd94] # to [d9117d515402eb1aa5a34126bca14d3fb14845ce] # # patch "docs/Merging.html" # from [a29585476ae412228693aadcdc3a54985e0b655d] # to [b9438b9c86d390f5c2d85f49cb0e2b394b99753b] # # patch "docs/Migrating-and-Dumping.html" # from [10a5a0961bd67d70eb3ac97caf148bd39db6e06e] # to [0fba5f6828d5729411cede5035bb150ad7ecb977] # # patch "docs/Naming-Conventions.html" # from [e9dec1894d0cbd227f61f8500aff5f9934c6c784] # to [a283417e52445d6040ace6c13e7eb92d102f071b] # # patch "docs/Other-Transports.html" # from [7e68d9cd7cf332f1193ece40eac4ff845325f176] # to [4a0047e6f6556a6314755fad17c23408979235f1] # # patch "docs/Quality-Assurance.html" # from [a2c5b1325ef9d5176db2908061afa117f9239b14] # to [ab4a077b4917da4df82370dbedfb752a14ac195d] # # patch "docs/RCS.html" # from [b0bb87a5300ed953a29c02f00b3534a85d43e6f1] # to [091242b5882fd3f6764bccf55bdcf08c87b72dbe] # # patch "docs/Regexp-Summary.html" # from [cb5173340dc7d085bb9b31fee5beb7af838d7b23] # to [d606da29ec66f4bc1485ce4775241597d98c7825] # # patch "docs/Reserved-Certs.html" # from [d86b0c542ecf0fe616cfded24d4333b3c0dea012] # to [1a8774145f487f7841f097fc354528e3616b73c9] # # patch "docs/Reserved-Files.html" # from [dc28c3e5da252e42e708ade445183f430694b199] # to [c51b5a88b407ff178073ff6cade5bd3e4c1ee961] # # patch "docs/Tree.html" # from [b946d40b26991865e3db854d272f95addb6cd920] # to [7f516e36b33603b1da359d22e30e895611e1f507] # # patch "docs/Using-packets.html" # from [9541f5784c2449819b1db89a826ea8917db3a416] # to [e5f4d8fd31fdbef391cd32d0d746ec17850744b7] # # patch "docs/Vars.html" # from [7475e0311e505b2062aa865f3532d3ff83806b30] # to [64da0e9dff7cede66e49befe24a15eb90a322a99] # # patch "docs/Versions-of-files.html" # from [f3bf46039cd6085320e20be0a3e6bd8656eca3fc] # to [3a2297f49127b05ba0bd2bab0ba53742b332244a] # # patch "docs/Workspace-Collisions.html" # from [ad276f0c48026052f87c36ebf66f04491fe2a5da] # to [c8aa0df648a2d487de04346534dae239c79f466c] # # patch "docs/index.html" # from [90d19f0dee2f65ff5a94c152a3f80558fa56e6ee] # to [b80a3369aa08ede047371f36407d7e321c7a0b2c] # # patch "docs/texinfo.css" # from [875ac0427e05332b13348ed5a41a6926fc8401d6] # to [7df2014835ae4ed8fb49c72c42932f771a00b530] # # patch "monotone.html" # from [6fa6307fc17a8f9880a0e07f365d13e2180601a9] # to [f3620d6af7b59c2c8e08e80e473c8298b5f9dc95] # # patch "monotone.pdf" # from [7704a142016b4a9be4b027a5eb5f7010a6422ca1] # to [af9abc648e45e83c487d06ff496493b96517cf7d] # ============================================================ --- docs/Merge-Conflicts.html ad80fc4535b65c5f2000f1873a3e2edea37462d5 +++ docs/Merge-Conflicts.html ad80fc4535b65c5f2000f1873a3e2edea37462d5 @@ -0,0 +1,293 @@ + + +Merge Conflicts - monotone documentation + + + + + + + + + + + + +
+

+ +Next: , +Previous: Inodeprints, +Up: Advanced Uses +


+
+ +

3.6 Merge Conflicts

+ +

Several different types of conflicts may be encountered when merging +two revisions using the database merge commands merge, +explicit_merge, propagate and +merge_into_dir or when using the workspace merge commands +update, pluck and merge_into_workspace. +The show_conflicts command can be used to list conflicts +between database revisions which would be encountered by the database +merge commands. Unfortunately, this command can't yet list conflicts +between a database revision and the current workspace revision which +would be encountered by the workspace merge commands. + +

3.6.1 Conflict Types

+ +

Monotone versions both files and directories explicitly and it tracks +individual file and directory identity from birth to death so that +name changes throughout the full life-cycle can be tracked exactly. +Partly because of these qualities, monotone also notices several types +of conflicts that other version control systems may not. + +

The two most common conflicts are described first, then all other +possible conflicts. + +

File Content Conflict

+ +

This type of conflict is generally the one encountered most commonly +and represents conflicting changes made to lines of text within two +versions of a single file. + +

Monotone does not generally use CVS style conflict markers for content +conflicts. Instead it makes the content of both conflicting files and +the content of their common ancestor available for use with your +favorite merge tool. See the merge3 hook for more information. + +

Alternatively, rather than using a merge tool it is possible to make +further changes to one or both of the conflicting file versions so +that they will merge cleanly. This can also be a very helpful strategy +if the merge conflicts are due to sections of text in the file being +moved from one location to another. Rather than struggling to merge +such conflicting changes with a merge tool, similar rearrangements can +be made to one of the conflicting files before redoing the merge. + +

Duplicate Name Conflict

+ +

A duplicate name conflict occurs when two distinct files or +directories have been given the same name in the two merge parents. +This can occur when each of the merge parents adds a new file or +directory with the conflicting name, or when one parent adds a new +file or directory with the conflicting name and the other renames an +existing file or directory to the conflicting name, or when both +parents rename an existing file or directory to the conflicting name. + +

In earlier versions of monotone (before version 0.39) this type of +conflict was referred to as a rename target conflict although +it doesn't necessarily have anything to do with renames. + +

There are two main situations in which duplicate name conflicts occur: + +

+ +

These conflicts are reported when someone tries to merge the two +revisions containing the new files. + +

Same file
+ +

For the first case, the conflict is resolved by droping one +file. The contents should be manually merged first, in case they are +slightly different. Typically, a user will have one of the files in +their current workspace; the other can be retrieved via +automate get_file_of; the revision id is shown in the merge +error message. The process can be confusing; here's a detailed +example. + +

Suppose Beth and Abe each commit a new file checkout.sh. When +Beth attempts to merge the two heads, she gets a message like: + +

     mtn: 2 heads on branch 'testbranch'
+     mtn: [left]  ae94e6677b8e31692c67d98744dccf5fa9ccffe5
+     mtn: [right] dfdf50b19fb971f502671b0cfa6d15d69a0d04bb
+     mtn: conflict: duplicate name 'checkout.sh'
+     mtn: added as a new file on the left
+     mtn: added as a new file on the right
+     mtn: error: merge failed due to unresolved conflicts
+
+

The file labeled right is the file in Beth's workspace. To +retrieve a copy of Abe's file, Beth executes: + +

     mtn automate get_file_of checkout.sh \
+     --revision=ae94e6677b8e31692c67d98744dccf5fa9ccffe5 \
+     > checkout.sh-merge
+
+

Now Beth manually merges (using her favorite merge tool) +checkout.sh and checkout.sh-merge, leaving the results in +checkout.sh-merge (not in her copy). + +

Then Beth drops her copy, and commits that change: + +

     mtn drop checkout.sh
+     mtn commit --message "resolving conflicting 'checkout.sh'"
+
+

Now Beth can merge the two heads, and update her workspace: + +

     mtn merge
+     mtn update
+
+

This leaves a copy of Abe's original checkout.sh. Beth +overwrites it with her merged version, and commits again: + +

     rm checkout.sh
+     mv checkout.sh-merge checkout.sh
+     mtn commit --message "resolving conflicting 'checkout.sh' - done"
+
+

When Abe later syncs and updates, he will get the merged version. + +

Different files
+ +

The second case, where two different files accidently have the same +name, is resolved by renaming one or both of them. + +

Suppose Beth and Abe each start working on different thermostat models +(say Honeywell and Westinghouse), but they both name the file +thermostat. When Beth attempts to merge, she will get the same +error message as in the first case. When she retrieves Abe's file, she +will see that they should be different files. So she renames her file, +merges, and updates: + +

     mtn rename thermostat thermostat-honeywell
+     mtn merge
+     mtn update
+
+

Now she has her file in thermostat-honeywell, and Abe's in +thermostat. She may rename Abe's file to +thermostat-westinghouse, or ask Abe to do that. + +

If a project has a good file naming convention, this second case +should be rare. + +

Missing Root Conflict

+ +

Monotone's merge strategy is sometimes referred to as +die-die-die merge, with reference to the fact that when a file +or directory is deleted there is no means of resurrecting it. Merging +the deletion of a file or directory will always result in that +file or directory being deleted. + +

A missing root conflict occurs when some directory has been moved to +the root directory in one of the merge parents and has been deleted in +the other merge parent. Because of die-die-die merge the result will +not contain the directory that has been moved to the root. + +

Missing root conflicts should be very rare because it is unlikely that +a project's root directory will change. It is even more unlikely that +a project's root directory will be changed to some other directory in +one merge parent and that this directory will also be deleted in the +other merge parent. Even still, a missing root directory conflict can +be easily resolved by moving another directory to the root in the +merge parent where the root directory was previously changed. Because +of die-die-die merge, no change to resolve the conflict can be made to +the merge parent that deleted the directory which was moved to the +root in the other merge parent. + +

See the pivot_root command for more information on moving +another directory to the project root. + +

Invalid Name Conflict

+ +

Monotone reserves the name _MTN in a workspace root directory +for internal use and treats this name as illegal for a +versioned file or directory in the project root. This name is +legal for a versioned file or directory as long as it is not in +the project root directory. + +

An invalid name conflict occurs when some directory is moved to the +project root in one of the merge parents and a file or directory that +exists in this new root directory is renamed to _MTN or a new +file or directory is added with the name _MTN to this directory +in the other merge parent. + +

Invalid name conflicts should be very rare because it is unlikely that +a project's root directory will change. It is even more unlikely that +a project's root directory will change and the new root directory will +contain a file or directory named _MTN. Even still, an invalid +name conflict can be easily resolved in several different ways. A +different root directory can be chosen, the offending _MTN file +or directory can be renamed or deleted, or it can be moved to some +other subdirectory in the project. + +

See the pivot_root command for more information on moving +another directory to the project root. + +

Directory Loop Conflict

+ +

A directory loop conflict occurs when one directory is moved under a +second in one of the merge parents and the second directory is moved +under the first in the other merge parent. + +

Directory loop conflicts should be rare but can be easily resolved by +moving one of the conflicting directories out from under the other. + +

Orphaned Node Conflict

+ +

An orphaned node conflict occurs when a directory and all of its +contents are deleted in one of the merge parents and further files or +directories are added to this deleted directory, or renamed into it, +in the other merge parent. + +

Orphaned node conflicts do happen occasionally but can be easily +resolved by renaming the orphaned files or directories out of the +directory that has been deleted and into another directory that exists +in both merge parents, or that has been added in the revision +containing the orphaned files or directories. + +

Multiple Name Conflict

+ +

A multiple name conflict occurs when a single file or directory has +been renamed to two different names in the two merge parents. +Monotone does not allow this and requires that each file and directory +has exactly one unique name. + +

Multiple name conflicts do happen occasionally but can be easily +resolved by renaming the conflicting file or directory in one or both +of the merge parents so that both agree on the name. + +

In earlier versions of monotone (those before version 0.39) this type +of conflict was referred to as a name conflict. + +

Attribute Conflict

+ +

An attribute conflict occurs when a versioned attribute on a file or +directory is set to two different values by the two merge parents or +if one of the merge parents changes the attribute's value and the +other deletes the attribute entirely. + +

Attribute conflicts may happen occasionally but can be easily resolved +by ensuring that the attribute is set to the same value or is deleted +in both of the merge parents. Attributes are not merged using +the die-die-die rules and may be resurrected by simply setting their +values. + +

3.6.2 Conflict Resolution

+ +

Resolving the different types of conflicts is accomplished by checking +out one of the conflicting revisions, making changes as described +above, committing these changes as a new revision and then running the +merge again using this new revision as one of the merge parents. This +process can be repeated as necessary to get two revisions into a state +where they will merge cleanly, or with a minimum of file content +conflicts. + + + ============================================================ --- NEWS f36c9a7ea8c52a74a822b2d2d248aa35c8259d0e +++ NEWS b9034e67e73f60163830996df6020058d77a332c @@ -1,3 +1,69 @@ +Mon Feb 25 15:55:36 UTC 2008 + + 0.39 release. + + 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 + Wed Dec 12 21:21:15 UTC 2007 0.38 release. @@ -15,7 +81,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 +89,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 +98,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 +107,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 +1931,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 +1954,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 +1981,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 +2036,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 ============================================================ --- UPGRADE ef451e84d9d3c847f9d1fde2f470a9d20cdd19a9 +++ UPGRADE 6052a50d43bd883a92d73daa17b0ec2909b6448a @@ -1,4 +1,4 @@ -upgrading monotone to 0.38 +upgrading monotone to 0.39 ========================== How to read this file: ============================================================ --- docs/Additional-Lua-Functions.html e8f257471f9a6518560cba09bc3d3ab2a6143ba0 +++ docs/Additional-Lua-Functions.html 5c22e2f5d0b963c9af369381855eb5bd24c9a1de @@ -36,11 +36,11 @@ hook writers. hook writers.

-
alias_command(original, alias)
+
alias_command(original, alias)
This function adds a new alias for a monotone command. A call to this function would normally be placed directly in the monotonerc file, rather than in a hook function. -
existonpath(possible_command)
+
existonpath(possible_command)
This function receives a string containing the name of an external program and returns 0 if it exists on path and is executable, -1 otherwise. @@ -50,56 +50,56 @@ for “xxdiff.exe”. program name. In the previous example, existonpath would search for “xxdiff.exe”. -
get_confdir()
+
get_confdir()
Returns the path to the configuration directory, either implied or given with --confdir. -
get_ostype()
+
get_ostype()
Returns the operating system flavor as a string. -
guess_binary_file_contents(filespec)
+
guess_binary_file_contents(filespec)
Returns true if the file appears to be binary, i.e. contains one or more of the following characters:
          0x00 thru 0x06
           0x0E thru 0x1a
           0x1c thru 0x1f
 
-
include(scriptfile)
+
include(scriptfile)
This function tries to load and execute the script contained into scriptfile. It returns true for success and false if there is an error. -
includedir(scriptpath)
+
includedir(scriptpath)
This function loads and executes in alphabetical order all the scripts contained into the directory scriptpath. If one of the scripts has an error, the functions doesn't process the remaining scripts and immediately returns false. -
includedirpattern(scriptpath, pattern)
+
includedirpattern(scriptpath, pattern)
This function loads and executes in alphabetical order all the scripts contained into the directory scriptpath that match the given pattern. If one of the scripts has an error, the functions doesn't process the remaining scripts and immediately returns false. -
is_executable(filespec)
+
is_executable(filespec)
This function returns true if the file is executable, false otherwise. On Windows this function returns always false. -
kill(pid [, signal])
+
kill(pid [, signal])
This function calls the kill() C library function on POSIX systems and TerminateProcess on Win32 (in that case pid is the process handle). If the optional signal parameter is missing, SIGTERM will be used. Returns 0 on success, -1 on error. -
make_executable(filespec)
+
make_executable(filespec)
This function marks the named file as executable. On Windows has no effect. -
match(glob, string)
+
match(glob, string)
Returns true if glob matches str, return false otherwise. -
mkstemp(template)
+
mkstemp(template)
Like its C library counterpart, mkstemp creates a unique name and returns a file descriptor for the newly created file. The value of template should be a pointer to a character buffer loaded @@ -121,7 +121,7 @@ For the definition of temp_file()< file in the standard TMP/TEMP directories. For the definition of temp_file(), see Default hooks. -
mtn_automate( ... )
+
mtn_automate( ... )
The mtn_automate Lua function calls the Monotone automate command passed in its arguments. The result of the call is a pair consisting of a boolean return code, indicating whether @@ -130,7 +130,7 @@ the Lua function register_command< in ordinary Lua hooks, but rather for Lua based commands as defined by the Lua function register_command. -
parse_basic_io(data)
+
parse_basic_io(data)
Parse the string data, which should be in basic_io format. It returns nil if it can't parse the string; otherwise it returns a table. This will be a list of all statements, with each entry being a table having a "name" element that is @@ -152,17 +152,17 @@ the arguments. 4 = { name = "frob", values = { 1 = "oops" } } } -
regex.search(regexp, string)
+
regex.search(regexp, string)
Returns true if a match for regexp is found in str, return false otherwise. See Regexps, for the syntax of regexp. -
register_command(name, params, abstract, description, function)
+
register_command(name, params, abstract, description, function)
Add a command named name to the user command group in monotone. This function is normally called directly from a monotonerc file rather than a hook. When the user issues the registered command, monotone will call the lua function name supplied. That function would then normally use mtn_automate() calls to service the request. -
server_request_sync(what, address, include, exclude)
+
server_request_sync(what, address, include, exclude)
Initiate a netsync connection to the server at address, with the given include and exclude patterns, of type sync, push, or pull, as given by the what argument. @@ -170,10 +170,10 @@ command, this function has no effect.

When called by a monotone instance which is not running the serve command, this function has no effect. -

sleep(seconds)
+
sleep(seconds)
Makes the calling process sleep for the specified number of seconds. -
spawn(executable [, args ...])
+
spawn(executable [, args ...])
Starts the named executable with the given arguments. Returns the process PID on POSIX systems, the process handle on Win32 or -1 if there was an error. @@ -185,17 +185,17 @@ in a standardized way. option. execute() builds on spawn() and wait() in a standardized way. -
spawn_pipe(executable [, args ...])
+
spawn_pipe(executable [, args ...])
Like spawn(), but returns three values, where the first two are the subprocess' standard input and standard output, and the last is the process PID on POSIX systems, the process handle on Win32 or -1 if there was an error. -
spawn_redirected(infile, outfile, errfile, executable [, args ...])
+
spawn_redirected(infile, outfile, errfile, executable [, args ...])
Like spawn(), but with standard input, standard output and standard error redirected to the given files. -
wait(pid)
+
wait(pid)
Wait until the process with given PID (process handle on Win32) exits. Returns two values: a result value and the exit code of the waited-for process. ============================================================ --- docs/Advanced-Uses.html a5a5438f8a86bcbcdc677673000a05cfa29a5190 +++ docs/Advanced-Uses.html 6118babc8bf465f006910584e31eadeda3db685c @@ -40,22 +40,23 @@ familiarize yourself with its operation. familiarize yourself with its operation. ============================================================ --- docs/Automation.html 35bed8de0799c40422cc86ce6784e00e82d1667c +++ docs/Automation.html 6b134ea5f3c2d82793b95327288d0ce8aea0bb62 @@ -604,19 +604,35 @@ marker.
-
mtn automate inventory [files...]
+
mtn automate inventory [options...] [files...]
Arguments:
-One or more file paths (optional). If present, only show inventory for the given -files or directories (and their sub-directories). You can use --depth -and --exclude to control what is selected through this restriction. +One or more file paths (optional). If present, only show an inventory for the +given files or directories (and their sub-directories). +
+
--depth=n
Maximum number of directories to descend. + +
--exclude=exclude-glob
File or directory to exclude. + +
--no-ignored
Don't output ignored files or directories. + +
--no-unknown
Don't output unknown directories. + +
--no-unchanged
Don't output files that are known but not changed in any way. + +
--no-corresponding-renames
If restricted to a renamed path, do not output the corresponding old / new +paths for this restriction. + +
+
Changes:
    +
  • 7.0 – added options --no-ignored, --no-unknown, +--no-unchanged and --no-corresponding-renames
  • 6.0 – converted to basic_io format (restriction support, various fixes)
  • 1.0 – initial, line-based format
-
Purpose:
Prints the inventory of every file found in the workspace or its @@ -632,6 +648,13 @@ All basic status cases: status "added" "known" changes "content" + path "attributes_altered" + old_type "file" + new_type "file" + fs_type "file" + status "known" + changes "attrs" + path "dropped" old_type "file" fs_type "none" @@ -660,6 +683,13 @@ All basic status cases: status "known" changes "content" + path "patched_and_attributes_altered" + old_type "file" + new_type "file" + fs_type "file" + status "known" + changes "content" "attrs" + path "renamed" new_type "file" old_path "original" @@ -861,6 +891,88 @@ thus missing source and unknown target: changes "content" +

Renamed and restricted to original or renamed: +

          
+              path "original"
+          old_type "file"
+          new_path "renamed"
+           fs_type "none"
+            status "rename_source"
+          
+              path "renamed"
+          new_type "file"
+          old_path "original"
+           fs_type "file"
+            status "rename_target" "known"
+           changes "content"
+     
+ +

Renamed and restricted to original with the --no-corresponding-renames option: +

          
+              path "original"
+          old_type "file"
+          new_path "renamed"
+           fs_type "none"
+            status "rename_source"
+     
+ +

Renamed and restricted to renamed with the --no-corresponding-renames option: +

          
+              path "renamed"
+          new_type "file"
+          old_path "original"
+           fs_type "file"
+            status "rename_target" "known"
+           changes "content"
+     
+ +

File is missing, an unversioned directory is in the way: +

          
+              path "missing_file"
+          old_type "file"
+          new_type "file"
+           fs_type "directory"
+            status "invalid"
+           changes "content"
+     
+ +

Directory is missing, an unversioned file is in the way: +

          
+              path "missing_directory"
+          old_type "directory"
+          new_type "directory"
+           fs_type "file"
+            status "invalid"
+     
+ +

Directory source renamed to target, target is missing, an +unversioned file is in the way: +

          
+              path "source"
+          old_type "directory"
+          new_path "target"
+           fs_type "none"
+            status "rename_source"
+          
+              path "source/a"
+          old_type "file"
+          new_path "target/a"
+           fs_type "none"
+            status "rename_source"
+          
+              path "target"
+          new_type "directory"
+          old_path "source"
+           fs_type "file"
+            status "rename_target" "invalid"
+          
+              path "target/a"
+          new_type "file"
+          old_path "source/a"
+           fs_type "none"
+            status "rename_target" "missing"
+     
+
Output format:
Each path is printed in one basic_io stanza. Stanzas are separated by a blank line. Each stanza starts with a path line, and contains @@ -869,58 +981,66 @@ change in future revisions, except that path.
-
'path'
the file or directory path, relative to the workspace root. The file +
path
The file or directory path, relative to the workspace root. The file either exists in the workspace, or is listed in the base or revision -manifest. +manifest. +path is always output. -
old_type
gives the type of the file in the base manifest. “type” is -either file, directory, or none. -old_type is output only if it is different from the type in -the revision manifest or workspace. +
old_type
The type of the node in the base manifest. +“type” is either file or directory. +old_type is output for all old nodes (i.e. unchanged or dropped paths +and rename sources). -
new_type
the type of the file in the revision manifest. new_type is -output only if it is different from the type in the base manifest or -workspace. +
new_type
The type of the node in the revision manifest. +“type” is either file or directory. +new_type is output for all new nodes (i.e. unchanged or added paths +and rename targets). -
fs_type
the type of the file in the workspace (also called the filesystem). +
fs_type
The type of the node in the workspace (also called the filesystem). +“type” is either file, directory or none +(if the path does not exist in the file system). fs_type is always output. -
old_path
the old path for the file, if it has been renamed in the revision -manifest. +
old_path
The old path for the node, if it has been renamed in the revision +manifest. +old_path is only output for rename targets. -
new_path
the new path for the file, if it has been renamed in the revision -manifest. +
new_path
The new path for the node, if it has been renamed in the revision +manifest. +new_path is only output for rename sources.
status
status is always output. Its value is one or more of:
-
rename_source
the old name of a file that has been renamed. +
rename_source
path is part of a rename and denotes the old name of a renamed node. -
rename_target
the new name of a file that has been renamed. +
rename_target
path is part of a rename and denotes the new name of a renamed node. -
added
the file is new in the revision manifest (not in the base -manifest). +
added
path has been added in the revision manifest, but not existent in the +base manifest. -
dropped
the file is deleted in the revision manifest and the workspace. +
dropped
path has been deleted in the revision manifest and the workspace. -
missing
the file is deleted in the workspace but not the revision manifest. +
missing
path has been deleted in the workspace, but still exists in the revision +manifest. -
ignored
the file is ignored by monotone. +
ignored
path is ignored by monotone. -
known
the file exists in the workspace, and in the revision manifest. +
known
path exists in the workspace, and in the revision manifest. -
unknown
the file exists in the workspace, but not in the revision manifest. +
unknown
path exists in the workspace, but not in the revision manifest, i.e. +is unversioned. -
invalid
the file exists in the workspace and revision manifest, but with -different types (one is a directory, the other a file). - +
invalid
path is versioned and exists in the workspace and revision manifest, but +with incompatible types (a versioned missing file is replaced by an +unversioned directory and vice versa).

changes
-
content
the file contents have changed. +
content
The contents of a file have been changed. -
attrs
the file attributes have changed. +
attrs
The attributes of a path (file or directory) have been changed.
@@ -1009,17 +1129,13 @@ none
Arguments:
none -
Added in:
-1.0 +
Changes:
+
    +
  • 3.1 – Added the 'o' item to the recognized input. This change should not +break anything. +
  • 1.0 – Initial version. +
-
Modifications:
-
-
3.1
-Added the 'o' item to the recognized input. This change should not -break anything. - -
-
Purpose:
Allow multiple automate commands to be run from one instance of monotone. @@ -1040,7 +1156,8 @@ provided as 'l' <string> [<stri provided as 'l' <string> [<string> ...] 'e', where <string> = <size> colon <data> . This may optionally be preceded by a set of key=value pairs (command options) as 'o' <string> <string> [<string> <string> ...] 'e', where -strings come in pairs, key followed by value. +strings come in pairs, key followed by value. For flag options that +don't take values, specify the second string as zero length; 0:.

The space between the ending 'e' of one group of strings and the beginning 'l' or 'o' of the next is reserved. Any characters other than whitespace @@ -1087,16 +1204,18 @@ whatever error message would have been g

-
mtn automate get_revision
mtn automate get_revision id
+
mtn automate get_revision id
Arguments:
-Specifying the option id argument outputs the changeset -information for the specified id. Otherwise, id is -determined from the workspace. +The argument id specifies the revision id for which the changeset +information should be printed.
Added in:
1.0 +
Changed in:
+7.0 (id is now mandatory) +
Purpose:
Prints change information for the specified revision id. @@ -1183,6 +1302,34 @@ to stderr and exits with status 1.
+
mtn automate get_current_revision [--exclude excl] [--depth=depth] [path ...]
+
+
Arguments:
+One or more path arguments restrict the revision to these paths, +otherwise all changes in workspace are taken into account. + +

Options excl and depth work just like in mtn commit. + +

Added in:
+7.0 + +
Purpose:
+Prints change information for the current workspace, optionally restricted by +one or more paths. + +
Sample output:
+See automate get_revision + +
Output format:
+See automate get_revision + +
Error conditions:
+If the command is executed outside of a workspace, there are no changes in the +current workspace or the restriction is invalid or has no recorded changes, +prints an error message to stderr and exits with status 1. + +
+
mtn automate get_base_revision_id
Arguments:
@@ -1898,48 +2045,64 @@ 1. Note that file not existin
-
mtn automate db_get domain name
+
mtn automate get_db_variables [domain]
Arguments:
-The domain and name specify the database variable -which is returned. +The optional domain restricts the output to variables only within +this domain. -
Added in:
-4.1 +
Changes:
+
    +
  • 7.0 – converted output to basic_io, renamed to 'get_db_variables' +
  • 4.1 – added as 'db_get' +

Purpose:
-Read a database variable, see also Vars. +Reads and outputs database variables. For more information about variables, +see Vars.
Sample output:
          
-          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"
      

Output format:
-Exactly the variable's content. Since this command is mainly intended for -automate 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 name and the value +of the respective database variable.
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.
-
mtn automate db_put domain name value
+
mtn automate set_db_variable domain name value
Arguments:
The domain and name specify the database variable which is changed to value. -
Added in:
-4.1 +
Changes:
+
    +
  • 7.0 – renamed to 'set_db_variable' +
  • 4.1 – added as 'db_set' +

Purpose:
Change a database variable, see also Vars.
Sample usage:
          
-          mtn automate db_set database default-server off.net
+          mtn automate set_db_variable database default-server off.net
      

Output format:
@@ -1950,9 +2113,36 @@ None.
-
mtn automate put_file [base-id] contents
+
mtn automate drop_db_variables domain [name]
Arguments:
+The domain and name specify the database variable +which should be dropped. If name is ommitted, all database +variables in the domain are dropped. + +
Added in:
+7.0 + +
Purpose:
+Drops one or more database variables, see also Vars. + +
Sample usage:
+
          
+          mtn automate drop_db_variables known-servers
+     
+ +
Output format:
+No output. + +
Error conditions:
+If the specific variable or any variables in the given domain are not found, +prints to stderr and exits with status 1. + +
+ +
mtn automate put_file [base-id] contents
+
+
Arguments:
The optional base-id specifies a file-id on which the contents are based on. This is used for delta encoding. contents are the contents of the new file. @@ -1979,7 +2169,7 @@ exits with status 1.
-
mtn automate put_revision revision-data
+
mtn automate put_revision revision-data
Arguments:
revision-data is the new revision. See example below. Note that @@ -2026,7 +2216,7 @@ this fact, but otherwise works as normal
-
mtn automate cert revision name value
+
mtn automate cert revision name value
Arguments:
revision is an existing revision, name is the certificate name ============================================================ --- docs/Branches.html 478cd3e4a9b9ff7ed91a3d32d88aaa05050e030b +++ docs/Branches.html 75e3558c493ba581490a1d29238b686383f7417a @@ -96,7 +96,7 @@ source of globally unique names — world. Otherwise, bad things can happen. Fortunately, we have a handy source of globally unique names — the DNS system. -

When naming a branch, always prepend the reversed name of a host that +

When naming a branch, always prepend the reversed, fully qualified, domain name of a host that you control or are otherwise authorized to use. For example, monotone development happens on the branch net.venge.monotone, because venge.net belongs to monotone's primary author. The idea is that ============================================================ --- docs/Command-Reference.html ac73891fbac9546afc4fcfdd53eaeca93f7f6c8b +++ docs/Command-Reference.html 81528258f7efb52cac2afd98e507627ad46d55d7 @@ -37,16 +37,16 @@ all, commands are grouped into logical c all, commands are grouped into logical categories.

============================================================ --- docs/Concepts.html 0a0a28e84c6b2364c55a81596080a66438ee0498 +++ docs/Concepts.html 4de3d8b44350b0afe922b776fd224a1377661766 @@ -39,13 +39,13 @@ with these terms. with these terms. ============================================================ --- docs/Creating-a-Database.html dd4d71928c1cfcd0bae494cf2f671ec5e14b7f10 +++ docs/Creating-a-Database.html bc25e00f5402e3215da4915ab1a75e6aa64cc803 @@ -6,6 +6,7 @@ + @@ -26,6 +27,7 @@ Next:  Next: , +Previous: Tutorial, Up: Tutorial
============================================================ --- docs/File-Attributes.html 07a04b4dc5dd34222afc29ac756a3bee696cfe0c +++ docs/File-Attributes.html b3bbc4368b308b72b3456895d886ea1eb90a218c @@ -32,7 +32,7 @@ Up:  -

3.12 File Attributes

+

3.13 File Attributes

Monotone contains a support for storing persistent attributes on files and directories, generally known as attrs for short. An ============================================================ --- docs/General-Index.html 4935e1b875af4cd6dcc2d04dfd692887c69e4c0a +++ docs/General-Index.html 592fbda10b81fd727dd44f36ea52bd542fd56f7c @@ -32,40 +32,40 @@ Up: General Index

============================================================ --- docs/Hook-Reference.html ac7f505461c97439c2534cee928cf54168ef632b +++ docs/Hook-Reference.html 6a7c40e5e3e82e0d8bd8d4efbe6e903121141555 @@ -59,12 +59,12 @@ this can be achieved with the following this can be achieved with the following code:
     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
 

Now the default hook is trapped in a variable local to this block, and can ============================================================ --- docs/Hooks.html d32c0db23daf71b0884b9465b74fcd30f8e819de +++ docs/Hooks.html a76cb47c503fde7fe8b0002a8e5aec0f7a11049e @@ -6,6 +6,7 @@ + @@ -26,6 +27,7 @@ Next:  Next: , +Previous: Hook Reference, Up: Hook Reference


@@ -46,7 +48,7 @@ are taken. are taken.
-
note_commit (new_id, revision, certs)
+
note_commit (new_id, revision, certs)
Called by monotone after the version new_id is committed. The second parameter, revision is the text of the revision, what would be given by mtn automate get_revision new_id. The third @@ -61,7 +63,7 @@ should not perform any security-critical commit-notification systems such as mailing lists or news services. It should not perform any security-critical operations. -
note_netsync_start (session_id, my_role, sync_type,
remote_host, remote_keyname, includes, excludes) +
note_netsync_start (session_id, my_role, sync_type,
remote_host, remote_keyname, includes, excludes)

Called by monotone before any other of the netsync notification hooks are called. The session_id helps keep track of the current netsync @@ -92,7 +94,7 @@ The include and exclude patterns used by

-
note_netsync_revision_received (new_id, revision, certs, session_id)
+
note_netsync_revision_received (new_id, revision, certs, session_id)
Called by monotone after the revision new_id is received through netsync. revision is the text of the revision, what would be given by mtn automate get_revision new_id. certs is a @@ -104,7 +106,7 @@ tracking, you can ignore that variable e note_netsync_end. If you're not interested in that type of tracking, you can ignore that variable entirely. -
note_netsync_cert_received (rev_id, key, name, value, session_id)
+
note_netsync_cert_received (rev_id, key, name, value, session_id)
Called by monotone after a cert is received through netsync, if the revision that the cert is attached to was not also received in the same netsync operation. rev_id is the revision id that the cert is attached to, @@ -115,14 +117,14 @@ tracking, you can ignore that variable e note_netsync_end. If you're not interested in that type of tracking, you can ignore that variable entirely. -
note_netsync_pubkey_received (keyname, session_id)
+
note_netsync_pubkey_received (keyname, session_id)
Called by monotone after a pubkey is received through netsync. keyname is the name of the key received. There is no default definition for this hook. session_id is used together with note_netsync_start and note_netsync_end. If you're not interested in that type of tracking, you can ignore that variable entirely. -
note_netsync_end (session_id, status,
bytes_in, bytes_out, certs_in, certs_out, +
note_netsync_end (session_id, status,
bytes_in, bytes_out, certs_in, certs_out, revs_in, revs_out, keys_in, keys_out)

Called by monotone after all other the netsync notification hooks have @@ -170,7 +172,7 @@ data was transferred. have been transferred, xx2 means no data was transferred, and xx0 means all data was transferred. -

note_mtn_startup (...)
+
note_mtn_startup (...)
Called by monotone when it is first started, this hook was added so that usage of monotone could be monitored for user interface testing. Note that by default, no monitoring occurs. The arguments to the hook @@ -195,7 +197,7 @@ prompted for. prompted for.
-
get_branch_key (branchname)
+
get_branch_key (branchname)
Returns a string which is the name of an rsa private key used to sign certificates in a particular branch branchname. There is no default definition for this hook. The command-line option @@ -205,7 +207,7 @@ to use the unique private key. --key=keyname option; monotone will guess that you want to use the unique private key. -
get_netsync_key(server, include, exclude)
+
get_netsync_key(server, include, exclude)
Returns a string which is the name of the key to use to authenticate the given netsync connection. When called by the serve command, server is the address monotone is listening on, include is @@ -215,7 +217,7 @@ hook function. --key=keyname overrides any value returned from this hook function. -
get_passphrase (keypair_id)
+
get_passphrase (keypair_id)
Returns a string which is the passphrase used to encrypt the private half of keypair_id in your database, using the arc4 symmetric cipher. keypair_id is a Lua string containing the label that you @@ -224,7 +226,7 @@ a passphrase each time it needs to use a this hook is not defined or returns false, monotone will prompt you for a passphrase each time it needs to use a private key. -
get_author (branchname, keypair_id)
+
get_author (branchname, keypair_id)
Returns a string which is used as a value for automatically generated author certificates when you commit changes to branchname with the keypair identity keypair_id. Generally @@ -250,7 +252,7 @@ definitions might be: return keypair_id end -
edit_comment (commentary, user_log_message)
+
edit_comment (commentary, user_log_message)
Returns a log entry for a given set of changes, described in commentary. The commentary is identical to the output of mtn status. This hook is intended to interface with @@ -267,7 +269,7 @@ the system up for another edit/commit cy

For the default definition of this hook, see Default hooks. -

persist_phrase_ok ()
+
persist_phrase_ok ()
Returns true if you want monotone to remember the passphrase of a private key for the duration of a single command, or false if you want monotone to prompt you for a passphrase for each certificate @@ -280,7 +282,7 @@ probably want this hook to return return true end -
use_inodeprints ()
+
use_inodeprints ()
Returns true if you want monotone to automatically enable Inodeprints support in all workspaces. Only affects working copies created after you modify the hook. @@ -290,7 +292,7 @@ copies created after you modify the hook return false end -
ignore_file (filename)
+
ignore_file (filename)
Returns true if filename should be ignored while adding, dropping, or moving files. Otherwise returns false. This is most important when performing recursive actions on directories, which @@ -303,7 +305,7 @@ default definition of this hook, see Default hooks. -
ignore_branch (branchname)
+
ignore_branch (branchname)
Returns true if branchname should be ignored while listing branches. Otherwise returns false. This hook has no default definition, therefore the default behavior is to list all branches. @@ -320,7 +322,7 @@ changed. changed.
-
get_netsync_read_permitted (branch, identity)
+
get_netsync_read_permitted (branch, identity)
Returns true if a peer authenticated as key identity should be allowed to read from your database certs, revisions, manifests, and files associated with branch; otherwise false. @@ -362,7 +364,7 @@ key fingerprints of each key in your dat key fingerprints of each key in your database, as key ID strings are “convenience names”, not security tokens. -
get_netsync_write_permitted (identity)
+
get_netsync_write_permitted (identity)
Returns true if a peer authenticated as key identity should be allowed to write into your database certs, revisions, manifests, and files; otherwise false. The default definition of this hook reads a file @@ -401,7 +403,7 @@ a TCP socket. a TCP socket.
-
get_netsync_connect_command (uri, args)
+
get_netsync_connect_command (uri, args)
Returns a table describing a command to run to connect to the specified host. The uri argument is a table containing between 0 and 7 components: @@ -480,7 +482,7 @@ components: return argv end -
use_transport_auth (uri)
+
use_transport_auth (uri)
Returns a boolean indicating whether monotone should use transport authentication mechanisms when communicating with uri. If this hook fails, the return value is assumed to be true. The form of @@ -506,7 +508,7 @@ authentication assumptions. end end -
get_mtn_command(host)
+
get_mtn_command(host)
Returns a string containing the monotone command to be executed on host when communicating over ssh. The host argument is a string containing the name of the host to which @@ -515,7 +517,7 @@ monotone binary is not in the default pa monotone binary is not in the default path.
          function get_mtn_command(host)
-          	return "mtn"
+              return "mtn"
           end
 
@@ -538,7 +540,7 @@ valid revisions, according to their own valid revisions, according to their own preferences and purposes.
-
get_revision_cert_trust (signers, id, name, val)
+
get_revision_cert_trust (signers, id, name, val)
Returns whether or not you trust the assertion name=value on a given revision id, given a valid signature from all the keys in signers. The signers @@ -584,7 +586,7 @@ the revision has been approved by an ext the revision has been approved by an extra “reviewer” who used the approve command. -
accept_testresult_change (old_results, new_results)
+
accept_testresult_change (old_results, new_results)
This hook is used by the update algorithm to determine whether a change in test results between update source and update target is acceptable. The hook is called with two tables, each of which maps a @@ -601,7 +603,7 @@ version carrying the old_results -
get_encloser_pattern (file_path)
+
get_encloser_pattern (file_path)
Called for each file when diff is given the --show-encloser option (and not the --external option). file_path is the pathname of the @@ -638,9 +640,8 @@ regular expression syntax. make it the default for that language. See Regexps, for the regular expression syntax. -
external_diff (file_path, old_data, new_data, is_binary,
diff_args, old_rev, new_rev) - -

Called for each file when diff is given the +

external_diff (file_path, old_data, new_data, is_binary, diff_args, old_rev, new_rev)
+Called for each file when diff is given the --external option. file_path is the pathname of the file that is being diffed. old_data and new_data are the data contents of the old and the new file. If the data is binary, @@ -672,7 +673,7 @@ you have a tool specific to certain file you have a tool specific to certain file types.
-
merge3 (ancestor_path, left_path, right_path, merged_path, ancestor_text, left_text, right_text)
+
merge3 (ancestor_path, left_path, right_path, merged_path, ancestor_text, left_text, right_text)
This hook is called to resolve merges that monotone could not resolve automatically. The actual ancestor, left, and right contents of the file are passed in the ancestor_text, left_text, and @@ -694,7 +695,7 @@ local system. For details, see the code and if not, then simply searches for whatever is installed on the local system. For details, see the code in Default hooks. -


get_preferred_merge3_command(tbl)
+


get_preferred_merge3_command(tbl)
Returns the results of running an external merge on three strings. tbl wraps up the various arguments for each merge command and is always provided by merge3. If there is a particular editor @@ -714,7 +715,7 @@ expand them to their full form.

For more detail on the use of selectors, see Selectors.

-
expand_selector (str)
+
expand_selector (str)
Attempts to expand str as a selector. Expansion generally means providing a type prefix for the selector, such as a: for authors or d: for dates. This hook is called once for each element of a @@ -722,7 +723,7 @@ evaluation of the selector. For the defa evaluation of the selector. For the default definition of this hook, see Default hooks. -
expand_date (str)
+
expand_date (str)
Attempts to expand str as a date expression. Expansion means recognizing and interpreting special words such as yesterday or 6 months ago and converting them into well formed date @@ -745,7 +746,7 @@ according to its attributes when the wor according to its attributes when the workspace is changed.
-
attr_functions [attribute] (filename, value)
+
attr_functions [attribute] (filename, value)
This is not a hook function, but a table of hook functions. Each entry in the table attr_functions, at table entry attribute, is a function taking a file name filename @@ -768,7 +769,7 @@ attribute. Its definition is: end end -
attr_init_functions [attribute] (filename)
+
attr_init_functions [attribute] (filename)
This is not a hook function, but a table of hook functions. Each entry in the table attr_init_functions, at table entry attribute, is a function taking a file (or @@ -808,7 +809,7 @@ allow a client to validate or reject cer allow a client to validate or reject certain behaviors.
-
validate_commit_message (message, revision_text, branchname)
+
validate_commit_message (message, revision_text, branchname)
This hook is called after the user has entered his/her commit message. message is the commit message that the user has entered and revision_text is the full text of the changes for this revision, ============================================================ --- docs/Importing-from-CVS.html f52c8fd7dd6784f50c00c456c74d6589a72ab15f +++ docs/Importing-from-CVS.html 9cad4a2003527573f0139431426aef261d5aa724 @@ -32,7 +32,7 @@ Up:  -

3.15 Importing from CVS

+

3.16 Importing from CVS

Monotone is capable of reading CVS files directly and importing them into a database. This feature is still somewhat immature, but ============================================================ --- docs/Inodeprints.html 4e462bbef7cfa65afde05c0e51771a6c831ec672 +++ docs/Inodeprints.html a6a0aa517d9a10827fa3bf102d0c11ed4173e3fd @@ -7,7 +7,7 @@ - +