You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2014/03/26 21:37:12 UTC

svn commit: r1582047 - /subversion/trunk/subversion/libsvn_ra_serf/update.c

Author: rhuijben
Date: Wed Mar 26 20:37:11 2014
New Revision: 1582047

URL: http://svn.apache.org/r1582047
Log:
Following up on r1557207 and r1582023, explicitly handle incomming
last_change_* values from the main update request even when not in
send-all mode.

This resolves an assertion that is reproducable by

$ svn co http://svn.webdav.org/repos/projects/neon/trunk neon -r 0 \
      --config-option servers:global:http-bulk-updates=false

* subversion/libsvn_ra_serf/update.c
  (report_state_e): Enable the special property values added
    in r1582023.
  (update_ttable): Enable entry prop transitions.
  (update_closed): Directly forward these properties to the file/directory.

Modified:
    subversion/trunk/subversion/libsvn_ra_serf/update.c

Modified: subversion/trunk/subversion/libsvn_ra_serf/update.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/update.c?rev=1582047&r1=1582046&r2=1582047&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/update.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/update.c Wed Mar 26 20:37:11 2014
@@ -90,13 +90,11 @@ typedef enum report_state_e {
   CHECKED_IN,
   CHECKED_IN_HREF,
 
-  MD5_CHECKSUM
-#if 0
-,
+  MD5_CHECKSUM,
+
   VERSION_NAME,
   CREATIONDATE,
   CREATOR_DISPLAYNAME
-#endif
 } report_state_e;
 
 
@@ -200,16 +198,12 @@ static const svn_ra_serf__xml_transition
 
   { OPEN_FILE, S_, "prop", PROP,
     FALSE, { NULL }, FALSE },
-#if 0
   { OPEN_DIR, S_, "prop", PROP,
     FALSE, { NULL }, FALSE },
-#endif
   { ADD_FILE, S_, "prop", PROP,
     FALSE, { NULL }, FALSE },
-#if 0
   { ADD_DIR, S_, "prop", PROP,
     FALSE, { NULL }, FALSE },
-#endif
 
   { OPEN_FILE, S_, "txdelta", TXDELTA,
     FALSE, { "?base-checksum" }, TRUE },
@@ -235,14 +229,12 @@ static const svn_ra_serf__xml_transition
   { OPEN_FILE, S_, "fetch-props", FETCH_PROPS,
     FALSE, { NULL }, FALSE },
 
-#if 0
   { PROP, D_, "version-name", VERSION_NAME,
     TRUE, { NULL }, TRUE },
   { PROP, D_, "creationdate", CREATIONDATE,
     TRUE, { NULL }, TRUE },
   { PROP, D_, "creator-displayname", CREATOR_DISPLAYNAME,
     TRUE, { NULL }, TRUE },
-#endif
   { 0 }
 };
 
@@ -2076,23 +2068,45 @@ update_closed(svn_ra_serf__xml_estate_t 
             }
         }
         break;
-#if 0
+
       case VERSION_NAME:
-        {
-          SVN_DBG(("Version: %s", cdata ? cdata->data : NULL));
-        }
-        break;
       case CREATIONDATE:
-        {
-          SVN_DBG(("Date: %s", cdata ? cdata->data : NULL));
-        }
-        break;
       case CREATOR_DISPLAYNAME:
         {
-          SVN_DBG(("Author: %s", cdata ? cdata->data : NULL));
+          const char *propname;
+
+          if (ctx->cur_file)
+            SVN_ERR(ensure_file_opened(ctx->cur_file, scratch_pool));
+          else if (ctx->cur_dir)
+            SVN_ERR(ensure_dir_opened(ctx->cur_dir, scratch_pool));
+          else
+            break;
+
+          switch (leaving_state)
+            {
+              case VERSION_NAME:
+                propname = SVN_PROP_ENTRY_COMMITTED_REV;
+                break;
+              case CREATIONDATE:
+                propname = SVN_PROP_ENTRY_COMMITTED_DATE;
+                break;
+              case CREATOR_DISPLAYNAME:
+                propname = SVN_PROP_ENTRY_LAST_AUTHOR;
+                break;
+              default:
+                SVN_ERR_MALFUNCTION(); /* Impossible to reach */
+            }
+
+          if (ctx->cur_file)
+            SVN_ERR(ctx->editor->change_file_prop(ctx->cur_file->file_baton,
+                                                  propname, cdata,
+                                                  scratch_pool));
+          else
+            SVN_ERR(ctx->editor->change_dir_prop(ctx->cur_dir->dir_baton,
+                                                  propname, cdata,
+                                                  scratch_pool));
         }
         break;
-#endif
     }
 
   return SVN_NO_ERROR;