OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /v/openpkg/cvs                   Email:  r...@openpkg.org
  Module: openpkg-src                      Date:   23-Mar-2009 10:36:24
  Branch: HEAD                             Handle: 2009032309362300

  Added files:
    openpkg-src/monotone    monotone.man
  Modified files:
    openpkg-src/monotone    monotone.patch.rse monotone.spec
  Removed files:
    openpkg-src/monotone    monotone.patch

  Log:
    upgrading package: monotone 0.42 -> 0.43

  Summary:
    Revision    Changes     Path
    1.1         +330 -0     openpkg-src/monotone/monotone.man
    1.22        +0  -107    openpkg-src/monotone/monotone.patch
    1.12        +237 -228   openpkg-src/monotone/monotone.patch.rse
    1.42        +7  -10     openpkg-src/monotone/monotone.spec
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-src/monotone/monotone.man
  ============================================================================
  $ cvs diff -u -r0 -r1.1 monotone.man
  --- /dev/null 2009-03-23 10:36:23 +0100
  +++ monotone.man      2009-03-23 10:36:23 +0100
  @@ -0,0 +1,330 @@
  +.TH MTN 1 2007-06-09 monotone monotone
  +.SH NAME
  +mtn \- distributed version control system
  +.SH SYNOPSIS
  +\fBmtn\fP \fI[options] <command> [parameters]\fP
  +.SH WARNING
  +.P
  +This manpage is not well\(hymaintained; it is a summary of monotone's
  +capabilities, and probably contains inaccuracies.  For the complete,
  +accurate manual, including tutorial, concepts, and full reference
  +documentation, please use \fBinfo monotone\fP or refer to
  +\fBhttp://monotone.ca/docs/\fP.  (On Debian systems, a local copy of
  +the HTML manual is available in the \fBmonotone\-doc\fP package as
  +\fB/usr/share/doc/monotone\-doc/html/index.html\fP, along with a
  +printable PDF copy.)  The developers will gratefully accept patches to
  +arrange that this manpage, the \fI\-\-help\fP output, and the main
  +manual are kept in sync mechanically.
  +.SH DESCRIPTION
  +.P
  +Monotone is a version control system, which allows you to keep old
  +versions of files, as well as special \fImanifest files\fP which
  +describe the location of files in a tree. Unlike other systems,
  +versions in monotone are \fIidentified\fP by cryptographic hash, and
  +operations are authenticated by individual users' evaluating
  +cryptographic signatures on meta\(hydata, rather than any central
  +authority.
  +.P
  +Monotone keeps a collection of versions in a single\(hyfile relational
  +database. It is essentially serverless, using network servers only as
  +untrusted communication facilities. A monotone database is a regular
  +file, which contains all the information needed to extract previous
  +versions of files, verify signatures, merge and modify versions, and
  +communicate with network servers.
  +.SH COMMANDS
  +.TP 
  +\fBcomment\fP \fI<id>\fP
  +Write a comment cert for a revision.
  +.TP
  +\fBapprove\fP \fI<id>\fP
  +Make a "branch" cert approving of a revision's membership in a branch.
  +.TP
  +\fBdisapprove\fP \fI<id1>\fP
  +Disapprove of a revision, committing the inverse changes as as a
  +descendant of the disapproved revision.
  +.TP
  +\fBtag\fP \fI<id> <tagname>\fP
  +Put a symbolic tag cert on a revision.
  +.TP
  +\fBtestresult\fP \fI<id> (0|1|true|false|yes|no|pass|fail)\fP
  +Indicate a passing or failing test result on a revision.
  +.TP
  +\fBdiff \fI[\-\-revision=<id1> [\-\-revision=<id2>] ] [<pathname>...]\fP
  +Show diffs between workspace and database.
  +.TP
  +\fBstatus \fI[<pathname>...]\fP
  +Show status of workspace.
  +.TP
  +\fBlog\fP \fI[id] \fP
  +Show historical log of revisions, starting from workspace
  +base revision, or \fI[id]\fP if given.
  +.TP
  +\fBcert\fP \fI<id> <certname> [certval]\fP
  +Create a custom cert for a revision. Reads cert value
  +from stdin if no value given on command line.
  +.TP
  +\fBgenkey\fP \fI<keyid>\fP
  +Generate an RSA key\(hypair and store it in the database.
  +.TP
  +\chkeypass\fP \fI<keyid>\fP
  +Change passphrase of the private half of a key.
  +.TP
  +\fBlist certs\fP \fI<id>\fP
  +List certs associated with revision.
  +.TP
  +\fBlist keys\fP \fI[partial\(hyid]\fP
  +List keys matching glob, or list all keys if no glob given.
  +.TP
  +\fBlist branches\fP
  +List all branches.
  +.TP
  +\fBlist tags\fP
  +List all tags.
  +.TP
  +\fBlist vars \fI[<domain>]\fP
  +List all vars (possibly limited by domain).
  +.TP
  +\fBlist unknown \fI[<pathname...]\fP
  +List files in workspace, but not in revision's manifest or
  +work list.
  +.TP
  +\fBlist ignored \fI[<pathname...]\fP
  +List files intentionally ignored due to the ignore_file hook.
  +.TP
  +\fBlist missing \fI[<pathname...]\fP
  +List files in revision's manifest, but not in workspace.
  +.TP
  +\fBlist changed \fI[<pathname...]\fP
  +List files in workspace that have changed compared to the base
  +revision.
  +.TP
  +\fBfdata\fP \fI<id>\fP
  +Write file data packet to stdout.
  +.TP
  +\fBfdelta\fP \fI<oldid> <newid>\fP
  +Write file delta packet to stdout.
  +.TP
  +\fBmdata\fP \fI<id>\fP
  +Write manifest data packet to stdout.
  +.TP
  +\fBmdelta\fP \fI<oldid> <newid>\fP
  +Write manifest delta packet to stdout.
  +.TP
  +\fBcerts\fP \fI<id>\fP
  +Write revision cert packets to stdout.
  +.TP
  +\fBrdata\fP \fI<id>\fP
  +Write revision data packet to stdout.
  +.TP
  +\fBprivkey\fP \fI<id>\fP
  +Write private key packet to stdout.
  +.TP
  +\fBpubkey\fP \fI<id>\fP
  +Write public key packet to stdout.
  +.TP
  +\fBread\fP \fI[<file1> [<file2> [...]]]\fP
  +Read packets from files or stdin. 
  +.TP
  +\fBcvs_import\fP \fI<cvsroot>/<module>\fP
  +Import all versions in CVS module. Reconstructs revisions and converts
  +metadata to certificates. A private signing key must already exist in
  +the database.
  +.TP
  +\fBrcs_import\fP \fI<rcsfile> ...\fP
  +Import all file versions in RCS files. Does not reconstruct revisions
  +across the entire tree.  You do not want this command, it is for
  +debugging; use cvs_import.
  +.TP
  +\fBcheckout\fP \fI[\-\-revision=revision\(hyid]\fP \fI[<directory>]\fP
  +Check out revision from database.
  +.TP
  +\fBco\fP \fI[\-\-revision=revision\(hyid]\fP \fI[<directory>]\fP
  +Check out revision from database; an alias for \fBcheckout\fP.
  +.TP
  +\fBcat\fP \fI(file|manifest) <id>\fP
  +Write file or manifest from database to stdout.
  +.TP
  +\fBheads\fP
  +Show unmerged heads of branch, or report when branch is merged.
  +.TP
  +\fBmerge\fP
  +Merge unmerged heads of branch.
  +.TP
  +\fBadd\fP \fI<pathname> [...]\fP
  +Add files to workspace. adding a file does not copy it into the database,
  +merely adds it to the work list. You must \fBcommit\fP your changes in order
  +to copy added files to the database.
  +.TP
  +\fBdrop\fP \fI<pathname> [...]\fP
  +Drop files from workspace. Files are not deleted from workspace, 
  +merely noted as removals in the work list.
  +.TP
  +\fBrename\fP \fI<src> \fI<dst>\fP
  +Rename files from \fI<src> \fP to \fI<dst> \fP in workspace.
  +.TP
  +\fBcommit\fP \fI[(\-\-message=<log message>|\-\-message\-file=<file>)] 
[<pathname>...]\fP
  +Commit workspace to database.  Each commit has a changelog message
  +associated with it.  If \-\-message is provided on the command line, it
  +is used; if \-\-message\-file is provided, the content of the
  +named file will be used as a commit message. If the filename is '\-'
  +the commit message will be read from standard input.  Otherwise a log
  +message editor will be invoked.  If the file _MTN/log exists
  +and is non\(hyempty, its content is used to prefill the editor.  You
  +cannot specify both \-\-message and \-\-message\-file at the same time, and
  +if _MTN/log exists and is non\(hyempty, you can cannot specify either of them
  +at all.
  +.TP
  +\fBupdate\fP  \fI[revision\(hyid]\fP
  +Update workspace.
  +.TP
  +\fBrefresh_inodeprints\fP 
  +Turn on inodeprints mode, and force a cache refresh.
  +.TP
  +\fBpush\fP \fI[<host> [<glob>]]\fP 
  +Push contents of \fI<glob>\fP to database on \fI<host>\fP.
  +.TP
  +\fBpull\fP \fI[<host> [<glob>]]\fP 
  +Push contents of \fI<glob>\fP from database on \fI<host>\fP.
  +.TP
  +\fBsync\fP \fI<host> <glob>\fP 
  +Sync contents of \fI<glob>\fP with database on \fI<host>\fP.
  +.TP
  +\fBserve\fP \fI[\-\-pid\-file=<path>] [\-\-bind=[<host>][:<port>]] <glob> 
[\-\-exclude=<exclude\(hyglob>]\fP 
  +Serve contents of \fI<glob>\fP at network address \fI<host>\fP, on the
  +port \fI<port>\fP.  If \fI<port>\fP isn't given, 4691 is used. If a
  +\-\-pid\-file option is provided on the command line, monotone will store
  +the process id of the server in the specified file.
  +.TP
  +\fBset\fP \fI<domain> <name> <value>\fP 
  +Set the db var \fI<name>\fP in domain \fI<domain>\fP to value
  +\fI<value>\fP. 
  +.TP
  +\fBunset\fP \fI<domain> <name>\fP 
  +Delete any setting for db var \fI<name>\fP in domain \fI<domain>\fP.
  +.TP
  +\fBautomate\fP \fI(interface_version | heads | ancestors | attributes | 
parents | descendents | children | graph | erase_ancestors | toposort | 
ancestry_difference | leaves | inventory | stdio | certs | select)\fP
  +Scripting interface.
  +.TP
  +\fBdb\fP \fI(init | info | version | dump | load | migrate | rebuild | 
execute | check)\fP
  +Manipulate database state.
  +.SH OPTIONS
  +.P
  +Command line options override environment variables and
  +settings in lua scripts (such as \fB.monotonerc\fP)
  +.TP
  +\fB\-\-help\fP
  +Print help message.
  +.TP
  +\fB\-\-debug\fP
  +Turn on debugging log on standard error stream. This is very
  +verbose. Default is to be silent, unless an error occurs, in which
  +case failure log is dumped.
  +.TP
  +\fB\-\-quiet\fP
  +Turn off normal progress messages.
  +.TP
  +\fB\-\-dump=\fP\fI<file>\fP
  +Dump debugging log to \fIfile\fP on failure.
  +.TP
  +\fB\-\-nostd\fP
  +Do not evaluate "standard" lua hooks compiled into \fBmonotone\fP.
  +.TP
  +\fB\-\-norc\fP
  +Do not load lua hooks from user's \fB~/.monotonerc\fP file.
  +.TP
  +\fB\-\-rcfile=\fP\fI<file>\fP
  +Load extra lua hooks from \fIfile\fP (may be given multiple times).
  +.TP
  +\fB\-\-db=\fP\fI<file>\fP
  +Use database in \fIfile\fP.
  +.TP
  +\fB\-\-key=\fP\fI<keyid>\fP
  +Use \fIkeyid\fP for operations which produce RSA signatures. Default
  +is inferred from presence of unique private key in database. Can also
  +be customized on a per\(hybranch basis with hook function 
  +\fBget_branch_key(branchname)\fP.
  +.TP
  +\fB\-k\fP \fI<keyid>\fP
  +An alias for \fB\-\-key=\fP\fI<keyid>\fP
  +.TP
  +\fB\-\-branch=\fP\fI<branchname>\fP
  +Use \fIbranchname\fP for operations on a branch. Default is inferred
  +in operations on existing branches (commit, update, etc).
  +.TP
  +\fB\-b\fP \fI<branchname>\fP
  +An alias for \fB\-\-branch=\fP\fI<branchname>\fP
  +.TP
  +\fB\-\-ticket=\fP\fIdot|count|none\fP
  +Use the given method to print tickers.  The \fBcount\fP method prints
  +the count for each ticker on one line, incrementing the numbers in
  +place, while the \fBdot\fP method prints a continuous string of
  +characters (like some programs provide a progress line of dots).
  +\fBnone\fP prints nothing.  The default is \fBcount\fP.
  +.TP
  +\fB\-\-revision=\fP\fI<id>\fP
  +Used to specify one or more revision ids to various commands.
  +.TP
  +\fB\-r\fP \fI<id>\fP
  +An alias for \fB\-\-revision=\fP\fI<id>\fP
  +.TP
  +\fB\-\-message=\fI<log message>\fP
  +Use the given message as the changelog when committing a new revision
  +rather than invoking the log message editor. Currently this option only
  +applies to the commit command but it may also apply to the comment
  +command in the future.
  +This option is alternative to \-\-message\-file
  +.TP
  +\fB\-m \fI<log message>\fP
  +An alias for \fB\-\-message=\fI<log message>\fP
  +.TP
  +\fB\-\-message\-file=\fI<message file>\fP
  +Use the content of the given file as the changelog when committing a
  +new revision rather than invoking the log message editor. If the passed 
filename is '\-' the changelog message will be read from standard input.
  +Currently this option only applies to the commit command but it may also 
apply
  +to the comment command in the future.
  +This option is alternative to \-\-message.
  +.TP
  +\fB\-\-author=\fI<author email>\fP
  +Use the given author as the value of the "author" cert when committing
  +a new revision, rather than the default author.  Useful when
  +committing a patch on behalf of someone else, or when importing
  +history from another version control system.
  +.TP
  +\fB\-\-date=\fI<date and time>\fP
  +Use the given given date and time as value of the "date" cert when
  +committing a new revision, rather than the current time.  Useful when
  +importing history from another version control system.
  +.TP
  +\fB\-\-root=\fI<root dir>\fP
  +Stop the search for a workspace (containing the _MTN directory)
  +at the specified root directory rather than at the physical root of the
  +filesystem.
  +.TP
  +\fB\-\-xargs=\fI<file>\fP
  +Inject the contents of the file in place among the command line
  +arguments.  This may be useful in case the command line would
  +otherwise become too long for your system.  This option can be used
  +more than once if needed.
  +.TP
  +\fB\-@ \fI<file>\fP
  +An alias for \fB\-\-xargs=\fI<file>\fP.
  +.SH ENVIRONMENT
  +.TP
  +\fBEDITOR\fP
  +Used to edit comments, log messages, etc.
  +.TP
  +\fBVISUAL\fP
  +Used in preference to \fBEDITOR\fP, if set.
  +.SH FILES
  +.TP
  +\fB$HOME/.monotonerc\fP
  +A lua script, used as a customization file.
  +.SH "SEE ALSO"
  +.P
  +http://monotone.ca/
  +.SH BUGS
  +.P
  +see http://savannah.nongnu.org/bugs/?group=monotone
  +.SH AUTHOR
  +.P
  +graydon hoare <gray...@pobox.com>
  @@ .
  rm -f openpkg-src/monotone/monotone.patch <<'@@ .'
  Index: openpkg-src/monotone/monotone.patch
  ============================================================================
  [NO CHANGE SUMMARY BECAUSE FILE AS A WHOLE IS JUST REMOVED]
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/monotone/monotone.patch.rse
  ============================================================================
  $ cvs diff -u -r1.11 -r1.12 monotone.patch.rse
  --- openpkg-src/monotone/monotone.patch.rse   28 Dec 2008 14:11:15 -0000      
1.11
  +++ openpkg-src/monotone/monotone.patch.rse   23 Mar 2009 09:36:23 -0000      
1.12
  @@ -64,8 +64,8 @@
   
   ===================================================================
   Index: cmd_diff_log.cc
  ---- cmd_diff_log.cc  b1684ddc5633e2d8e7ed741f418ccd13731fdbdd
  -+++ cmd_diff_log.cc  8c1621ccb0822878cb70b718e84b5b9ac399b4df
  +--- cmd_diff_log.cc  ddcd0dfc3c690b04ce83cb0fb68b8cce2795137e
  ++++ cmd_diff_log.cc  0c8cb180ac373e88a26e8cdf6a29e19a4a02edbe
   @@ -100,6 +100,27 @@ print_indented_set(ostream & os,
                       set<file_path> const & s,
                       size_t max_cols)
  @@ -114,7 +114,7 @@
               << " to " << i->second << '\n';
        }
    
  -@@ -228,7 +254,12 @@ static void
  +@@ -230,7 +256,12 @@ static void
    }
    
    static void
  @@ -127,7 +127,7 @@
               database & db,
               cset const & cs,
               set<file_path> const & paths,
  -@@ -238,8 +269,13 @@ dump_diffs(lua_hooks & lua,
  +@@ -240,8 +271,13 @@ dump_diffs(lua_hooks & lua,
               bool show_encloser,
               bool limit_paths = false)
    {
  @@ -141,7 +141,7 @@
    
      for (map<file_path, file_id>::const_iterator
             i = cs.files_added.begin();
  -@@ -248,6 +284,9 @@ dump_diffs(lua_hooks & lua,
  +@@ -250,6 +286,9 @@ dump_diffs(lua_hooks & lua,
          if (limit_paths && paths.find(i->first) == paths.end())
            continue;
    
  @@ -151,7 +151,7 @@
          output << patch_sep << '\n';
          data unpacked;
          vector<string> lines;
  -@@ -294,6 +333,9 @@ dump_diffs(lua_hooks & lua,
  +@@ -296,6 +335,9 @@ dump_diffs(lua_hooks & lua,
          file_data f_old;
          data data_old, data_new;
    
  @@ -161,7 +161,7 @@
          output << patch_sep << '\n';
    
          db.get_file_version(delta_entry_src(i), f_old);
  -@@ -331,7 +373,12 @@ static void
  +@@ -333,7 +375,12 @@ static void
    }
    
    static void
  @@ -174,7 +174,7 @@
               database & db,
               cset const & cs,
               std::ostream & output,
  -@@ -340,8 +387,13 @@ dump_diffs(lua_hooks & lua,
  +@@ -342,8 +389,13 @@ dump_diffs(lua_hooks & lua,
               bool show_encloser)
    {
      set<file_path> dummy;
  @@ -188,7 +188,7 @@
    }
    
    // common functionality for diff and automate content_diff to determine
  -@@ -541,9 +593,15 @@ CMD(diff, "diff", "di", CMD_REF(informat
  +@@ -543,9 +595,15 @@ CMD(diff, "diff", "di", CMD_REF(informat
        }
      else
        {
  @@ -204,7 +204,7 @@
        }
    }
    
  -@@ -577,8 +635,13 @@ CMD_AUTOMATE(content_diff, N_("[FILE [..
  +@@ -579,8 +637,13 @@ CMD_AUTOMATE(content_diff, N_("[FILE [..
          dump_header(dummy_header, included, output, false);
        }
    
  @@ -218,7 +218,7 @@
    }
    
    
  -@@ -908,7 +971,11 @@ CMD(log, "log", "", CMD_REF(informative)
  +@@ -1001,7 +1064,11 @@ CMD(log, "log", "", CMD_REF(informative)
              else
                {
                  out << string(65, '-') << '\n';
  @@ -230,36 +230,36 @@
    
                  changes_summary csum;
    
  -@@ -923,12 +990,21 @@ CMD(log, "log", "", CMD_REF(informative)
  +@@ -1016,12 +1083,21 @@ CMD(log, "log", "", CMD_REF(informative)
    
                  for (set<revision_id>::const_iterator anc = ancestors.begin();
                       anc != ancestors.end(); ++anc)
   +#if defined(RSE) /* cosmetics-diff-and-log */
   +                out << "Ancestor:  " << *anc << '\n';
   +
  -+              log_certs(project, out, rid, author_name, "Author:    ", 
false);
  -+              log_certs(project, out, rid, date_name,   "Date:      ", 
false);
  -+              log_certs(project, out, rid, branch_name, "Branch:    ", 
false);
  -+              log_certs(project, out, rid, tag_name,    "Tag:       ", 
false);
  ++              log_certs(certs, out, rid, author_name, "Author:    ", false);
  ++              log_certs(certs, out, rid, date_name,   "Date:      ", false);
  ++              log_certs(certs, out, rid, branch_name, "Branch:    ", false);
  ++              log_certs(certs, out, rid, tag_name,    "Tag:       ", false);
   +#else
                    out << "Ancestor: " << *anc << '\n';
    
  -               log_certs(project, out, rid, author_name, "Author: ", false);
  -               log_certs(project, out, rid, date_name,   "Date: ",   false);
  -               log_certs(project, out, rid, branch_name, "Branch: ", false);
  -               log_certs(project, out, rid, tag_name,    "Tag: ",    false);
  +               log_certs(certs, out, rid, author_name, "Author: ", false);
  +               log_certs(certs, out, rid, date_name,   "Date: ",   false);
  +               log_certs(certs, out, rid, branch_name, "Branch: ", false);
  +               log_certs(certs, out, rid, tag_name,    "Tag: ",    false);
   +#endif
    
                  if (!app.opts.no_files && !csum.cs.empty())
                    {
  -@@ -938,16 +1014,26 @@ CMD(log, "log", "", CMD_REF(informative)
  +@@ -1031,16 +1107,26 @@ CMD(log, "log", "", CMD_REF(informative)
                    }
    
  -               log_certs(project, out, rid, changelog_name, "ChangeLog: ", 
true);
  +               log_certs(certs, out, rid, changelog_name, "ChangeLog: ", 
true);
   +#if defined(RSE) /* cosmetics-diff-and-log */
  -+              log_certs(project, out, rid, comment_name,   "Comments:  ", 
true);
  ++              log_certs(certs, out, rid, comment_name,   "Comments:  ", 
true);
   +#else
  -               log_certs(project, out, rid, comment_name,   "Comments: ",  
true);
  +               log_certs(certs, out, rid, comment_name,   "Comments: ",  
true);
   +#endif
                }
    
  @@ -281,9 +281,9 @@
              if (next > 0)
   ===================================================================
   Index: cmd_netsync.cc
  ---- cmd_netsync.cc   6076270daf87ef2173729846525a80aebc0322b4
  -+++ cmd_netsync.cc   5590bc26877ac0375b6b57852407a5a080f90d50
  -@@ -253,7 +253,11 @@ CMD(pull, "pull", "", CMD_REF(network),
  +--- cmd_netsync.cc   daaee53881abbda9c400148f4870098cb03508de
  ++++ cmd_netsync.cc   cb4c46302f39a871546056d5c082484d9ac95449
  +@@ -266,7 +266,11 @@ CMD(pull, "pull", "", CMD_REF(network),
                                     args, info, false);
    
      if (app.opts.signing_key() == "")
  @@ -295,7 +295,7 @@
    
      run_netsync_protocol(app.opts, app.lua, project, keys,
                           client_voice, sink_role, info);
  -@@ -356,9 +360,16 @@ CMD(clone, "clone", "", CMD_REF(network)
  +@@ -370,9 +374,16 @@ CMD(clone, "clone", "", CMD_REF(network)
    
      // paths.cc's idea of the current workspace root is wrong at this point
      if (internal_db)
  @@ -310,9 +310,9 @@
                                      / ws_internal_db_file_name);
   +#endif
    
  -   // this is actually stupid, but app.opts.branchname must be set here
  +   // this is actually stupid, but app.opts.branch must be set here
      // otherwise it will not be written into _MTN/options, in case
  -@@ -383,7 +394,11 @@ CMD(clone, "clone", "", CMD_REF(network)
  +@@ -397,7 +408,11 @@ CMD(clone, "clone", "", CMD_REF(network)
                                   info, true, true, false);
    
      if (app.opts.signing_key() == "")
  @@ -326,8 +326,8 @@
      change_current_working_dir(start_dir);
   ===================================================================
   Index: cmd_ws_commit.cc
  ---- cmd_ws_commit.cc f19eb71e76506b5ac8a706f610e6a34b595266a1
  -+++ cmd_ws_commit.cc aa7dd461a1acbf45af445ec70f006ee137c0c123
  +--- cmd_ws_commit.cc 1ccfaf790bb0726d0c797c230a6c85d67070d7ae
  ++++ cmd_ws_commit.cc 890cf8d4c4d49e6b48eb1eb9662d2852c19ac3c6
   @@ -73,7 +73,14 @@ revision_summary(revision_t const & rev,
    
          for (set<file_path>::const_iterator i = cs.dirs_added.begin();
  @@ -343,7 +343,7 @@
    
          for (map<file_path, file_id>::const_iterator i = 
cs.files_added.begin();
                i != cs.files_added.end(); ++i)
  -@@ -1451,12 +1458,20 @@ CMD_NO_WORKSPACE(import, "import", "", C
  +@@ -1433,12 +1440,20 @@ CMD_NO_WORKSPACE(import, "import", "", C
      catch (...)
        {
          // clean up before rethrowing
  @@ -365,10 +365,10 @@
    
    CMD_NO_WORKSPACE(migrate_workspace, "migrate_workspace", "", CMD_REF(tree),
   ===================================================================
  -Index: diff_patch.cc
  ---- diff_patch.cc    c232c91aae83cbbf28cf519431034c32a7dac67b
  -+++ diff_patch.cc    403e3d815df83c75b5faa1f9e1daab540c4c3fe9
  -@@ -1519,6 +1519,9 @@ make_diff(string const & filename1,
  +Index: diff_output.cc
  +--- diff_output.cc   746af1eeaa7fee943bf1264dc88ddd6e218c7866
  ++++ diff_output.cc   a2e01d5f3517b7393711c3bfca7e7eb5a8b9772b
  +@@ -566,6 +566,9 @@ make_diff(string const & filename1,
        {
          case unified_diff:
          {
  @@ -378,7 +378,7 @@
            ost << "--- " << filename1 << '\t'
                << id1 << '\n';
            ost << "+++ " << filename2 << '\t'
  -@@ -1530,6 +1533,9 @@ make_diff(string const & filename1,
  +@@ -577,6 +580,9 @@ make_diff(string const & filename1,
          }
          case context_diff:
          {
  @@ -390,9 +390,9 @@
            ost << "--- " << filename2 << '\t'
   ===================================================================
   Index: file_io.cc
  ---- file_io.cc       e18d07679c2d210a40f18b67ed0b4b96f5a2c21a
  -+++ file_io.cc       291d078c4c156479590b4d553810b6a1dff161a3
  -@@ -397,16 +397,36 @@ write_data(file_path const & path, data 
  +--- file_io.cc       34e9c1581a7c336b0406c2601ac7cee5012723c7
  ++++ file_io.cc       cb70a15a07da0fbbc14b445a319f91020a1ec5d7
  +@@ -406,16 +406,36 @@ write_data(file_path const & path, data 
    write_data(file_path const & path, data const & dat)
    {
      // use the bookkeeping root as the temporary directory.
  @@ -431,9 +431,9 @@
    void
   ===================================================================
   Index: lua_hooks.cc
  ---- lua_hooks.cc     2cea55853bda5f175dc82c227ee21947236327e8
  -+++ lua_hooks.cc     70b9435d12f6f563b5d0517ce74abe4a4ecd0086
  -@@ -209,7 +209,11 @@ lua_hooks::load_rcfiles(options & opts)
  +--- lua_hooks.cc     14c47b49b38e31bc04dd47c1ea5d53231c772f8d
  ++++ lua_hooks.cc     7123d03e09450f2f9c6ffb242592f3751ea9528e
  +@@ -206,7 +206,11 @@ lua_hooks::load_rcfiles(options & opts)
            {
              load_rcfile(opts.conf_dir / "monotonerc", false);
            }
  @@ -446,10 +446,137 @@
    
      // Command-line rcfiles override even that.
   ===================================================================
  +Index: merge_roster.cc
  +--- merge_roster.cc  0350ccbd3b9b7d79f93c7d8852b890ee4020e14c
  ++++ merge_roster.cc  c31f695342bef084cbd8222c0f0e0cd897ef1c64
  +@@ -722,6 +722,20 @@ roster_merge(roster_t const & left_paren
  +           result.roster.detach_node(n->self);
  +           result.invalid_name_conflicts.push_back(conflict);
  +         }
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++      if (result_root->has_child(alt_bookkeeping_root_component))
  ++        {
  ++          invalid_name_conflict conflict;
  ++          node_t n = result_root->get_child(alt_bookkeeping_root_component);
  ++          conflict.nid = n->self;
  ++          conflict.parent_name.first = n->parent;
  ++          conflict.parent_name.second = n->name;
  ++          I(n->name == alt_bookkeeping_root_component);
  ++
  ++          result.roster.detach_node(n->self);
  ++          result.invalid_name_conflicts.push_back(conflict);
  ++        }
  ++#endif
  +     }
  + }
  + 
  +===================================================================
  +Index: migrate_work.cc
  +--- migrate_work.cc  2a8658dad954b975e65d3ceaf5df608007bfe841
  ++++ migrate_work.cc  dc14b6fd1d3f80df37ae42f9df1be1253f085724
  +@@ -56,9 +56,18 @@ get_workspace_format()
  + {
  +   unsigned int format;
  +   bookkeeping_path f_path = bookkeeping_root / "format";
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++  bookkeeping_path alt_f_path = alt_bookkeeping_root / "format";
  ++  if (!file_exists(f_path) && !file_exists(alt_f_path))
  ++#else
  +   if (!file_exists(f_path))
  ++#endif
  +     {
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++      if (directory_exists(bookkeeping_root) || 
directory_exists(alt_bookkeeping_root))
  ++#else
  +       if (directory_exists(bookkeeping_root))
  ++#endif
  +         format = 1;
  +       else if (directory_exists(file_path() / 
old_bookkeeping_root_component))
  +         format = 0;
  +@@ -70,7 +79,11 @@ get_workspace_format()
  +       data f_dat;
  +       try
  +         {
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++          read_data(file_exists(alt_f_path) ? alt_f_path : f_path, f_dat);
  ++#else
  +           read_data(f_path, f_dat);
  ++#endif
  +           format = lexical_cast<unsigned int>(remove_ws(f_dat()));
  +         }
  +       catch (exception & e)
  +@@ -82,7 +95,11 @@ get_workspace_format()
  +       if (format == 1)
  +         {
  +           W(F("_MTN/format should not exist in a format 1 workspace; 
corrected"));
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++          delete_file(file_exists(alt_f_path) ? alt_f_path : f_path);
  ++#else
  +           delete_file(f_path);
  ++#endif
  +         }
  +     }
  +   return format;
  +@@ -92,6 +109,9 @@ workspace::write_format()
  + workspace::write_format()
  + {
  +   bookkeeping_path f_path = bookkeeping_root / "format";
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++  bookkeeping_path alt_f_path = alt_bookkeeping_root / "format";
  ++#endif
  +   // one or other side of this conditional will always be dead code, but
  +   // both sides should be preserved, to document all historical formats.
  +   // N.B. this will _not_ do the right thing for format 0.  Which is fine.
  +@@ -99,11 +119,20 @@ workspace::write_format()
  +     {
  +       if (file_exists(f_path))
  +         delete_file(f_path);
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++      if (file_exists(alt_f_path))
  ++        delete_file(alt_f_path);
  ++#endif
  +     }
  +   else
  +     {
  +       data f_dat(lexical_cast<string>(current_workspace_format) + "\n",
  +                  origin::workspace);
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++      if (directory_exists(alt_bookkeeping_root))
  ++        write_data(alt_f_path, f_dat);
  ++      else
  ++#endif
  +       write_data(f_path, f_dat);
  +     }
  + }
  +@@ -186,7 +215,11 @@ migrate_1_to_2()
  +   // information, and _MTN/work does not exist; also, there may be more than
  +   // one parent revision, but we do not have to worry about that here.
  + 
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++  bookkeeping_path rev_path = (directory_exists(alt_bookkeeping_root) ? 
alt_bookkeeping_root : bookkeeping_root) / "revision";
  ++#else
  +   bookkeeping_path rev_path = bookkeeping_root / "revision";
  ++#endif
  +   data base_rev_data; MM(base_rev_data);
  +   try
  +     {
  +@@ -203,7 +236,11 @@ migrate_1_to_2()
  + 
  +   cset workcs;
  +   MM(workcs);
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++  bookkeeping_path workcs_path = (directory_exists(alt_bookkeeping_root) ? 
alt_bookkeeping_root : bookkeeping_root) / "work";
  ++#else
  +   bookkeeping_path workcs_path = bookkeeping_root / "work";
  ++#endif
  +   bool delete_workcs = false;
  +   if (file_exists(workcs_path))
  +     {
  +===================================================================
   Index: options_list.hh
  ---- options_list.hh  f8e7d28b9c65b05918602919dfe526b7ef549fbe
  -+++ options_list.hh  4da9c69c3eaf3489dafc09fd08e33fde1743c79d
  -@@ -253,6 +253,24 @@ OPTION(diff_options, with_header, false,
  +--- options_list.hh  fe3b7714d2c58e05d75fefc8d28bbe5935d22051
  ++++ options_list.hh  4d3c1f9e9503a2b454a63ae4144fe42b17286ee5
  +@@ -266,6 +266,24 @@ OPTION(diff_options, with_header, false,
      without_header = false;
    }
    #endif
  @@ -476,9 +603,9 @@
    #ifdef option_bodies
   ===================================================================
   Index: paths.cc
  ---- paths.cc 48204b427b950c618d3fc05be66018256d8c44f4
  -+++ paths.cc e121ec8fd8baae41689529c40c12eab09d1bb216
  -@@ -228,7 +228,11 @@ in_bookkeeping_dir(string const & path)
  +--- paths.cc 30a2058671b87385d855d97cd20705f91870b777
  ++++ paths.cc 9025fc41ef775a708ccdd7197699e0dcac9bef33
  +@@ -231,7 +231,11 @@ in_bookkeeping_dir(string const & path)
    static inline bool
    in_bookkeeping_dir(string const & path)
    {
  @@ -490,7 +617,7 @@
        return false;
      if (path.size() == 1 || (path[1] != 'M' && path[1] != 'm'))
        return false;
  -@@ -961,6 +965,9 @@ find_and_go_to_workspace(string const & 
  +@@ -991,6 +995,9 @@ find_and_go_to_workspace(string const & 
      // first look for the current name of the bookkeeping directory.
      // if we don't find it, look for it under the old name, so that
      // migration has a chance to work.
  @@ -500,23 +627,11 @@
      if (!find_bookdir(root, bookkeeping_root_component, current, removed))
        if (!find_bookdir(root, old_bookkeeping_root_component, current, 
removed))
          return false;
  -@@ -1516,7 +1523,11 @@ static void check_bk_normalizes_to(char 
  - 
  - static void check_bk_normalizes_to(char const * before, char const * after)
  - {
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+  bookkeeping_path bp((directory_exists(alt_bookkeeping_root) ? 
alt_bookkeeping_root : bookkeeping_root) / before);
  -+#else
  -   bookkeeping_path bp(bookkeeping_root / before);
  -+#endif
  -   L(FL("normalizing %s to %s (got %s)") % before % after % bp);
  -   UNIT_TEST_CHECK(bp.as_external() == after);
  -   UNIT_TEST_CHECK(bookkeeping_path(bp.as_internal()).as_internal() == 
bp.as_internal());
   ===================================================================
   Index: paths.hh
  ---- paths.hh edb57b0c1b475e6c1fa9605b04cc78bf09b92f29
  -+++ paths.hh 2dfb9d3bee75d5c530b9ecc2769e365f06f12c6e
  -@@ -344,6 +344,15 @@ private:
  +--- paths.hh cbd3ac7810f4fd8c528bcb5f87549d9d0e358d0a
  ++++ paths.hh 80c2adbe3fd95636778fc4446c1221ae7e7082cc
  +@@ -349,6 +349,15 @@ private:
    // for migration
    #define old_bookkeeping_root_component (path_component("MT"))
    
  @@ -533,48 +648,10 @@
    class system_path : public any_path
    {
   ===================================================================
  -Index: roster_merge.cc
  ---- roster_merge.cc  78e23a1381bbc2f2ba604f09f53b2dd6bfd18344
  -+++ roster_merge.cc  3aa179fa6b4571cc2c23ba66be3024decf029fc7
  -@@ -3089,6 +3089,20 @@ roster_merge(roster_t const & left_paren
  -           result.roster.detach_node(n->self);
  -           result.invalid_name_conflicts.push_back(conflict);
  -         }
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+      if (result_root->has_child(alt_bookkeeping_root_component))
  -+        {
  -+          invalid_name_conflict conflict;
  -+          node_t n = result_root->get_child(alt_bookkeeping_root_component);
  -+          conflict.nid = n->self;
  -+          conflict.parent_name.first = n->parent;
  -+          conflict.parent_name.second = n->name;
  -+          I(n->name == alt_bookkeeping_root_component);
  -+
  -+          result.roster.detach_node(n->self);
  -+          result.invalid_name_conflicts.push_back(conflict);
  -+        }
  -+#endif
  -     }
  - }
  - 
  -@@ -4021,7 +4035,12 @@ struct simple_invalid_name_conflict : pu
  -       I(!result.is_clean());
  -       invalid_name_conflict const & c = idx(result.invalid_name_conflicts, 
0);
  -       I(c.nid == bad_dir_nid);
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+      I(   c.parent_name == make_pair(new_root_nid, 
bookkeeping_root_component)
  -+        || c.parent_name == make_pair(new_root_nid, 
alt_bookkeeping_root_component));
  -+#else
  -       I(c.parent_name == make_pair(new_root_nid, 
bookkeeping_root_component));
  -+#endif
  -       // this tests it was detached, implicitly
  -       result.roster.attach_node(bad_dir_nid, 
file_path_internal("dir_formerly_known_as__MTN"));
  -       result.invalid_name_conflicts.pop_back();
  -===================================================================
   Index: std_hooks.lua
  ---- std_hooks.lua    6fa95c0269b7e1b615bf5d2dad24e32948e48350
  -+++ std_hooks.lua    8e2abab018791dcda7f0abb10ca7750f446cb668
  -@@ -292,6 +292,15 @@ function edit_comment(basetext, user_log
  +--- std_hooks.lua    d8c06cff3368b388f6b6268227e1432a94a3ed6f
  ++++ std_hooks.lua    5cc93e6944e6d8704d579efc32d9183a60a8e9e5
  +@@ -304,6 +304,15 @@ function edit_comment(basetext, user_log
       if user_log_message == "" or string.sub(user_log_message, -1) ~= "\n" 
then
          tmp:write("\n")
       end
  @@ -590,7 +667,7 @@
       tmp:write(basetext)
       io.close(tmp)
    
  -@@ -1328,3 +1337,201 @@ end
  +@@ -1373,3 +1382,201 @@ end
          return push_hook_functions(notifier)
       end
    end
  @@ -793,10 +870,43 @@
   +--  #endif
   +
   ===================================================================
  +Index: unit-tests/merge_roster.cc
  +--- unit-tests/merge_roster.cc       1853c103dd728750136e85ab5e97f72104fc0d7f
  ++++ unit-tests/merge_roster.cc       c4e4b238de545a1b99328548aed099306b085deb
  +@@ -945,7 +945,12 @@ struct simple_invalid_name_conflict : pu
  +       I(!result.is_clean());
  +       invalid_name_conflict const & c = idx(result.invalid_name_conflicts, 
0);
  +       I(c.nid == bad_dir_nid);
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++      I(   c.parent_name == make_pair(new_root_nid, 
bookkeeping_root_component)
  ++        || c.parent_name == make_pair(new_root_nid, 
alt_bookkeeping_root_component));
  ++#else
  +       I(c.parent_name == make_pair(new_root_nid, 
bookkeeping_root_component));
  ++#endif
  +       // this tests it was detached, implicitly
  +       result.roster.attach_node(bad_dir_nid, 
file_path_internal("dir_formerly_known_as__MTN"));
  +       result.invalid_name_conflicts.pop_back();
  +===================================================================
  +Index: unit-tests/paths.cc
  +--- unit-tests/paths.cc      f443111b016125fb2b00af638586853a68369ad9
  ++++ unit-tests/paths.cc      c14f0b1d89ba65c86af3b3f1591aa7eb694ce126
  +@@ -531,7 +531,11 @@ static void check_bk_normalizes_to(char 
  + 
  + static void check_bk_normalizes_to(char const * before, char const * after)
  + {
  ++#if defined(RSE) /* alt-book-keeping-root */
  ++  bookkeeping_path bp((directory_exists(alt_bookkeeping_root) ? 
alt_bookkeeping_root : bookkeeping_root) / before);
  ++#else
  +   bookkeeping_path bp(bookkeeping_root / before);
  ++#endif
  +   L(FL("normalizing %s to %s (got %s)") % before % after % bp);
  +   UNIT_TEST_CHECK(bp.as_external() == after);
  +   UNIT_TEST_CHECK(bookkeeping_path(bp.as_internal(),
  +===================================================================
   Index: work.cc
  ---- work.cc  b005a944d5e5ebcbfed43ac742871eba7d5e7ad0
  -+++ work.cc  5881fb653feab664f832f9e5c77aa178b84a98e5
  -@@ -57,35 +57,55 @@ get_revision_path(bookkeeping_path & m_p
  +--- work.cc  766cbbfd5b78c442ed6fc650846daa55f9d42768
  ++++ work.cc  9b78be9d1d0494559e41ce859453089515f3d07f
  +@@ -58,35 +58,55 @@ get_revision_path(bookkeeping_path & m_p
    static void
    get_revision_path(bookkeeping_path & m_path)
    {
  @@ -852,7 +962,7 @@
      L(FL("user log path is %s") % ul_path);
    }
    
  -@@ -96,7 +116,11 @@ directory_is_workspace(system_path const
  +@@ -104,7 +124,11 @@ directory_is_workspace(system_path const
    {
      // as far as the users of this function are concerned, a version 0
      // workspace (MT directory instead of _MTN) does not count.
  @@ -864,16 +974,16 @@
    }
    
    bool workspace::found;
  -@@ -129,13 +153,24 @@ workspace::create_workspace(options cons
  +@@ -137,13 +161,24 @@ workspace::create_workspace(options cons
      go_to_workspace(new_dir);
      mark_std_paths_used();
    
   +#if defined(RSE) /* alt-book-keeping-root */
  -+  N(!(directory_exists(bookkeeping_root) || 
directory_exists(alt_bookkeeping_root)),
  ++  E(!(directory_exists(bookkeeping_root) || 
directory_exists(alt_bookkeeping_root)), origin::user,
   +    F("monotone bookkeeping directory '%s' or '%s' already exists in '%s'")
   +    % bookkeeping_root % alt_bookkeeping_root % new_dir);
   +#else
  -   N(!directory_exists(bookkeeping_root),
  +   E(!directory_exists(bookkeeping_root), origin::user,
        F("monotone bookkeeping directory '%s' already exists in '%s'")
        % bookkeeping_root % new_dir);
   +#endif
  @@ -889,9 +999,9 @@
      mkdir_p(bookkeeping_root);
    
      workspace::found = true;
  -@@ -485,9 +520,16 @@ workspace::get_database_option(system_pa
  -   rsa_keypair_id key_option;
  -   system_path keydir_option;
  +@@ -522,9 +557,16 @@ workspace::get_database_option(system_pa
  +   rsa_keypair_id workspace_key;
  +   system_path workspace_keydir;
    
   +#if defined(RSE) /* alt-book-keeping-root */
   +  system_path o_path = ((  directory_exists(workspace / 
alt_bookkeeping_root_component) 
  @@ -904,11 +1014,11 @@
                            / options_file_name);
   +#endif
      read_options_file(o_path,
  -                     database_option, branch_option, key_option, 
keydir_option);
  - }
  -@@ -565,7 +607,11 @@ workspace::get_local_dump_path(bookkeepi
  +                     workspace_database, workspace_branch,
  +                     workspace_key, workspace_keydir);
  +@@ -606,7 +648,11 @@ workspace::get_local_dump_path(bookkeepi
    {
  -   N(workspace::found, F("workspace required but not found"));
  +   E(workspace::found, origin::user, F("workspace required but not found"));
    
   +#if defined(RSE) /* alt-book-keeping-root */
   +  d_path = (directory_exists(alt_bookkeeping_root) ? alt_bookkeeping_root : 
bookkeeping_root) / local_dump_file_name;
  @@ -918,7 +1028,7 @@
      L(FL("local dump path is %s") % d_path);
    }
    
  -@@ -983,7 +1029,11 @@ path_for_detached_nids()
  +@@ -1015,7 +1061,11 @@ path_for_detached_nids()
    static inline bookkeeping_path
    path_for_detached_nids()
    {
  @@ -930,120 +1040,19 @@
    }
    
    static inline bookkeeping_path
  -@@ -1722,9 +1772,15 @@ workspace::perform_pivot_root(database &
  -   N(is_dir_t(new_roster.get_node(new_root)),
  +@@ -1760,9 +1810,15 @@ workspace::perform_pivot_root(database &
  +   E(is_dir_t(new_roster.get_node(new_root)), origin::user,
        F("proposed new root directory '%s' is not a directory") % new_root);
      {
   +#if defined(RSE) /* alt-book-keeping-root */
  -+    N(!(new_roster.has_node(new_root / bookkeeping_root_component) || 
new_roster.has_node(new_root / alt_bookkeeping_root_component)),
  ++    E(!(new_roster.has_node(new_root / bookkeeping_root_component) || 
new_roster.has_node(new_root / alt_bookkeeping_root_component)), origin::user,
   +      F("proposed new root directory '%s' contains illegal path %s or %s")
   +      % new_root % bookkeeping_root % alt_bookkeeping_root);
   +#else
  -     N(!new_roster.has_node(new_root / bookkeeping_root_component),
  +     E(!new_roster.has_node(new_root / bookkeeping_root_component), 
origin::user,
          F("proposed new root directory '%s' contains illegal path %s")
          % new_root % bookkeeping_root);
   +#endif
      }
    
      {
  -===================================================================
  -Index: work_migration.cc
  ---- work_migration.cc        649da47d7b879f1f2814100fdb831b1de7ecaeca
  -+++ work_migration.cc        21ada50dddc95ba4c9068f89e8db88409c3e2c68
  -@@ -57,9 +57,18 @@ get_ws_format()
  - {
  -   unsigned int format;
  -   bookkeeping_path f_path = bookkeeping_root / "format";
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+  bookkeeping_path alt_f_path = alt_bookkeeping_root / "format";
  -+  if (!file_exists(f_path) && !file_exists(alt_f_path))
  -+#else
  -   if (!file_exists(f_path))
  -+#endif
  -     {
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+      if (directory_exists(bookkeeping_root) || 
directory_exists(alt_bookkeeping_root))
  -+#else
  -       if (directory_exists(bookkeeping_root))
  -+#endif
  -         format = 1;
  -       else if (directory_exists(file_path() / 
old_bookkeeping_root_component))
  -         format = 0;
  -@@ -71,7 +80,11 @@ get_ws_format()
  -       data f_dat;
  -       try
  -         {
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+          read_data(file_exists(alt_f_path) ? alt_f_path : f_path, f_dat);
  -+#else
  -           read_data(f_path, f_dat);
  -+#endif
  -           format = lexical_cast<unsigned int>(remove_ws(f_dat()));
  -         }
  -       catch (exception & e)
  -@@ -82,7 +95,11 @@ get_ws_format()
  -       if (format == 1)
  -         {
  -           W(F("_MTN/format should not exist in a format 1 workspace; 
corrected"));
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+          delete_file(file_exists(alt_f_path) ? alt_f_path : f_path);
  -+#else
  -           delete_file(f_path);
  -+#endif
  -         }
  -     }
  -   return format;
  -@@ -92,6 +109,9 @@ workspace::write_ws_format()
  - workspace::write_ws_format()
  - {
  -   bookkeeping_path f_path = bookkeeping_root / "format";
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+  bookkeeping_path alt_f_path = alt_bookkeeping_root / "format";
  -+#endif
  -   // one or other side of this conditional will always be dead code, but
  -   // both sides should be preserved, to document all historical formats.
  -   // N.B. this will _not_ do the right thing for format 0.  Which is fine.
  -@@ -99,10 +119,19 @@ workspace::write_ws_format()
  -     {
  -       if (file_exists(f_path))
  -         delete_file(f_path);
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+      if (file_exists(alt_f_path))
  -+        delete_file(alt_f_path);
  -+#endif
  -     }
  -   else
  -     {
  -       data f_dat(lexical_cast<string>(current_workspace_format) + "\n");
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+      if (directory_exists(alt_bookkeeping_root))
  -+        write_data(alt_f_path, f_dat);
  -+      else
  -+#endif
  -       write_data(f_path, f_dat);
  -     }
  - }
  -@@ -185,7 +214,11 @@ migrate_1_to_2()
  -   // information, and _MTN/work does not exist; also, there may be more than
  -   // one parent revision, but we do not have to worry about that here.
  - 
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+  bookkeeping_path rev_path = (directory_exists(alt_bookkeeping_root) ? 
alt_bookkeeping_root : bookkeeping_root) / "revision";
  -+#else
  -   bookkeeping_path rev_path = bookkeeping_root / "revision";
  -+#endif
  -   data base_rev_data; MM(base_rev_data);
  -   try 
  -     {
  -@@ -201,7 +234,11 @@ migrate_1_to_2()
  - 
  -   cset workcs; 
  -   MM(workcs);
  -+#if defined(RSE) /* alt-book-keeping-root */
  -+  bookkeeping_path workcs_path = (directory_exists(alt_bookkeeping_root) ? 
alt_bookkeeping_root : bookkeeping_root) / "work";
  -+#else
  -   bookkeeping_path workcs_path = bookkeeping_root / "work";
  -+#endif
  -   bool delete_workcs = false;
  -   if (file_exists(workcs_path))
  -     {
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/monotone/monotone.spec
  ============================================================================
  $ cvs diff -u -r1.41 -r1.42 monotone.spec
  --- openpkg-src/monotone/monotone.spec        5 Jan 2009 19:32:23 -0000       
1.41
  +++ openpkg-src/monotone/monotone.spec        23 Mar 2009 09:36:23 -0000      
1.42
  @@ -31,8 +31,8 @@
   Class:        EVAL
   Group:        SCM
   License:      GPL
  -Version:      0.42
  -Release:      20090105
  +Version:      0.43
  +Release:      20090323
   
   #   package options
   %option       with_rse  yes
  @@ -44,16 +44,16 @@
   Source4:      monotone-colorize.pl
   Source5:      monotone-colorize.bashrc
   Source6:      monotone.bashrc
  -Patch0:       monotone.patch
  +Source7:      monotone.man
   Patch1:       monotone.patch.rse
   
   #   build information
   Prefix:       %{l_prefix}
   BuildRoot:    %{l_buildroot}
  -BuildPreReq:  OpenPKG, openpkg >= 20040130, gcc, gcc::with_cxx = yes, texinfo
  +BuildPreReq:  OpenPKG, openpkg >= 20040130, gcc, gcc::with_cxx = yes, 
texinfo, pkgconfig
   PreReq:       OpenPKG, openpkg >= 20040130, apg, diffutils, perl, perl-mail, 
perl-term, less
  -BuildPreReq:  boost, zlib, pcre
  -PreReq:       boost, zlib, pcre
  +BuildPreReq:  boost, botan, sqlite, zlib, pcre, lua, libidn
  +PreReq:       boost, botan, sqlite, zlib, pcre, lua, libidn
   AutoReq:      no
   AutoReqProv:  no
   
  @@ -77,7 +77,6 @@
   
   %prep
       %setup -q
  -    %patch -p0 -P 0
   %if "%{with_rse}" == "yes"
       %patch -p0 -P 1
   %endif
  @@ -98,8 +97,6 @@
           --prefix=%{l_prefix} \
           --infodir=%{l_prefix}/info \
           --mandir=%{l_prefix}/man \
  -        --enable-static-boost=%{l_prefix} \
  -        --with-system-pcre \
           --disable-nls
   
       #   build program
  @@ -146,7 +143,7 @@
       %{l_shtool} mkdir -f -p -m 755 \
           $RPM_BUILD_ROOT%{l_prefix}/man/man1
       %{l_shtool} install -c -m 644 \
  -        debian/mtn.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/
  +        %{SOURCE monotone.man} $RPM_BUILD_ROOT%{l_prefix}/man/man1/mtn.1
   
       #   install setup script
       %{l_shtool} mkdir -f -p -m 755 \
  @@ .
______________________________________________________________________
OpenPKG                                             http://openpkg.org
CVS Repository Commit List                     openpkg-cvs@openpkg.org

Reply via email to