You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by gs...@apache.org on 2010/04/27 11:15:00 UTC

svn commit: r938366 - in /subversion/trunk/subversion/libsvn_wc: entries.h log.c old-and-busted.c

Author: gstein
Date: Tue Apr 27 09:14:56 2010
New Revision: 938366

URL: http://svn.apache.org/viewvc?rev=938366&view=rev
Log:
Delineate exactly which entry fields may be modified by
svn_wc__loggy_entry_modify. Remove support for fields no longer modified
this way, which then affects svn_wc__atts_to_entry. Clarify within
old-and-busted.c the attributes supported only for old entries support,
and (no longer) used for loggy-based entry modification.

* subversion/libsvn_wc/log.c:
  (SVN_WC__LOG_ATTR_REVISION, SVN_WC__LOG_ATTR_KIND): two new attribute
    names for use by SVN_WC__LOG_DELETE_ENTRY. we used to use
    ...ENTRY_ATTR_*, but those will/may go away.
  (SVN_WC__LOG_ATTR_FORCE): no longer used
  (log_do_modify_entry): stop parsing the FORCE flag. it is not used by
    the loggy entry modification
  (start_handler, svn_wc__loggy_delete_entry): rename the symbols used for
    attributes of the LOG_DELETE_ENTRY operation.
  (svn_wc__loggy_entry_modify): add some guard conditions about the
    MODIFY_FLAGS value. remove kind_str and schedule_str, and assert their
    singular value from their one call-point. remove consideration for
    REVISION, URL, DELETED, ABSENT, and FORCE. add lots of assertions
    about incoming data to clarify what this function is working with.
    adjust logic for COPIED, CONFLICT_OLD, CONFLICT_NEW, and PREJFILE to
    consider their only values when provided.

* subversion/libsvn_wc/entries.h:
  (SVN_WC__ENTRY_ATTR_NAME, SVN_WC__ENTRY_ATTR_REVISION,
      SVN_WC__ENTRY_ATTR_URL, SVN_WC__ENTRY_ATTR_DELETED,
      SVN_WC__ENTRY_ATTR_ABSENT, SVN_WC__ENTRY_ATTR_CMT_REV,
      SVN_WC__ENTRY_ATTR_CMT_DATE, SVN_WC__ENTRY_ATTR_CMT_AUTHOR):
    removed. these are no longer used generally. new symbols have been
    created within old-and-busted.c to support reading old xml-based
    entries files.

* subversion/libsvn_wc/old-and-busted.c:
  (ENTRIES_ATTR_NAME, ENTRIES_ATTR_DELETED, ENTRIES_ATTR_ABSENT,
      ENTRIES_ATTR_CMT_REV, ENTRIES_ATTR_CMT_DATE,
      ENTRIES_ATTR_CMT_AUTHOR, ENTRIES_ATTR_REVISION, ENTRIES_ATTR_URL):
    new symbols, taking the place of the SVN_WC__ENTRY_* symbols. these
    define the attribute names used in the (very) old-style XML entries
  (do_bool_attr): allow NULL for the MODIFY_FLAGS param
  (extract_string): rename RESULT_FLAGS to the standard MODIFY_FLAGS name,
    and allow it to be NULL.
  (svn_wc__atts_to_entry): update docstring to note the current use and
    eventual demise of MODIFY_FLAGS. rename various SVN_WC__ENTRY_*
    symbols to their new ENTRIES_* equivalents. no longer set flags for
    REVISION, URL, DELETED, and ABSENT. update the inline comments to this
    effect. update all existing comments about MODIFY_FLAGS. adjust calls
    to extract_string() and do_bool_attr() to pass NULL for MODIFY_FLAGS

Modified:
    subversion/trunk/subversion/libsvn_wc/entries.h
    subversion/trunk/subversion/libsvn_wc/log.c
    subversion/trunk/subversion/libsvn_wc/old-and-busted.c

Modified: subversion/trunk/subversion/libsvn_wc/entries.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/entries.h?rev=938366&r1=938365&r2=938366&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/entries.h (original)
+++ subversion/trunk/subversion/libsvn_wc/entries.h Tue Apr 27 09:14:56 2010
@@ -50,25 +50,17 @@ extern "C" {
    and for error reporting when reading a non-XML entries file.
    ### If you add or remove items here, you probably want to make sure
    to do the same for the SVN_WC__ENTRY_MODIFY_* #defines as well. */
-#define SVN_WC__ENTRY_ATTR_NAME               "name"
-#define SVN_WC__ENTRY_ATTR_REVISION           "revision"
-#define SVN_WC__ENTRY_ATTR_URL                "url"
 #define SVN_WC__ENTRY_ATTR_KIND               "kind"
 #define SVN_WC__ENTRY_ATTR_TEXT_TIME          "text-time"
 #define SVN_WC__ENTRY_ATTR_CHECKSUM           "checksum"
 #define SVN_WC__ENTRY_ATTR_SCHEDULE           "schedule"
 #define SVN_WC__ENTRY_ATTR_COPIED             "copied"
-#define SVN_WC__ENTRY_ATTR_DELETED            "deleted"
-#define SVN_WC__ENTRY_ATTR_ABSENT             "absent"
 #define SVN_WC__ENTRY_ATTR_COPYFROM_URL       "copyfrom-url"
 #define SVN_WC__ENTRY_ATTR_COPYFROM_REV       "copyfrom-rev"
 #define SVN_WC__ENTRY_ATTR_CONFLICT_OLD       "conflict-old" /* saved old file */
 #define SVN_WC__ENTRY_ATTR_CONFLICT_NEW       "conflict-new" /* saved new file */
 #define SVN_WC__ENTRY_ATTR_CONFLICT_WRK       "conflict-wrk" /* saved wrk file */
 #define SVN_WC__ENTRY_ATTR_PREJFILE           "prop-reject-file"
-#define SVN_WC__ENTRY_ATTR_CMT_REV            "committed-rev"
-#define SVN_WC__ENTRY_ATTR_CMT_DATE           "committed-date"
-#define SVN_WC__ENTRY_ATTR_CMT_AUTHOR         "last-author"
 #define SVN_WC__ENTRY_ATTR_WORKING_SIZE       "working-size"
 
 /* Attribute values for 'schedule' */

Modified: subversion/trunk/subversion/libsvn_wc/log.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/log.c?rev=938366&r1=938365&r2=938366&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/log.c (original)
+++ subversion/trunk/subversion/libsvn_wc/log.c Tue Apr 27 09:14:56 2010
@@ -79,6 +79,8 @@
 
 /* Delete the entry SVN_WC__LOG_ATTR_NAME. */
 #define SVN_WC__LOG_DELETE_ENTRY        "delete-entry"
+#define SVN_WC__LOG_ATTR_REVISION       "revision"
+#define SVN_WC__LOG_ATTR_KIND           "kind"
 
 /* Move file SVN_WC__LOG_ATTR_NAME to SVN_WC__LOG_ATTR_DEST. */
 #define SVN_WC__LOG_MV                  "mv"
@@ -103,7 +105,6 @@
 #define SVN_WC__LOG_ATTR_NAME           "name"
 #define SVN_WC__LOG_ATTR_DEST           "dest"
 #define SVN_WC__LOG_ATTR_TIMESTAMP      "timestamp"
-#define SVN_WC__LOG_ATTR_FORCE          "force"
 #define SVN_WC__LOG_ATTR_DATA           "data"
 
 /* This one is for SVN_WC__LOG_CP_AND_TRANSLATE to indicate a versioned
@@ -317,12 +318,6 @@ log_do_modify_entry(struct log_runner *l
       entry->working_size = finfo.size;
     }
 
-  /* Handle force flag. */
-  valuestr = apr_hash_get(ah, SVN_WC__LOG_ATTR_FORCE,
-                          APR_HASH_KEY_STRING);
-  if (valuestr && strcmp(valuestr, "true") == 0)
-    modify_flags |= SVN_WC__ENTRY_MODIFY_FORCE;
-
   /* ### this function never needs to modify a parent stub.
      ### NOTE: this call to entry_modify MAY create a new node.  */
   err = svn_wc__entry_modify(loggy->db, local_abspath, svn_node_unknown,
@@ -542,9 +537,9 @@ start_handler(void *userData, const char
     svn_revnum_t revision;
     svn_node_kind_t kind;
 
-    attr = svn_xml_get_attr_value(SVN_WC__ENTRY_ATTR_REVISION, atts);
+    attr = svn_xml_get_attr_value(SVN_WC__LOG_ATTR_REVISION, atts);
     revision = SVN_STR_TO_REV(attr);
-    attr = svn_xml_get_attr_value(SVN_WC__ENTRY_ATTR_KIND, atts);
+    attr = svn_xml_get_attr_value(SVN_WC__LOG_ATTR_KIND, atts);
     if (strcmp(attr, "dir") == 0)
       kind = svn_node_dir;
     else
@@ -727,9 +722,9 @@ svn_wc__loggy_delete_entry(svn_wc__db_t 
                         SVN_WC__LOG_DELETE_ENTRY,
                         SVN_WC__LOG_ATTR_NAME,
                         loggy_path1,
-                        SVN_WC__ENTRY_ATTR_REVISION,
+                        SVN_WC__LOG_ATTR_REVISION,
                         apr_psprintf(scratch_pool, "%ld", revision),
-                        SVN_WC__ENTRY_ATTR_KIND,
+                        SVN_WC__LOG_ATTR_KIND,
                         kind == svn_wc__db_kind_dir ? "dir" : "file",
                         NULL);
 
@@ -768,56 +763,54 @@ svn_wc__loggy_entry_modify(svn_wc__db_t 
   svn_stringbuf_t *log_accum = NULL;
   const char *loggy_path1;
   apr_hash_t *prop_hash = apr_hash_make(scratch_pool);
-  static const char *kind_str[] =
-    { "none",
-      SVN_WC__ENTRIES_ATTR_FILE_STR,
-      SVN_WC__ENTRIES_ATTR_DIR_STR,
-      "unknown",
-    };
-  static const char *schedule_str[] =
-    {
-      "", /* svn_wc_schedule_normal */
-      SVN_WC__ENTRY_VALUE_ADD,
-      SVN_WC__ENTRY_VALUE_DELETE,
-      SVN_WC__ENTRY_VALUE_REPLACE,
-    };
 
+  SVN_ERR_ASSERT(modify_flags != 0);
 
-  if (! modify_flags)
-    return SVN_NO_ERROR;
+  /* ### this code has a limited set of modifications. enforce it.  */
+  SVN_ERR_ASSERT((modify_flags & ~(
+                    /* from update_editor.c  */
+                    SVN_WC__ENTRY_MODIFY_SCHEDULE
+                    | SVN_WC__ENTRY_MODIFY_COPYFROM_URL
+                    | SVN_WC__ENTRY_MODIFY_COPYFROM_REV
+                    | SVN_WC__ENTRY_MODIFY_COPIED
+                    | SVN_WC__ENTRY_MODIFY_KIND
+                    | SVN_WC__ENTRY_MODIFY_TEXT_TIME
+                    | SVN_WC__ENTRY_MODIFY_WORKING_SIZE
+                    | SVN_WC__ENTRY_MODIFY_CHECKSUM
+
+                    /* from props.c  */
+                    | SVN_WC__ENTRY_MODIFY_PREJFILE
+
+                    /* from merge.c  */
+                    | SVN_WC__ENTRY_MODIFY_CONFLICT_OLD
+                    | SVN_WC__ENTRY_MODIFY_CONFLICT_NEW
+                    | SVN_WC__ENTRY_MODIFY_CONFLICT_WRK)) == 0);
 
 #define ADD_ENTRY_ATTR(attr_flag, attr_name, value) \
    if (modify_flags & (attr_flag)) \
      apr_hash_set(prop_hash, (attr_name), APR_HASH_KEY_STRING, value)
 
-  ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_REVISION,
-                 SVN_WC__ENTRY_ATTR_REVISION,
-                 apr_psprintf(scratch_pool, "%ld", entry->revision));
-
-  ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_URL,
-                 SVN_WC__ENTRY_ATTR_URL,
-                 entry->url);
-
+  /* ### it is always a file  */
+  if (modify_flags & SVN_WC__ENTRY_MODIFY_KIND)
+    SVN_ERR_ASSERT(entry->kind == svn_node_file);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_KIND,
                  SVN_WC__ENTRY_ATTR_KIND,
-                 kind_str[entry->kind]);
+                 SVN_WC__ENTRIES_ATTR_FILE_STR);
 
+  if (modify_flags & SVN_WC__ENTRY_MODIFY_SCHEDULE)
+    SVN_ERR_ASSERT(entry->schedule == svn_wc_schedule_add);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_SCHEDULE,
                  SVN_WC__ENTRY_ATTR_SCHEDULE,
-                 schedule_str[entry->schedule]);
+                 SVN_WC__ENTRY_VALUE_ADD);
 
+  if (modify_flags & SVN_WC__ENTRY_MODIFY_SCHEDULE)
+    SVN_ERR_ASSERT(entry->copied);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_COPIED,
                  SVN_WC__ENTRY_ATTR_COPIED,
-                 entry->copied ? "true" : "false");
-
-  ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_DELETED,
-                 SVN_WC__ENTRY_ATTR_DELETED,
-                 entry->deleted ? "true" : "false");
-
-  ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_ABSENT,
-                 SVN_WC__ENTRY_ATTR_ABSENT,
-                 entry->absent ? "true" : "false");
+                 "true");
 
+  if (modify_flags & SVN_WC__ENTRY_MODIFY_COPYFROM_URL)
+    SVN_ERR_ASSERT(entry->copyfrom_url != NULL);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_COPYFROM_URL,
                  SVN_WC__ENTRY_ATTR_COPYFROM_URL,
                  entry->copyfrom_url);
@@ -826,22 +819,30 @@ svn_wc__loggy_entry_modify(svn_wc__db_t 
                  SVN_WC__ENTRY_ATTR_COPYFROM_REV,
                  apr_psprintf(scratch_pool, "%ld", entry->copyfrom_rev));
 
+  if (modify_flags & SVN_WC__ENTRY_MODIFY_CONFLICT_OLD)
+    SVN_ERR_ASSERT(entry->conflict_old != NULL);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_CONFLICT_OLD,
                  SVN_WC__ENTRY_ATTR_CONFLICT_OLD,
-                 entry->conflict_old ? entry->conflict_old : "");
+                 entry->conflict_old);
 
+  if (modify_flags & SVN_WC__ENTRY_MODIFY_CONFLICT_NEW)
+    SVN_ERR_ASSERT(entry->conflict_new != NULL);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_CONFLICT_NEW,
                  SVN_WC__ENTRY_ATTR_CONFLICT_NEW,
-                 entry->conflict_new ? entry->conflict_new : "");
+                 entry->conflict_new);
 
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_CONFLICT_WRK,
                  SVN_WC__ENTRY_ATTR_CONFLICT_WRK,
                  entry->conflict_wrk ? entry->conflict_wrk : "");
 
+  if (modify_flags & SVN_WC__ENTRY_MODIFY_PREJFILE)
+    SVN_ERR_ASSERT(entry->prejfile != NULL);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_PREJFILE,
                  SVN_WC__ENTRY_ATTR_PREJFILE,
-                 entry->prejfile ? entry->prejfile : "");
+                 entry->prejfile);
 
+  if (modify_flags & SVN_WC__ENTRY_MODIFY_TEXT_TIME)
+    SVN_ERR_ASSERT(entry->text_time == 0);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_TEXT_TIME,
                  SVN_WC__ENTRY_ATTR_TEXT_TIME,
                  svn_time_to_cstring(entry->text_time, scratch_pool));
@@ -850,26 +851,16 @@ svn_wc__loggy_entry_modify(svn_wc__db_t 
                  SVN_WC__ENTRY_ATTR_CHECKSUM,
                  entry->checksum);
 
-  /* Note: Last-commit flags are no longer passed to this function. */
-
-  /* Note: LOCK flags are no longer passed to this function.  */
-
-  /* Note: ignoring the (deprecated) has_props, has_prop_mods,
-     cachable_props, and present_props fields. */
-
+  if (modify_flags & SVN_WC__ENTRY_MODIFY_WORKING_SIZE)
+    SVN_ERR_ASSERT(entry->working_size == SVN_WC_ENTRY_WORKING_SIZE_UNKNOWN);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_WORKING_SIZE,
                  SVN_WC__ENTRY_ATTR_WORKING_SIZE,
                  apr_psprintf(scratch_pool, "%" APR_OFF_T_FMT,
                               entry->working_size));
 
-  ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_FORCE,
-                 SVN_WC__LOG_ATTR_FORCE,
-                 "true");
-
 #undef ADD_ENTRY_ATTR
 
-  if (apr_hash_count(prop_hash) == 0)
-    return SVN_NO_ERROR;
+  SVN_ERR_ASSERT(apr_hash_count(prop_hash) != 0);
 
   SVN_ERR(loggy_path(&loggy_path1, path, adm_abspath, scratch_pool));
   apr_hash_set(prop_hash, SVN_WC__LOG_ATTR_NAME,

Modified: subversion/trunk/subversion/libsvn_wc/old-and-busted.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/old-and-busted.c?rev=938366&r1=938365&r2=938366&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/old-and-busted.c (original)
+++ subversion/trunk/subversion/libsvn_wc/old-and-busted.c Tue Apr 27 09:14:56 2010
@@ -52,6 +52,7 @@
 #define ENTRIES_TAG_ENTRY "entry"
 
 /* Attribute names used in our old XML entries file.  */
+#define ENTRIES_ATTR_NAME               "name"
 #define ENTRIES_ATTR_REPOS              "repos"
 #define ENTRIES_ATTR_UUID               "uuid"
 #define ENTRIES_ATTR_INCOMPLETE         "incomplete"
@@ -59,6 +60,13 @@
 #define ENTRIES_ATTR_LOCK_OWNER         "lock-owner"
 #define ENTRIES_ATTR_LOCK_COMMENT       "lock-comment"
 #define ENTRIES_ATTR_LOCK_CREATION_DATE "lock-creation-date"
+#define ENTRIES_ATTR_DELETED            "deleted"
+#define ENTRIES_ATTR_ABSENT             "absent"
+#define ENTRIES_ATTR_CMT_REV            "committed-rev"
+#define ENTRIES_ATTR_CMT_DATE           "committed-date"
+#define ENTRIES_ATTR_CMT_AUTHOR         "last-author"
+#define ENTRIES_ATTR_REVISION           "revision"
+#define ENTRIES_ATTR_URL                "url"
 
 
 /* */
@@ -705,7 +713,8 @@ do_bool_attr(svn_boolean_t *entry_flag,
            _("Entry '%s' has invalid '%s' value"),
            (entry_name ? entry_name : SVN_WC_ENTRY_THIS_DIR), attr_name);
 
-      *modify_flags |= modify_flag;
+      if (modify_flags)
+        *modify_flags |= modify_flag;
     }
   return SVN_NO_ERROR;
 }
@@ -713,7 +722,7 @@ do_bool_attr(svn_boolean_t *entry_flag,
 
 /* */
 static const char *
-extract_string(apr_uint64_t *result_flags,
+extract_string(apr_uint64_t *modify_flags,
                apr_hash_t *atts,
                const char *att_name,
                apr_uint64_t flag,
@@ -725,7 +734,8 @@ extract_string(apr_uint64_t *result_flag
   if (value == NULL)
     return NULL;
 
-  *result_flags |= flag;
+  if (modify_flags)
+    *modify_flags |= flag;
 
   if (normalize && *value == '\0')
     return NULL;
@@ -735,7 +745,15 @@ extract_string(apr_uint64_t *result_flag
 
 
 /* NOTE: this is used for running old logs, and for upgrading old XML-based
-   entries file. Be wary of removing items.  */
+   entries file. Be wary of removing items.
+
+   ### many attributes are no longer used within the old-style log files.
+   ### These attrs need to be recognized for old entries, however. For these
+   ### cases, the code will parse the attribute, but not set *MODIFY_FLAGS
+   ### for that particular field. MODIFY_FLAGS is *only* used by the
+   ### log-based entry modification system, and will go way once we
+   ### completely move away from loggy.
+*/
 svn_error_t *
 svn_wc__atts_to_entry(svn_wc_entry_t **new_entry,
                       apr_uint64_t *modify_flags,
@@ -748,34 +766,33 @@ svn_wc__atts_to_entry(svn_wc_entry_t **n
   *modify_flags = 0;
 
   /* Find the name and set up the entry under that name. */
-  name = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_NAME, APR_HASH_KEY_STRING);
+  name = apr_hash_get(atts, ENTRIES_ATTR_NAME, APR_HASH_KEY_STRING);
   entry->name = name ? apr_pstrdup(pool, name) : SVN_WC_ENTRY_THIS_DIR;
 
-  /* Attempt to set revision (resolve_to_defaults may do it later, too) */
+  /* Attempt to set revision (resolve_to_defaults may do it later, too)
+
+     ### not used by loggy; no need to set MODIFY_FLAGS  */
   {
     const char *revision_str
-      = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_REVISION, APR_HASH_KEY_STRING);
+      = apr_hash_get(atts, ENTRIES_ATTR_REVISION, APR_HASH_KEY_STRING);
 
     if (revision_str)
-      {
-        entry->revision = SVN_STR_TO_REV(revision_str);
-        *modify_flags |= SVN_WC__ENTRY_MODIFY_REVISION;
-      }
+      entry->revision = SVN_STR_TO_REV(revision_str);
     else
       entry->revision = SVN_INVALID_REVNUM;
   }
 
-  /* Attempt to set up url path (again, see resolve_to_defaults). */
-  entry->url = extract_string(modify_flags, atts,
-                              SVN_WC__ENTRY_ATTR_URL,
-                              SVN_WC__ENTRY_MODIFY_URL,
+  /* Attempt to set up url path (again, see resolve_to_defaults).
+
+     ### not used by loggy; no need to set MODIFY_FLAGS  */
+  entry->url = extract_string(NULL, atts,
+                              ENTRIES_ATTR_URL, 0,
                               FALSE, pool);
 
   /* Set up repository root.  Make sure it is a prefix of url.
 
-     NOTE: we do not set a modify_flags value since this attribute only
-     occurs in old XML entries files.  */
-  entry->repos = extract_string(modify_flags, atts,
+     ### not used by loggy; no need to set MODIFY_FLAGS  */
+  entry->repos = extract_string(NULL, atts,
                                 ENTRIES_ATTR_REPOS, 0,
                                 FALSE, pool);
   if (entry->url && entry->repos
@@ -873,22 +890,25 @@ svn_wc__atts_to_entry(svn_wc_entry_t **n
       }
   }
 
-  /* Is this entry deleted? */
+  /* Is this entry deleted?
+
+     ### not used by loggy; no need to set MODIFY_FLAGS  */
   SVN_ERR(do_bool_attr(&entry->deleted,
-                       modify_flags, SVN_WC__ENTRY_MODIFY_DELETED,
-                       atts, SVN_WC__ENTRY_ATTR_DELETED, name));
+                       NULL, 0,
+                       atts, ENTRIES_ATTR_DELETED, name));
 
-  /* Is this entry absent? */
+  /* Is this entry absent?
+
+     ### not used by loggy; no need to set MODIFY_FLAGS  */
   SVN_ERR(do_bool_attr(&entry->absent,
-                       modify_flags, SVN_WC__ENTRY_MODIFY_ABSENT,
-                       atts, SVN_WC__ENTRY_ATTR_ABSENT, name));
+                       NULL, 0,
+                       atts, ENTRIES_ATTR_ABSENT, name));
 
   /* Is this entry incomplete?
 
-     NOTE: we do not set a modify_flags value since this attribute only
-     occurs in old XML entries files.  */
+     ### not used by loggy; no need to set MODIFY_FLAGS  */
   SVN_ERR(do_bool_attr(&entry->incomplete,
-                       modify_flags, 0,
+                       NULL, 0,
                        atts, ENTRIES_ATTR_INCOMPLETE, name));
 
   /* Attempt to set up timestamps. */
@@ -927,9 +947,8 @@ svn_wc__atts_to_entry(svn_wc_entry_t **n
 
   /* UUID.
 
-     NOTE: we do not set a modify_flags value since this attribute only
-     occurs in old XML entries files. */
-  entry->uuid = extract_string(modify_flags, atts,
+     ### not used by loggy; no need to set MODIFY_FLAGS  */
+  entry->uuid = extract_string(NULL, atts,
                                ENTRIES_ATTR_UUID,
                                0, FALSE, pool);
 
@@ -937,7 +956,7 @@ svn_wc__atts_to_entry(svn_wc_entry_t **n
   {
     const char *cmt_datestr, *cmt_revstr;
 
-    cmt_datestr = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_CMT_DATE,
+    cmt_datestr = apr_hash_get(atts, ENTRIES_ATTR_CMT_DATE,
                                APR_HASH_KEY_STRING);
     if (cmt_datestr)
       {
@@ -946,8 +965,7 @@ svn_wc__atts_to_entry(svn_wc_entry_t **n
     else
       entry->cmt_date = 0;
 
-    cmt_revstr = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_CMT_REV,
-                              APR_HASH_KEY_STRING);
+    cmt_revstr = apr_hash_get(atts, ENTRIES_ATTR_CMT_REV, APR_HASH_KEY_STRING);
     if (cmt_revstr)
       {
         entry->cmt_rev = SVN_STR_TO_REV(cmt_revstr);
@@ -955,20 +973,19 @@ svn_wc__atts_to_entry(svn_wc_entry_t **n
     else
       entry->cmt_rev = SVN_INVALID_REVNUM;
 
-    entry->cmt_author = extract_string(modify_flags, atts,
-                                       SVN_WC__ENTRY_ATTR_CMT_AUTHOR,
+    entry->cmt_author = extract_string(NULL, atts,
+                                       ENTRIES_ATTR_CMT_AUTHOR,
                                        0, FALSE, pool);
   }
 
-  /* NOTE: we do not set modify_flags values since the lock attributes only
-     occur in old XML entries files.  */
-  entry->lock_token = extract_string(modify_flags, atts,
+  /* ### not used by loggy; no need to set MODIFY_FLAGS  */
+  entry->lock_token = extract_string(NULL, atts,
                                      ENTRIES_ATTR_LOCK_TOKEN,
                                      0, FALSE, pool);
-  entry->lock_owner = extract_string(modify_flags, atts,
+  entry->lock_owner = extract_string(NULL, atts,
                                      ENTRIES_ATTR_LOCK_OWNER,
                                      0, FALSE, pool);
-  entry->lock_comment = extract_string(modify_flags, atts,
+  entry->lock_comment = extract_string(NULL, atts,
                                        ENTRIES_ATTR_LOCK_COMMENT,
                                        0, FALSE, pool);
   {