OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /v/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src Date: 09-Sep-2007 20:18:54
Branch: HEAD Handle: 2007090919185400
Added files:
openpkg-src/monotone monotone.patch.rse
Modified files:
openpkg-src/monotone monotone.spec
Log:
provide the first cut for my RSE patchset for Monotone VCS. See the
top of the monotone.patch.rse for details
Summary:
Revision Changes Path
1.1 +692 -0 openpkg-src/monotone/monotone.patch.rse
1.17 +12 -1 openpkg-src/monotone/monotone.spec
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-src/monotone/monotone.patch.rse
============================================================================
$ cvs diff -u -r0 -r1.1 monotone.patch.rse
--- /dev/null 2007-09-09 20:17:22 +0200
+++ monotone.patch.rse 2007-09-09 20:18:54 +0200
@@ -0,0 +1,692 @@
+
+ This is the RSE patchset for the Monotone VCS.
+
+ The patchset is entirely enclosed in...
+
+ #if defined(RSE) /* <tag> */
+ [...]
+ #endif
+
+ ...and this way can be clearly distinguished. The <tag> corresponds
+ the following major changes it includes:
+
+ o environment-variables:
+ This adds the two environment variables MTN_DBFILE and MTN_KEYDIR as
+ defaults for the (bootstrapping) mtn(1) command line options --db
+ and --keydir. This allows you to provide values for them without
+ having to pass the options all the time.
+
+ o alt-book-keeping-root:
+ This allows mtn(1) to accept an alternative book-keeping directory.
+ The default still is "_MTN", but alternatively one can rename this
+ to ".mtn". If one sets the environment variable "MTN_BKROOT" one can
+ change ".mtn" to an arbitrary sub-directory name and additionally
+ even force its use on workspace creation operations.
+
+ o cosmetics-netsync:
+ This is just a small cosmetics change. It reduces the annoying
+ "doing anonymous pull; use -kKEYNAME if you need authentication" to
+ just "doing anonymous pull" as mtn(1) doesn't have to teach people.
+ That's for what the documentation is for.
+
+ o cosmetics-diff-and-log:
+ This cosmetically "improves" the output of "mtn diff" and "mtn
+ log". For "mtn diff" The output of "mtn diff" now uses a separator
+ line consisting of 67 (instead of 60) "=" characters to align
+ with cvs(1)'s well known output. Additionally, two new command
+ line options for "mtn diff" allow one to disable some outputs:
+ "--no-show-header" disables the output of the redundant "#..."
+ header lines at the top of the output and "--no-show-separator"
+ disables the output of the separator line at all. The output of "mtn
+ log" is improved by aligning the single-line certificate values and
+ by indenting the file change information by just 4 instead of 8
+ characters.
+
+ o diff-index:
+ This adds "Index:" lines to the output of "mtn diff" in order to
+ align with the "svn diff" and "cvs diff" outputs. This also helps
+ patch(1) to clearly identify the file to patch.
+
+ Ralf S. Engelschall
+ [EMAIL PROTECTED]
+ www.engelschall.com
+
+============================================================
+--- app_state.cc 74425b52934112d6f23c222e36516a69aee2bb29
++++ app_state.cc cc9111317d701076b496c80734ae89ab7c6e3741
+@@ -141,13 +141,24 @@ app_state::create_workspace(system_path
+ 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)),
++ F("monotone bookkeeping directory '%s' or '%s' already exists in '%s'")
++ % bookkeeping_root % alt_bookkeeping_root % new_dir);
++#else
+ N(!directory_exists(bookkeeping_root),
+ F("monotone bookkeeping directory '%s' already exists in '%s'")
+ % bookkeeping_root % new_dir);
++#endif
+
+ L(FL("creating bookkeeping directory '%s' for workspace in '%s'")
+ % bookkeeping_root % new_dir);
+
++#if defined(RSE) /* alt-book-keeping-root */
++ if (getenv("MTN_BKROOT") != NULL)
++ mkdir_p(bookkeeping_path(getenv("MTN_BKROOT")));
++ else
++#endif
+ mkdir_p(bookkeeping_root);
+
+ make_branch_sticky();
+============================================================
+--- cmd_diff_log.cc b95267396272bf66f1c4c17b19659cc4e734213a
++++ cmd_diff_log.cc 070f04c88e5a724545d48c3669d78fa2394987f3
+@@ -96,6 +96,27 @@ print_indented_set(ostream & os,
+ set<file_path> const & s,
+ size_t max_cols)
+ {
++#if defined(RSE) /* cosmetics-diff-and-log */
++ size_t cols = 4;
++ os << " ";
++ for (set<file_path>::const_iterator i = s.begin();
++ i != s.end(); i++)
++ {
++ const string str = lexical_cast<string>(*i);
++ if (cols > 4 && cols + str.size() + 1 >= max_cols)
++ {
++ cols = 4;
++ os << "\n ";
++ }
++ else if (cols > 4) {
++ os << ' ';
++ cols += 1;
++ }
++ os << str;
++ cols += str.size();
++ }
++ os << '\n';
++#else
+ size_t cols = 8;
+ os << " ";
+ for (set<file_path>::const_iterator i = s.begin();
+@@ -111,6 +132,7 @@ print_indented_set(ostream & os,
+ cols += str.size() + 1;
+ }
+ os << '\n';
++#endif
+ }
+
+ void
+@@ -129,7 +151,11 @@ changes_summary::print(ostream & os, siz
+ for (map<file_path, file_path>::const_iterator
+ i = cs.nodes_renamed.begin();
+ i != cs.nodes_renamed.end(); i++)
++#if defined(RSE) /* cosmetics-diff-and-log */
++ os << " " << i->first
++#else
+ os << " " << i->first
++#endif
+ << " to " << i->second << '\n';
+ }
+
+@@ -230,8 +256,13 @@ dump_diffs(cset const & cs,
+ set<file_path> const & paths,
+ bool limit_paths = false)
+ {
++#if defined(RSE) /* cosmetics-diff-and-log */
++ // 67 is somewhat arbitrary (CVS uses this), but less than 80
++ string patch_sep = string(67, '=');
++#else
+ // 60 is somewhat arbitrary, but less than 80
+ string patch_sep = string(60, '=');
++#endif
+
+ for (map<file_path, file_id>::const_iterator
+ i = cs.files_added.begin();
+@@ -240,6 +271,9 @@ dump_diffs(cset const & cs,
+ if (limit_paths && paths.find(i->first) == paths.end())
+ continue;
+
++#if defined(RSE) /* cosmetics-diff-and-log */
++ if (!app.opts.no_show_separator)
++#endif
+ output << patch_sep << '\n';
+ data unpacked;
+ vector<string> lines;
+@@ -286,6 +320,9 @@ dump_diffs(cset const & cs,
+ file_data f_old;
+ data data_old, data_new;
+
++#if defined(RSE) /* cosmetics-diff-and-log */
++ if (!app.opts.no_show_separator)
++#endif
+ output << patch_sep << '\n';
+
+ app.db.get_file_version(delta_entry_src(i), f_old);
+@@ -493,6 +530,9 @@ CMD(diff, "diff", "", CMD_REF(informativ
+ data summary;
+ write_cset(included, summary);
+
++#if defined(RSE) /* cosmetics-diff-and-log */
++ if (!app.opts.no_show_header) {
++#endif
+ vector<string> lines;
+ split_into_lines(summary(), lines);
+ cout << "#\n";
+@@ -508,6 +548,9 @@ CMD(diff, "diff", "", CMD_REF(informativ
+ cout << "# " << _("no changes") << '\n';
+ }
+ cout << "#\n";
++#if defined(RSE) /* cosmetics-diff-and-log */
++ }
++#endif
+
+ if (app.opts.diff_format == external_diff)
+ {
+@@ -871,7 +914,11 @@ CMD(log, "log", "", CMD_REF(informative)
+ else
+ {
+ out << string(65, '-') << '\n';
++#if defined(RSE) /* cosmetics-diff-and-log */
++ out << "Revision: " << rid << '\n';
++#else
+ out << "Revision: " << rid << '\n';
++#endif
+
+ changes_summary csum;
+
+@@ -886,12 +933,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(out, app, rid, author_name, "Author: ", false);
++ log_certs(out, app, rid, date_name, "Date: ", false);
++ log_certs(out, app, rid, branch_name, "Branch: ", false);
++ log_certs(out, app, rid, tag_name, "Tag: ", false);
++#else
+ out << "Ancestor: " << *anc << '\n';
+
+ log_certs(out, app, rid, author_name, "Author: ", false);
+ log_certs(out, app, rid, date_name, "Date: ", false);
+ log_certs(out, app, rid, branch_name, "Branch: ", false);
+ log_certs(out, app, rid, tag_name, "Tag: ", false);
++#endif
+
+ if (!app.opts.no_files && !csum.cs.empty())
+ {
+@@ -901,7 +957,11 @@ CMD(log, "log", "", CMD_REF(informative)
+ }
+
+ log_certs(out, app, rid, changelog_name, "ChangeLog: ", true);
++#if defined(RSE) /* cosmetics-diff-and-log */
++ log_certs(out, app, rid, comment_name, "Comments: ", true);
++#else
+ log_certs(out, app, rid, comment_name, "Comments: ", true);
++#endif
+ }
+
+ if (app.opts.diffs)
+============================================================
+--- cmd_netsync.cc ba4c038a24ffe3ba8951da91b859c426c5876571
++++ cmd_netsync.cc 53c66eef7a2cf3c72f235095f960e0add60c8911
+@@ -180,7 +180,11 @@ CMD(pull, "pull", "", CMD_REF(network),
+ find_key_if_needed(addr, include_pattern, exclude_pattern, app, false);
+
+ if (app.opts.signing_key() == "")
++#if defined(RSE) /* cosmetics-netsync */
++ P(F("doing anonymous pull"));
++#else
+ P(F("doing anonymous pull; use -kKEYNAME if you need authentication"));
++#endif
+
+ run_netsync_protocol(client_voice, sink_role, addr,
+ include_pattern, exclude_pattern, app);
+@@ -272,7 +276,11 @@ CMD(clone, "clone", "", CMD_REF(network)
+ app.create_workspace(workspace_dir);
+
+ if (internal_db)
++#if defined(RSE) /* alt-book-keeping-root */
++ app.set_database(system_path((directory_exists(alt_bookkeeping_root) ?
alt_bookkeeping_root : bookkeeping_root) / ws_internal_db_file_name));
++#else
+ app.set_database(system_path(bookkeeping_root /
ws_internal_db_file_name));
++#endif
+ else
+ app.set_database(app.opts.dbname);
+
+@@ -300,7 +308,11 @@ CMD(clone, "clone", "", CMD_REF(network)
+ app, false);
+
+ if (app.opts.signing_key() == "")
++#if defined(RSE) /* cosmetics-netsync */
++ P(F("doing anonymous pull"));
++#else
+ P(F("doing anonymous pull; use -kKEYNAME if you need authentication"));
++#endif
+
+ if (!app.db.var_exists(default_include_pattern_key)
+ || app.opts.set_default)
+============================================================
+--- cmd_ws_commit.cc b29545c7fd88a94d14d3b6955505e7e179c70d73
++++ cmd_ws_commit.cc 4c9aa3fac75398d68f9f23838ee5559614694df5
+@@ -1337,7 +1337,11 @@ CMD_NO_WORKSPACE(import, "import", "", C
+ catch (...)
+ {
+ // clean up before rethrowing
++#if defined(RSE) /* alt-book-keeping-root */
++ delete_dir_recursive(directory_exists(alt_bookkeeping_root) ?
bookkeeping_root : bookkeeping_root);
++#else
+ delete_dir_recursive(bookkeeping_root);
++#endif
+ throw;
+ }
+
+============================================================
+--- diff_patch.cc 943b5d68699b7ae6e06c5f335d8445cb961dabff
++++ diff_patch.cc 318048c061524bb07d579c863722aa8bdd95b159
+@@ -1319,6 +1319,9 @@ make_diff(string const & filename1,
+ {
+ case unified_diff:
+ {
++#if defined(RSE) /* diff-index */
++ ost << "Index: " << filename2 << '\n';
++#endif
+ ost << "--- " << filename1 << '\t' << id1 << '\n';
+ ost << "+++ " << filename2 << '\t' << id2 << '\n';
+
+@@ -1328,6 +1331,9 @@ make_diff(string const & filename1,
+ }
+ case context_diff:
+ {
++#if defined(RSE) /* diff-index */
++ ost << "Index: " << filename2 << '\n';
++#endif
+ ost << "*** " << filename1 << '\t' << id1 << '\n';
+ ost << "--- " << filename2 << '\t' << id2 << '\n';
+
+============================================================
+--- file_io.cc 358fb964dc42e7f936a136342b93bb3a4744d1b3
++++ file_io.cc 6b452acaa58ca24fa5611ea3e6e82e83a7cf7552
+@@ -398,16 +398,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.
++#if defined(RSE) /* alt-book-keeping-root */
++ if (directory_exists(alt_bookkeeping_root)) {
++ assert_path_is_directory(alt_bookkeeping_root);
++ write_data_impl(path, dat, alt_bookkeeping_root, false);
++ }
++ else {
++#endif
+ assert_path_is_directory(bookkeeping_root);
+ write_data_impl(path, dat, bookkeeping_root, false);
++#if defined(RSE) /* alt-book-keeping-root */
++ }
++#endif
+ }
+
+ void
+ write_data(bookkeeping_path const & path, data const & dat)
+ {
+ // use the bookkeeping root as the temporary directory.
++#if defined(RSE) /* alt-book-keeping-root */
++ if (directory_exists(alt_bookkeeping_root)) {
++ assert_path_is_directory(alt_bookkeeping_root);
++ write_data_impl(path, dat, alt_bookkeeping_root, false);
++ }
++ else {
++#endif
+ assert_path_is_directory(bookkeeping_root);
+ write_data_impl(path, dat, bookkeeping_root, false);
++#if defined(RSE) /* alt-book-keeping-root */
++ }
++#endif
+ }
+
+ void
+============================================================
+--- lua_hooks.cc 1d95c581d5880c74fd9c941fd69e2564d624d2e2
++++ lua_hooks.cc cf4f72def48ec7c7a4847342365971ed356376ac
+@@ -144,7 +144,11 @@ lua_hooks::workspace_rcfilename(bookkeep
+ void
+ lua_hooks::workspace_rcfilename(bookkeeping_path & file)
+ {
++#if defined(RSE) /* alt-book-keeping-root */
++ file = (directory_exists(alt_bookkeeping_root) ? alt_bookkeeping_root :
bookkeeping_root) / "monotonerc";
++#else
+ file = bookkeeping_root / "monotonerc";
++#endif
+ }
+
+
+============================================================
+--- monotone.cc 424f3537c4ae32633fe643e0e82bbb3b252722c7
++++ monotone.cc c4cd82fb52df543069cdfe4ff574ae74ac8f3efa
+@@ -220,12 +220,28 @@ cpp_main(int argc, char ** argv)
+ if (!app.opts.dbname.empty())
+ app.db.set_filename(app.opts.dbname);
+ }
++#if defined(RSE) /* environment-variables */
++ else
++ {
++ char *cp;
++ if ((cp = getenv("MTN_DBFILE")) != NULL)
++ app.db.set_filename(system_path(cp));
++ }
++#endif
+
+ if (app.opts.key_dir_given || app.opts.conf_dir_given)
+ {
+ if (!app.opts.key_dir.empty())
+ app.keys.set_key_dir(app.opts.key_dir);
+ }
++#if defined(RSE) /* environment-variables */
++ else
++ {
++ char *cp;
++ if ((cp = getenv("MTN_KEYDIR")) != NULL)
++ app.keys.set_key_dir(system_path(cp));
++ }
++#endif
+
+ // stop here if they asked for help
+ if (app.opts.help)
+============================================================
+--- options_list.hh 54ee12e3dfb608ca3a4b9a64cc51a845fc4a0501
++++ options_list.hh b451bb8d5c5614e3ceb9b597267f7faab287e1fc
+@@ -200,6 +200,24 @@ OPTION(diff_options, no_show_encloser, f
+ no_show_encloser = true;
+ }
+ #endif
++#if defined(RSE) /* cosmetics-diff-and-log */
++OPTVAR(diff_options, bool, no_show_header, false)
++OPTION(diff_options, no_show_header, false, "no-show-header",
++ gettext_noop("do not show the summary header"))
++#ifdef option_bodies
++{
++ no_show_header = true;
++}
++#endif
++OPTVAR(diff_options, bool, no_show_separator, false)
++OPTION(diff_options, no_show_separator, false, "no-show-separator",
++ gettext_noop("do not show the separator line"))
++#ifdef option_bodies
++{
++ no_show_separator = true;
++}
++#endif
++#endif
+
+ OPT(diffs, "diffs", bool, false, gettext_noop("print diffs along with
logs"))
+ #ifdef option_bodies
+============================================================
+--- paths.cc 9be0b0ca30c8a3bb03e47ee4bf021f807bf2edef
++++ paths.cc ef10a0dff0f701fee6a9eb1b94fc2767882fe1b5
+@@ -230,7 +230,11 @@ in_bookkeeping_dir(string const & path)
+ static inline bool
+ in_bookkeeping_dir(string const & path)
+ {
++#if defined(RSE) /* alt-book-keeping-root */
++ if (path.size() == 0 || (path[0] != '_' && path[0] != '.'))
++#else
+ if (path.size() == 0 || (path[0] != '_'))
++#endif
+ return false;
+ if (path.size() == 1 || (path[1] != 'M' && path[1] != 'm'))
+ return false;
+@@ -916,6 +920,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.
++#if defined(RSE) /* alt-book-keeping-root */
++ if (!find_bookdir(root, alt_bookkeeping_root_component, current, removed))
++#endif
+ if (!find_bookdir(root, bookkeeping_root_component, current, removed))
+ if (!find_bookdir(root, old_bookkeeping_root_component, current,
removed))
+ return false;
+============================================================
+--- paths.hh adf4ce1cbc60b1f05fb4555178f985648d0bf2c5
++++ paths.hh 05e238ff3f0a98d90402bf5124f5d591bb0cf56a
+@@ -320,6 +320,15 @@ extern path_component const old_bookkeep
+ // for migration
+ extern path_component const old_bookkeeping_root_component;
+
++#if defined(RSE) /* alt-book-keeping-root */
++#ifndef MTN_ALT_BKROOT
++#define MTN_ALT_BKROOT ".mtn"
++#endif
++#define MTN_ALT_BKROOT_ARG (getenv("MTN_BKROOT") != NULL ?
getenv("MTN_BKROOT") : MTN_ALT_BKROOT)
++#define alt_bookkeeping_root
(bookkeeping_path(MTN_ALT_BKROOT_ARG))
++#define alt_bookkeeping_root_component (path_component(MTN_ALT_BKROOT_ARG))
++#endif
++
+ // this will always be an absolute path
+ class system_path : public any_path
+ {
+============================================================
+--- roster_merge.cc 5cbf793f50cf62a073ce837d337569d4ddb9475b
++++ roster_merge.cc 2a0fa3fcf1d7fb60f0fdca0238d9bdbfc34cb1a1
+@@ -607,6 +607,20 @@ roster_merge(roster_t const & left_paren
+ result.roster.detach_node(n->self);
+ result.illegal_name_conflicts.push_back(conflict);
+ }
++#if defined(RSE) /* alt-book-keeping-root */
++ if (result_root->has_child(alt_bookkeeping_root_component))
++ {
++ illegal_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.illegal_name_conflicts.push_back(conflict);
++ }
++#endif
+ }
+ }
+
+============================================================
+--- work.cc d602424dc046f080220d23b5dc663b93b573284a
++++ work.cc 59a421adeac627d5e3591c39e2334c95be62ccff
+@@ -53,28 +53,44 @@ get_revision_path(bookkeeping_path & m_p
+ static void
+ get_revision_path(bookkeeping_path & m_path)
+ {
++#if defined(RSE) /* alt-book-keeping-root */
++ m_path = (directory_exists(alt_bookkeeping_root) ? alt_bookkeeping_root :
bookkeeping_root) / revision_file_name;
++#else
+ m_path = bookkeeping_root / revision_file_name;
++#endif
+ L(FL("revision path is %s") % m_path);
+ }
+
+ static void
+ get_options_path(bookkeeping_path & o_path)
+ {
++#if defined(RSE) /* alt-book-keeping-root */
++ o_path = (directory_exists(alt_bookkeeping_root) ? alt_bookkeeping_root :
bookkeeping_root) / options_file_name;
++#else
+ o_path = bookkeeping_root / options_file_name;
++#endif
+ L(FL("options path is %s") % o_path);
+ }
+
+ static void
+ get_options_path(system_path const & workspace, system_path & o_path)
+ {
++#if defined(RSE) /* alt-book-keeping-root */
++ o_path = (directory_exists(workspace / alt_bookkeeping_root_component) ?
(workspace / alt_bookkeeping_root_component) : (workspace /
bookkeeping_root_component)) / options_file_name;
++#else
+ o_path = workspace / bookkeeping_root_component / options_file_name;
++#endif
+ L(FL("options path is %s") % o_path);
+ }
+
+ static void
+ get_inodeprints_path(bookkeeping_path & ip_path)
+ {
++#if defined(RSE) /* alt-book-keeping-root */
++ ip_path = (directory_exists(alt_bookkeeping_root) ? alt_bookkeeping_root
: bookkeeping_root) / inodeprints_file_name;
++#else
+ ip_path = bookkeeping_root / inodeprints_file_name;
++#endif
+ L(FL("inodeprints path is %s") % ip_path);
+ }
+
+@@ -185,7 +201,11 @@ workspace::get_user_log_path(bookkeeping
+ void
+ workspace::get_user_log_path(bookkeeping_path & ul_path)
+ {
++#if defined(RSE) /* alt-book-keeping-root */
++ ul_path = (directory_exists(alt_bookkeeping_root) ? alt_bookkeeping_root
: bookkeeping_root) / user_log_file_name;
++#else
+ ul_path = bookkeeping_root / user_log_file_name;
++#endif
+ L(FL("user log path is %s") % ul_path);
+ }
+
+@@ -367,7 +387,11 @@ workspace::get_local_dump_path(bookkeepi
+ void
+ workspace::get_local_dump_path(bookkeeping_path & d_path)
+ {
++#if defined(RSE) /* alt-book-keeping-root */
++ d_path = (directory_exists(alt_bookkeeping_root) ? alt_bookkeeping_root :
bookkeeping_root) / local_dump_file_name;
++#else
+ d_path = bookkeeping_root / local_dump_file_name;
++#endif
+ L(FL("local dump path is %s") % d_path);
+ }
+
+@@ -727,7 +751,11 @@ path_for_detached_nids()
+ static inline bookkeeping_path
+ path_for_detached_nids()
+ {
++#if defined(RSE) /* alt-book-keeping-root */
++ return (directory_exists(alt_bookkeeping_root) ? alt_bookkeeping_root :
bookkeeping_root) / "detached";
++#else
+ return bookkeeping_root / "detached";
++#endif
+ }
+
+ static inline bookkeeping_path
+@@ -1542,9 +1570,15 @@ workspace::perform_pivot_root(file_path
+ N(is_dir_t(new_roster.get_node(new_root)),
+ 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)),
++ 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),
+ F("proposed new root directory '%s' contains illegal path %s")
+ % new_root % bookkeeping_root);
++#endif
+ }
+
+ {
+============================================================
+--- work_migration.cc 3d58c3332cd195309eacf5cc52d4e88ad66a6c81
++++ work_migration.cc f044e25cc757899f97d413f3fe109a9bafe73553
+@@ -55,9 +55,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;
+@@ -69,7 +78,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)
+@@ -80,7 +93,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;
+@@ -90,6 +107,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.
+@@ -97,10 +117,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);
+ }
+ }
+@@ -180,7 +209,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
+ {
+@@ -196,7 +229,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.16 -r1.17 monotone.spec
--- openpkg-src/monotone/monotone.spec 8 Aug 2007 09:23:14 -0000
1.16
+++ openpkg-src/monotone/monotone.spec 9 Sep 2007 18:18:54 -0000
1.17
@@ -33,13 +33,17 @@
Group: SCM
License: GPL
Version: 0.36
-Release: 20070808
+Release: 20070909
+
+# package options
+%option with_rse no
# list of sources
Source0:
http://monotone.ca/downloads/%{version}/monotone-%{version}.tar.gz
Source1: rc.monotone
Source3: monotone-setup.sh
Patch0: monotone.patch
+Patch1: monotone.patch.rse
# build information
Prefix: %{l_prefix}
@@ -72,6 +76,9 @@
%prep
%setup -q
%patch -p0
+%if "%{with_rse}" == "yes"
+ %patch -p0 -P 1
+%endif
%build
# configure program
@@ -79,7 +86,11 @@
CXX="%{l_cxx}" \
CFLAGS="%{l_cflags -O}" \
CXXFLAGS="%{l_cxxflags -O}" \
+%if "%{with_rse}" == "yes"
+ CPPFLAGS="%{l_cppflags} -DRSE" \
+%else
CPPFLAGS="%{l_cppflags}" \
+%endif
LDFLAGS="%{l_ldflags}" \
./configure \
--prefix=%{l_prefix} \
@@ .
______________________________________________________________________
OpenPKG http://openpkg.org
CVS Repository Commit List [email protected]