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                     openpkg-cvs@openpkg.org

Reply via email to