# # # add_file "README" # content [229c7f621b65f7e4970ae5aaec993812b9daa1d4] # # add_file "docs/Workspace-Collisions.html" # content [b1361bb5f32890fce1b8d3d6d62892b5dc882758] # # patch "INSTALL" # from [57518aa598e6c62cb9c2f74fd102091b489bfcc4] # to [e0f783d8e7b4ba600407c7d1f22493408195a506] # # patch "NEWS" # from [baff89704e514e465db0099404e03457e7127f4f] # to [08261921b0db1ef853bd36576c47bcb3657f1ddb] # # patch "UPGRADE" # from [d937bff0f8a61653efd71e8322918283efa15660] # to [128b39c8de9f33b4763cc69e06baba9ee10b06a2] # # patch "docs/Additional-Lua-Functions.html" # from [d1315ca4877bee82c52f4e8ea1ae6b210bc8a0f7] # to [a20e1a6abc7f30e909076b1f295832bb768f0ab2] # # patch "docs/Advanced-Uses.html" # from [5905ee7baf20c59c6fd828c1004add6579745697] # to [8321cf86cedd263616c8d270eec3749a75d7502a] # # patch "docs/Automation.html" # from [4aca868756ecf35a6938d092809cdc05f2ede5fe] # to [f29c90fe440fea9f22ce4df65e66d34585a30014] # # patch "docs/CVS-Phrasebook.html" # from [38db39f172da9f8f255c813651c991c729aff093] # to [74d9762c96bb7e130c3b086205599ecbc668c36a] # # patch "docs/Committing-Work.html" # from [e0c6ae7079f37eb8970bec9f0b176abbdf6edc16] # to [0ac9fe948d6d6765c0b282198521f0d63122ae45] # # patch "docs/Database.html" # from [3fe36e430a3fa3ac31f5ccca672e29ba2b70ea65] # to [ba54f8344b2ab01c070261b7f1d4bccba1ad8cdb] # # patch "docs/Default-hooks.html" # from [78dba3337f250a400d82f3142435215e353eca00] # to [ae06201ff21759eea0f55b98ae0642245c1e32c8] # # patch "docs/File-Attributes.html" # from [54f84bcf691fb7a3f315fcc4fac04edd28f60d47] # to [37e478866d1245c4b1c09cb8fdf0d64c1c1b94f0] # # patch "docs/Hook-Reference.html" # from [bbf1e3801e46fd816706de440921f8d0b795b850] # to [2dc893bf620477f318604f8c52863207ee23dafb] # # patch "docs/Hooks.html" # from [8b00e4bedffb6eba2196e3c0e69ee3f66b7ae97a] # to [e26a3fd83f21be45c05d68e3eba3b33e14bf599e] # # patch "docs/Importing-from-CVS.html" # from [6a1fa1c22082706fbb856f037be0bc6d3b53e3bb] # to [34ea9d99420562ab5f0a435386597101c3b6d98c] # # patch "docs/Index.html" # from [fa42a028e9d82254ad216f6f57db035688258e82] # to [a2a84699df933b40ff4c3472b6e52b378376b776] # # patch "docs/Informative.html" # from [02a36cbe6c6465eb0834dbb4d002c43d6fd48df8] # to [a7a6c4c58de1d313ecf3dd8915b4de276ce1c2d6] # # patch "docs/Inodeprints.html" # from [be33d9d38c4c8f099ee281bf568f7594c5e73d0a] # to [00c8414b0b4d264a564ec486ca65a8e7dc48229d] # # patch "docs/Internationalization.html" # from [a4ab910619f4e0c1603d47159f589f628ef5c9de] # to [f743ea0d87237b4a0ba08b8e1eff8c2eda4b11e1] # # patch "docs/Mark_002dMerge.html" # from [b0320b938e94cb1fbf3c5b6fa8f073a6337a1962] # to [170d0082dea175d046bd02afac38a47877f4eeab] # # patch "docs/Merging.html" # from [302876728e19e60813d15edb4a596abd6489160b] # to [6e1b1cffbbfab2076cfe97d595dc3316b1ed4658] # # patch "docs/Migrating-and-Dumping.html" # from [f39608a28f70ee994909f742c9500cf47e1ab8f1] # to [31cf38fd784584da6f9ea3ce119b8e8caffecc23] # # patch "docs/Naming-Conventions.html" # from [1947e2ded5775f444d200f64bfd6c4561cabc6f8] # to [bf61294982536b75cc19ea1ae6aee8d5f0371c31] # # patch "docs/Network-Service-Revisited.html" # from [6f918f69d77c16cd22b804ca278bf1308157220d] # to [e23c224b329abe7bc8bc7d9730306a6b1721f678] # # patch "docs/Network.html" # from [fcbaa8e892e55d43c788bb4facbd6b1d471941ce] # to [e36efb76b4ebb2d90f47c846b8b21cd24ac6d75d] # # patch "docs/Other-Transports.html" # from [0ad85a13f33e1357472a6c278eda67862a5dc9fc] # to [0ed42ec35fac43d4952525eb0b1b48af8a38aed8] # # patch "docs/Quality-Assurance.html" # from [845799c55c46f2cc88e628ab869b4a59f5a0542b] # to [2ba8ffdc2456b9a53ca6bebe46aa1b956546433d] # # patch "docs/Rebuilding-ancestry.html" # from [9da65a984054c62eca74ebb2a49b4da5108e77c8] # to [6424f9076b7d8ea298d9d616b003948e024624f4] # # patch "docs/Reserved-Certs.html" # from [b9b8f9978c0d1194dd80b5e505fbbfd92ff9f0e5] # to [9ef20b2c71a46c8555dc24861a2832695a52c012] # # patch "docs/Reserved-Files.html" # from [92e303c9483a515e50b62d5c9dacdec48796e8c6] # to [7810aa5ad950172eeb011bfda7407b13a1a42562] # # patch "docs/Selectors.html" # from [2faeef55033b1bc06b9103680f540a9ca6b6d3a3] # to [9a60f992b48d07bbada4ce3c695f8ee65062268a] # # patch "docs/Tree.html" # from [5ad43fbf3c57ef1c1beed7eaeb701f9b2ef6a788] # to [d5ba1f479bac24dab886da9e837baf5d3b02a44d] # # patch "docs/Using-packets.html" # from [f17114bc34afe5941679d6cc525e13175d6148ef] # to [4077ccda595a86dd82f1fb9a7da0468b69010b02] # # patch "docs/Vars.html" # from [c7166d1de6fb0e5a9fac05114b090e4c0b21aa99] # to [c7d3a44236435c862d6c7769d8a1b32fd57fd5fc] # # patch "docs/Versions-of-files.html" # from [4f859f5d77dce0db8caa488ed73f3e2d8bc473a3] # to [ef657adad28e050daad568c6a40e338c8e7c2049] # # patch "docs/Workspace.html" # from [bbbb8980b4577baf8e1297ac539e90afe0e3629f] # to [e99335ca826ea34a52d72e32467e0152a7c4767c] # # patch "docs/index.html" # from [bb60110cb6d0655ff96bf8c5063fffdf94488c0f] # to [2ce917cec939e30407b2d86a3393f6c9fe899d77] # # patch "monotone.html" # from [2253c1ffee292743a51cc8916b78209f60188f27] # to [4b704e17b4d31d163d258b64ac7285228a1fcc61] # # patch "monotone.pdf" # from [f4f435a99d51096808b658146c2a13eb2c9df124] # to [331ecb69ea92934d6274eeae1ef6b97f6e54e73c] # ============================================================ --- README 229c7f621b65f7e4970ae5aaec993812b9daa1d4 +++ README 229c7f621b65f7e4970ae5aaec993812b9daa1d4 @@ -0,0 +1,6 @@ +If you've downloaded a release, see INSTALL for installation +instructions. If you've checked this out, the generated files are not +included, and you must use "autoreconf --install" to create them. + +"make html" for docs, or read the .info file and / or man page. + ============================================================ --- docs/Workspace-Collisions.html b1361bb5f32890fce1b8d3d6d62892b5dc882758 +++ docs/Workspace-Collisions.html b1361bb5f32890fce1b8d3d6d62892b5dc882758 @@ -0,0 +1,122 @@ + + +Workspace Collisions - monotone documentation + + + + + + + + + + + + +
+

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


+
+ +

3.6 Workspace Collisions

+ +

Sometimes when you work on a project, several people make similar +changes in parallel. When these changes occur in an existing file that +is known to both sides, monotone can merge the edits when the two +revisions meet (possibly after getting help to resolve content +conflicts). Other kinds of changes cannot be merged so readily, +especially ones that involve files in your workspace that are not +tracked by monotone. + +

Workspace collisions can happen for many reasons; some examples include: +

+ +

These examples describe collisions on update; the same kinds +of things can happen with other commands that can bring changes into +your workspace, such as checkout or pluck too. + +

Monotone is careful to avoid hitting such collisions. Before changing +the workspace, it will try and detect the possibility of collisions, and +the command will fail, warning you about the names that collide. The +file content in the database is safe and can be recovered at any time, +so monotone is conservative and will refuse to destroy the information +in your workspace contents. + +

However, monotone cannot detect all kinds of failures and collisions in +your workspace. For example: +

+ +

These are all hopefully very rare occurrences. If such a filesystem +error does cause a failure part-way during a workspace +alteration, monotone will stop immediately rather than risk potentially +doing further damage, and your workspace may be left in an incomplete +state. If this happens, you will need to resolve the issue and clean up +the workspace manually. If you need to do so, understanding how +monotone manipulates the workspace is helpful. + +

When monotone applies renaming changes to the workspace, each file is +first detached from the workspace under its old name, then +attached under the new name. This is done by moving it to the +_MTN/detached directory. Newly added files are created here +before being moved into place, too. While inside _MTN/detached, +the file or directory is named as a simple integer (these numbers come +from monotone's internal identification of the node). If the detached +node is a directory, the directory is moved with all of its contents +(including unversioned files); this can help identify which directory +has been detached. + +

If a previous workspace alteration failed part-way, the +_MTN/detached directory will still exist, and monotone will +refuse to attempt another alteration while the workspace is in this +inconsistent state. This also acts as a lock against multiple monotone +processes performing workspace alterations (but not other programs). + +

The best way to avoid a messy recovery from such a failure is simply to +ensure that you always commit before trying to +update (or pluck, etc) other changes from the +database into your workspace. This ensures that your current workspace +contents are safely stored, and can be retrieved later (such as with +revert). + + + ============================================================ --- INSTALL 57518aa598e6c62cb9c2f74fd102091b489bfcc4 +++ INSTALL e0f783d8e7b4ba600407c7d1f22493408195a506 @@ -21,7 +21,6 @@ 1. prerequisites: apt-get install libboost-date-time-dev apt-get install libboost-filesystem-dev apt-get install libboost-regex-dev - apt-get install libboost-serialization-dev apt-get install libboost-test-dev apt-get install libboost-dev apt-get install g++ ============================================================ --- NEWS baff89704e514e465db0099404e03457e7127f4f +++ NEWS 08261921b0db1ef853bd36576c47bcb3657f1ddb @@ -1,3 +1,86 @@ +Tue Feb 27 18:46:58 UTC 2007 + + 0.33 release. + + The internal data format has changed with this release; + migration is straight-forward. To upgrade your databases, + you must run: + $ mtn -d mydb.mtn db migrate + All of these operations are completely lossless, and 0.33 + remains compatible with earlier versions with regards to + netsync. + + Changes + + - "mtn ls unknown" no longer recurses into unknown directories. + + - update will fail rather than clobbering unversioned files + that exist in the workspace. + + - update will detect directories with unversioned files before + attempting to drop them and will refuse to run rather than + corrupting the workspace. such unversioned files must be + removed manually. + + - the character set and line separator conversion hooks + (get_system_linesep, get_charset_conv and get_linesep_conv) + have been removed. Similar functionality (probably based on + file type attributes) is planned and will be added in a future + release. + + - update will switch to the branch of a given revision if it + differs from the current workspace branch. + + - add will now accept combinations of --unknown, --recursive and + --no-respect-ignore. + + - import now imports unknown directory trees properly. + + - use SQLite 3.3.12. + + - schema migrator rebuilt and will now properly detect and report + if the database used is created by a newer monotone than the one + currently used. + + - removed the man page mtn.1, as it hadn't been updated for a long + time. + + New features + + - "mtn merge_into_workspace" (still to be documented) + + - "mtn log" will now print an ASCII revision graph alongside the + usual log text. + + Speed improvements + + - "mtn annotate file" should run even faster now. it exploits + the fact that we store deltas of rosters. by peeking at + these deltas, it can avoid reconstruction of whole rosters + in many cases. + + Other + + - contrib/monotone-mirror.sh and + contrib/monotone-mirror-postaction-update.sh, two scripts + to mirror and update directories automatically. + + - contrib/monotone-run-script-post-netsync.lua, to automatically + update a directory as soon as new revisions or certs arrive for + a given branch. + + - contrib/monotone.bash_completion had some improvemens. + + - contrib/monotone.el had some improvements. + + Internal + + - Internally, the concept of "projects" has been introduced. It + currently doesn't mean anything, but will be used later, with + policy branches and similar. + + + Wed Dec 27 09:57:48 UTC 2006 0.32 release. ============================================================ --- UPGRADE d937bff0f8a61653efd71e8322918283efa15660 +++ UPGRADE 128b39c8de9f33b4763cc69e06baba9ee10b06a2 @@ -1,4 +1,4 @@ -upgrading monotone to 0.32 +upgrading monotone to 0.33 ========================== How to read this file: @@ -16,6 +16,10 @@ If you are upgrading from: will be described there, not here. If you are upgrading from: + - 0.32 or earlier: The database format has changed. You must run + (after remembering to take a backup copy): + $ mtn -d mydb.mtn db migrate + on each of your databases. - 0.31 or earlier: The database format has changed. You must run (after remembering to take a backup copy): $ mtn -d mydb.mtn db migrate ============================================================ --- docs/Additional-Lua-Functions.html d1315ca4877bee82c52f4e8ea1ae6b210bc8a0f7 +++ docs/Additional-Lua-Functions.html a20e1a6abc7f30e909076b1f295832bb768f0ab2 @@ -32,60 +32,60 @@ Up: 6.2 Additional Lua Functions -

This section documents the additional lua functions made available to +

This section documents the additional Lua functions made available to hook writers.

-
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. As an example, existonpath("xxdiff") returns 0 if the program xxdiff is available. -On windows, this function automatically appends “.exe” to the +On Windows, this function automatically appends “.exe” to the program name. In the previous example, existonpath would search for “xxdiff.exe”. -
guess_binary(filespec)
+
guess_binary(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. +otherwise. On Windows this function returns always false. -
kill(pid [, signal])
-This function calls the kill() C library function on posix systems and +
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 succes, -1 on error. +Returns 0 on success, -1 on error. -
make_executable(filespec)
-This function marks the named file as executable. On windows has no +
make_executable(filespec)
+This function marks the named file as executable. On Windows has no effect. -
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 @@ -107,14 +107,14 @@ For the definition of temp_file()< file in the standard TMP/TEMP directories. For the definition of temp_file(), see Default hooks. -
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 +process PID on POSIX systems, the process handle on Win32 or -1 if there was an error. -Calls fork/execvp on Posix, CreateProcess on Win32. +Calls fork/execvp on POSIX, CreateProcess on Win32.

Important notice:
To spawn a process and wait for its completion, use the execute() @@ -122,13 +122,13 @@ in a standardized way. option. execute() builds on spawn() and wait() in a standardized way. -

wait(pid)
-Wait until the process with given pid (process handle on Win32) exits. +
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. The exit code is meaningful only if the result value is 0. -
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 ============================================================ --- docs/Advanced-Uses.html 5905ee7baf20c59c6fd828c1004add6579745697 +++ docs/Advanced-Uses.html 8321cf86cedd263616c8d270eec3749a75d7502a @@ -45,10 +45,11 @@ familiarize yourself with its operation.
  • Restrictions: Limit workspace changes to specified files.
  • Scripting: Running monotone from other programs.
  • Inodeprints: Trading off safety for speed in your workspace. -
  • Quality Assurance: Integrating testing and review with development. -
  • Vars: Simple per-database configuration information. -
  • Reserved Files: File names with special meanings. -
  • Reserved Certs: Certificate names with special meanings. +
  • Workspace Collisions: Workspace files that collide with new versioned files. +
  • Quality Assurance: Integrating testing and review with development. +
  • Vars: Simple per-database configuration information. +
  • Reserved Files: File names with special meanings. +
  • Reserved Certs: Certificate names with special meanings.
  • Naming Conventions: Choosing appropriate names for keys and branches.
  • File Attributes: Marking files as executable, or other attributes.
  • Merging: Merging with external tools, handling binary files. ============================================================ --- docs/Automation.html 4aca868756ecf35a6938d092809cdc05f2ede5fe +++ docs/Automation.html f29c90fe440fea9f22ce4df65e66d34585a30014 @@ -201,7 +201,7 @@ 0.1 0.1
    Purpose:
    -Prints the descendents of one or more revisions. +Prints the descendants of one or more revisions.
    Sample output:
              
    @@ -210,13 +210,13 @@ Prints the descendents of one or more re
          

    Output format:
    -Zero or more lines, each giving the ID of one descendent of the given +Zero or more lines, each giving the ID of one descendant of the given revisions. Each line consists of a revision ID, in hexadecimal, followed by a newline. The lines are printed in alphabetically sorted order.

    The output does not include rev1, rev2, etc., except that if -rev2 is itself a descendent of rev1, then rev2 will be +rev2 is itself a descendant of rev1, then rev2 will be included in the output.

    Error conditions:
    @@ -315,7 +315,7 @@ are no arguments, prints nothing.
    Output format:
    -Zero or more lines, each giving the ID of one descendent of the given +Zero or more lines, each giving the ID of one descendant of the given revisions. Each line consists of a revision ID, in hexadecimal, followed by a newline. The lines are printed in alphabetically sorted order. @@ -407,7 +407,7 @@ children. This is similar, but not iden Prints the leaves of the revision graph, i.e. all revision that have no children. This is similar, but not identical to the functionality of heads, which prints every revision in a branch, that has no -descendents in that branch. If every revision in the database was in +descendants in that branch. If every revision in the database was in the same branch, then they would be identical. Generally, every leaf is the head of some branch, but not every branch head is a leaf. @@ -437,7 +437,7 @@ Prints all branch certs present in the r
    Purpose:
    Prints all branch certs present in the revision graph, that are not -excluded by the lua hook ignore_branch. +excluded by the Lua hook ignore_branch.
    Sample output:
              
    @@ -467,7 +467,7 @@ tags of the revision graph.
     revisions on branches matched by the pattern; otherwise prints all
     tags of the revision graph.
     
    -          

    If a branch name is ignored by means of the lua hook +

    If a branch name is ignored by means of the Lua hook ignore_branch, it is neither printed, nor can it be matched by a pattern. @@ -517,7 +517,7 @@ blank line. Values will be escaped, '\'

    Stanzas are printed in arbitrary order.

    Error conditions:
    -A run-time exception occures if an illegal branch pattern is +A run-time exception occurs if an illegal branch pattern is specified.
  • @@ -688,7 +688,7 @@ are not valid, detailed below. ' ' unchanged ' P' patched (contents changed) ' U' unknown (exists on the filesystem but not tracked) - ' I' ignored (exists on the filesystem but excluded by lua hook) + ' I' ignored (exists on the filesystem but excluded by Lua hook) ' M' missing (exists in the manifest but not on the filesystem) ' A ' added (invalid, add should have associated patch) @@ -886,7 +886,7 @@ provided as 'l' <string> [<stri

    The input is a series of commands. The command name plus arguments are provided as 'l' <string> [<string> ...] 'e', where <string> = <size> colon -<data> . This may optionally be preceeded by a set of key=value pairs +<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. ============================================================ --- docs/CVS-Phrasebook.html 38db39f172da9f8f255c813651c991c729aff093 +++ docs/CVS-Phrasebook.html 74d9762c96bb7e130c3b086205599ecbc668c36a @@ -120,7 +120,7 @@ omit the mer communication step with monotone. The extra command, merge, ensures that the branch your are working on has a unique head. You can omit the merge step if you only want update to -examine descendents of your base revision, and ignore other heads on +examine descendants of your base revision, and ignore other heads on your branch.

    Tagging Revisions

    ============================================================ --- docs/Committing-Work.html e0c6ae7079f37eb8970bec9f0b176abbdf6edc16 +++ docs/Committing-Work.html 0ac9fe948d6d6765c0b282198521f0d63122ae45 @@ -109,8 +109,8 @@ the revision Jim just committed. A head

    The output of this command tells us that there is only one current “head” revision in the branch jp.co.juicebot.jb7, and it is the revision Jim just committed. A head revision is one without any -descendents. Since Jim has not committed any changes to this revision -yet, it has no descendents. +descendants. Since Jim has not committed any changes to this revision +yet, it has no descendants. ============================================================ --- docs/Database.html 3fe36e430a3fa3ac31f5ccca672e29ba2b70ea65 +++ docs/Database.html ba54f8344b2ab01c070261b7f1d4bccba1ad8cdb @@ -59,7 +59,7 @@ possible. It is sometimes also useful wh dbfile to the standard output stream. It is a very low-level command, and produces the most “recoverable” dumps of your database possible. It is sometimes also useful when migrating databases between -variants of the underlying sqlite database format. +variants of the underlying SQLite database format.

    mtn db load --db=dbfile
    This command applies a raw SQL statement, read from the standard input @@ -216,9 +216,9 @@ from your database. There are a number command; it permanently and irrevocably deletes historical information from your database. There are a number of caveats: