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