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/09/24 16:25:38 UTC

svn commit: r1627333 - in /subversion/trunk/subversion/libsvn_ra_serf: blame.c commit.c get_lock.c lock.c log.c merge.c ra_serf.h xml.c

Author: rhuijben
Date: Wed Sep 24 14:25:38 2014
New Revision: 1627333

URL: http://svn.apache.org/r1627333
Log:
Tweak ra_serf report xml generation code a tiny bit to use the shorter
'<element />' notation for elements that are always just markers for
enabling a feature instead of '<element></element>'.

This simplifies and shortens the requests a tiny bit and returns a few of
those requests to their easier to process neon form.

* subversion/libsvn_ra_serf/blame.c
  (create_file_revs_body): Use short form for merge info flag.

* subversion/libsvn_ra_serf/commit.c
  (create_checkout_body): Use short form for element.

* subversion/libsvn_ra_serf/get_lock.c
  (create_getlock_body): Use short form for element.

* subversion/libsvn_ra_serf/lock.c
  (create_lock_body): Use short form for two elements.

* subversion/libsvn_ra_serf/log.c
  (create_log_body): Use short form for quite a few elements.

* subversion/libsvn_ra_serf/merge.c
  (create_merge_body): Use short form for quite a few elements.

* subversion/libsvn_ra_serf/ra_serf.h
  (svn_ra_serf__add_empty_tag_buckets): New function.

* subversion/libsvn_ra_serf/xml.c
  (svn_ra_serf__add_empty_tag_buckets): New function.

Modified:
    subversion/trunk/subversion/libsvn_ra_serf/blame.c
    subversion/trunk/subversion/libsvn_ra_serf/commit.c
    subversion/trunk/subversion/libsvn_ra_serf/get_lock.c
    subversion/trunk/subversion/libsvn_ra_serf/lock.c
    subversion/trunk/subversion/libsvn_ra_serf/log.c
    subversion/trunk/subversion/libsvn_ra_serf/merge.c
    subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h
    subversion/trunk/subversion/libsvn_ra_serf/xml.c

Modified: subversion/trunk/subversion/libsvn_ra_serf/blame.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/blame.c?rev=1627333&r1=1627332&r2=1627333&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/blame.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/blame.c Wed Sep 24 14:25:38 2014
@@ -302,9 +302,8 @@ create_file_revs_body(serf_bucket_t **bo
 
   if (blame_ctx->include_merged_revisions)
     {
-      svn_ra_serf__add_tag_buckets(buckets,
-                                   "S:include-merged-revisions", NULL,
-                                   alloc);
+      svn_ra_serf__add_empty_tag_buckets(buckets, alloc,
+                                         "S:include-merged-revisions", NULL);
     }
 
   svn_ra_serf__add_tag_buckets(buckets,

Modified: subversion/trunk/subversion/libsvn_ra_serf/commit.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/commit.c?rev=1627333&r1=1627332&r2=1627333&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/commit.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/commit.c Wed Sep 24 14:25:38 2014
@@ -226,7 +226,8 @@ create_checkout_body(serf_bucket_t **bkt
 
   svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:href");
   svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:activity-set");
-  svn_ra_serf__add_tag_buckets(body_bkt, "D:apply-to-version", NULL, alloc);
+  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
+                                     "D:apply-to-version", SVN_VA_NULL);
   svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:checkout");
 
   *bkt = body_bkt;

Modified: subversion/trunk/subversion/libsvn_ra_serf/get_lock.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/get_lock.c?rev=1627333&r1=1627332&r2=1627333&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/get_lock.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/get_lock.c Wed Sep 24 14:25:38 2014
@@ -243,7 +243,8 @@ create_getlock_body(serf_bucket_t **body
                                     "xmlns", "DAV:",
                                     SVN_VA_NULL);
   svn_ra_serf__add_open_tag_buckets(buckets, alloc, "prop", SVN_VA_NULL);
-  svn_ra_serf__add_tag_buckets(buckets, "lockdiscovery", NULL, alloc);
+  svn_ra_serf__add_empty_tag_buckets(buckets, alloc,
+                                     "lockdiscovery", SVN_VA_NULL);
   svn_ra_serf__add_close_tag_buckets(buckets, alloc, "prop");
   svn_ra_serf__add_close_tag_buckets(buckets, alloc, "propfind");
 

Modified: subversion/trunk/subversion/libsvn_ra_serf/lock.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/lock.c?rev=1627333&r1=1627332&r2=1627333&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/lock.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/lock.c Wed Sep 24 14:25:38 2014
@@ -412,11 +412,11 @@ create_lock_body(serf_bucket_t **body_bk
                                     SVN_VA_NULL);
 
   svn_ra_serf__add_open_tag_buckets(buckets, alloc, "lockscope", SVN_VA_NULL);
-  svn_ra_serf__add_tag_buckets(buckets, "exclusive", NULL, alloc);
+  svn_ra_serf__add_empty_tag_buckets(buckets, alloc, "exclusive", SVN_VA_NULL);
   svn_ra_serf__add_close_tag_buckets(buckets, alloc, "lockscope");
 
   svn_ra_serf__add_open_tag_buckets(buckets, alloc, "locktype", SVN_VA_NULL);
-  svn_ra_serf__add_tag_buckets(buckets, "write", NULL, alloc);
+  svn_ra_serf__add_empty_tag_buckets(buckets, alloc, "write", SVN_VA_NULL);
   svn_ra_serf__add_close_tag_buckets(buckets, alloc, "locktype");
 
   if (ctx->lock->comment)

Modified: subversion/trunk/subversion/libsvn_ra_serf/log.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/log.c?rev=1627333&r1=1627332&r2=1627333&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/log.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/log.c Wed Sep 24 14:25:38 2014
@@ -442,23 +442,22 @@ create_log_body(serf_bucket_t **body_bkt
 
   if (log_ctx->changed_paths)
     {
-      svn_ra_serf__add_tag_buckets(buckets,
-                                   "S:discover-changed-paths", NULL,
-                                   alloc);
+      svn_ra_serf__add_empty_tag_buckets(buckets, alloc,
+                                         "S:discover-changed-paths",
+                                         SVN_VA_NULL);
     }
 
   if (log_ctx->strict_node_history)
     {
-      svn_ra_serf__add_tag_buckets(buckets,
-                                   "S:strict-node-history", NULL,
-                                   alloc);
+      svn_ra_serf__add_empty_tag_buckets(buckets, alloc,
+                                         "S:strict-node-history", SVN_VA_NULL);
     }
 
   if (log_ctx->include_merged_revisions)
     {
-      svn_ra_serf__add_tag_buckets(buckets,
-                                   "S:include-merged-revisions", NULL,
-                                   alloc);
+      svn_ra_serf__add_empty_tag_buckets(buckets, alloc,
+                                         "S:include-merged-revisions",
+                                         SVN_VA_NULL);
     }
 
   if (log_ctx->revprops)
@@ -473,16 +472,14 @@ create_log_body(serf_bucket_t **body_bkt
         }
       if (log_ctx->revprops->nelts == 0)
         {
-          svn_ra_serf__add_tag_buckets(buckets,
-                                       "S:no-revprops", NULL,
-                                       alloc);
+          svn_ra_serf__add_empty_tag_buckets(buckets, alloc,
+                                             "S:no-revprops", SVN_VA_NULL);
         }
     }
   else
     {
-      svn_ra_serf__add_tag_buckets(buckets,
-                                   "S:all-revprops", NULL,
-                                   alloc);
+      svn_ra_serf__add_empty_tag_buckets(buckets, alloc,
+                                         "S:all-revprops", SVN_VA_NULL);
     }
 
   if (log_ctx->paths)
@@ -497,9 +494,8 @@ create_log_body(serf_bucket_t **body_bkt
         }
     }
 
-  svn_ra_serf__add_tag_buckets(buckets,
-                               "S:encode-binary-props", NULL,
-                               alloc);
+  svn_ra_serf__add_empty_tag_buckets(buckets, alloc,
+                                     "S:encode-binary-props", SVN_VA_NULL);
 
   svn_ra_serf__add_close_tag_buckets(buckets, alloc,
                                      "S:log-report");

Modified: subversion/trunk/subversion/libsvn_ra_serf/merge.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/merge.c?rev=1627333&r1=1627332&r2=1627333&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/merge.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/merge.c Wed Sep 24 14:25:38 2014
@@ -358,15 +358,22 @@ create_merge_body(serf_bucket_t **bkt,
   svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:href");
   svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:source");
 
-  svn_ra_serf__add_tag_buckets(body_bkt, "D:no-auto-merge", NULL, alloc);
-  svn_ra_serf__add_tag_buckets(body_bkt, "D:no-checkout", NULL, alloc);
+  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
+                                     "D:no-auto-merge", SVN_VA_NULL);
+  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
+                                     "D:no-checkout", SVN_VA_NULL);
 
   svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:prop", SVN_VA_NULL);
-  svn_ra_serf__add_tag_buckets(body_bkt, "D:checked-in", NULL, alloc);
-  svn_ra_serf__add_tag_buckets(body_bkt, "D:" SVN_DAV__VERSION_NAME, NULL, alloc);
-  svn_ra_serf__add_tag_buckets(body_bkt, "D:resourcetype", NULL, alloc);
-  svn_ra_serf__add_tag_buckets(body_bkt, "D:" SVN_DAV__CREATIONDATE, NULL, alloc);
-  svn_ra_serf__add_tag_buckets(body_bkt, "D:creator-displayname", NULL, alloc);
+  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
+                                     "D:checked-in", SVN_VA_NULL);
+  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
+                                     "D:" SVN_DAV__VERSION_NAME, SVN_VA_NULL);
+  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
+                                     "D:resourcetype", SVN_VA_NULL);
+  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
+                                     "D:" SVN_DAV__CREATIONDATE, SVN_VA_NULL);
+  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
+                                     "D:creator-displayname", SVN_VA_NULL);
   svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:prop");
 
   merge_lock_token_list(ctx->lock_tokens, NULL, body_bkt, alloc, pool);

Modified: subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h?rev=1627333&r1=1627332&r2=1627333&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h Wed Sep 24 14:25:38 2014
@@ -892,6 +892,16 @@ svn_ra_serf__add_close_tag_buckets(serf_
                                    serf_bucket_alloc_t *bkt_alloc,
                                    const char *tag);
 
+/* Add the appropriate serf buckets to AGG_BUCKET representing the XML
+ * open tag with name TAG, and then immediately closes the tag using the />
+ * notation
+ */
+void
+svn_ra_serf__add_empty_tag_buckets(serf_bucket_t *agg_bucket,
+                                   serf_bucket_alloc_t *bkt_alloc,
+                                   const char *tag,
+                                   ...) SVN_NEEDS_SENTINEL_NULL;
+
 /*
  * Add the appropriate serf buckets to AGG_BUCKET with xml-escaped
  * version of DATA.

Modified: subversion/trunk/subversion/libsvn_ra_serf/xml.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/xml.c?rev=1627333&r1=1627332&r2=1627333&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/xml.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/xml.c Wed Sep 24 14:25:38 2014
@@ -324,6 +324,49 @@ svn_ra_serf__add_open_tag_buckets(serf_b
 }
 
 void
+svn_ra_serf__add_empty_tag_buckets(serf_bucket_t *agg_bucket,
+                                   serf_bucket_alloc_t *bkt_alloc,
+                                   const char *tag, ...)
+{
+  va_list ap;
+  const char *key;
+  serf_bucket_t *tmp;
+
+  tmp = SERF_BUCKET_SIMPLE_STRING_LEN("<", 1, bkt_alloc);
+  serf_bucket_aggregate_append(agg_bucket, tmp);
+
+  tmp = SERF_BUCKET_SIMPLE_STRING(tag, bkt_alloc);
+  serf_bucket_aggregate_append(agg_bucket, tmp);
+
+  va_start(ap, tag);
+  while ((key = va_arg(ap, char *)) != NULL)
+    {
+      const char *val = va_arg(ap, const char *);
+      if (val)
+        {
+          tmp = SERF_BUCKET_SIMPLE_STRING_LEN(" ", 1, bkt_alloc);
+          serf_bucket_aggregate_append(agg_bucket, tmp);
+
+          tmp = SERF_BUCKET_SIMPLE_STRING(key, bkt_alloc);
+          serf_bucket_aggregate_append(agg_bucket, tmp);
+
+          tmp = SERF_BUCKET_SIMPLE_STRING_LEN("=\"", 2, bkt_alloc);
+          serf_bucket_aggregate_append(agg_bucket, tmp);
+
+          tmp = SERF_BUCKET_SIMPLE_STRING(val, bkt_alloc);
+          serf_bucket_aggregate_append(agg_bucket, tmp);
+
+          tmp = SERF_BUCKET_SIMPLE_STRING_LEN("\"", 1, bkt_alloc);
+          serf_bucket_aggregate_append(agg_bucket, tmp);
+        }
+    }
+  va_end(ap);
+
+  tmp = SERF_BUCKET_SIMPLE_STRING_LEN("/>", 2, bkt_alloc);
+  serf_bucket_aggregate_append(agg_bucket, tmp);
+}
+
+void
 svn_ra_serf__add_close_tag_buckets(serf_bucket_t *agg_bucket,
                                    serf_bucket_alloc_t *bkt_alloc,
                                    const char *tag)



Re: svn commit: r1627333 - in /subversion/trunk/subversion/libsvn_ra_serf: blame.c commit.c get_lock.c lock.c log.c merge.c ra_serf.h xml.c

Posted by Branko Čibej <br...@wandisco.com>.
On 25.09.2014 11:20, Bert Huijben wrote:
>
>> -----Original Message-----
>> From: Branko Čibej [mailto:brane@wandisco.com]
>> Sent: donderdag 25 september 2014 09:30
>> To: Subversion Development
>> Subject: Re: svn commit: r1627333 - in
>> /subversion/trunk/subversion/libsvn_ra_serf: blame.c commit.c get_lock.c
>> lock.c log.c merge.c ra_serf.h xml.c
>>
>> On 24.09.2014 16:25, rhuijben@apache.org wrote:
>>> Author: rhuijben
>>> Date: Wed Sep 24 14:25:38 2014
>>> New Revision: 1627333
>>>
>>> URL: http://svn.apache.org/r1627333
>>> Log:
>>> Tweak ra_serf report xml generation code a tiny bit to use the shorter
>>> '<element />' notation for elements that are always just markers for
>>> enabling a feature instead of '<element></element>'.
>> You're aware that, depending on the DAV schema definition, it may not
>> always be valid to convert an empty element to a void element, right?
> Sure,
>
> But this is simply returning to the old neon form of the requests, and for the DAV part following how they are in most example code in the RFCs.
> (Slightly shrinking the requests and avoiding a very tiny bit of processing on the server and client side...)
>
> This is also the reason I didn't just implement using the short form in svn_ra_serf__add_tag_buckets().

Ack, thanks.

-- Brane


RE: svn commit: r1627333 - in /subversion/trunk/subversion/libsvn_ra_serf: blame.c commit.c get_lock.c lock.c log.c merge.c ra_serf.h xml.c

Posted by Bert Huijben <be...@qqmail.nl>.

> -----Original Message-----
> From: Branko Čibej [mailto:brane@wandisco.com]
> Sent: donderdag 25 september 2014 09:30
> To: Subversion Development
> Subject: Re: svn commit: r1627333 - in
> /subversion/trunk/subversion/libsvn_ra_serf: blame.c commit.c get_lock.c
> lock.c log.c merge.c ra_serf.h xml.c
> 
> On 24.09.2014 16:25, rhuijben@apache.org wrote:
> > Author: rhuijben
> > Date: Wed Sep 24 14:25:38 2014
> > New Revision: 1627333
> >
> > URL: http://svn.apache.org/r1627333
> > Log:
> > Tweak ra_serf report xml generation code a tiny bit to use the shorter
> > '<element />' notation for elements that are always just markers for
> > enabling a feature instead of '<element></element>'.
> 
> You're aware that, depending on the DAV schema definition, it may not
> always be valid to convert an empty element to a void element, right?

Sure,

But this is simply returning to the old neon form of the requests, and for the DAV part following how they are in most example code in the RFCs.
(Slightly shrinking the requests and avoiding a very tiny bit of processing on the server and client side...)

This is also the reason I didn't just implement using the short form in svn_ra_serf__add_tag_buckets().

	Bert



Re: svn commit: r1627333 - in /subversion/trunk/subversion/libsvn_ra_serf: blame.c commit.c get_lock.c lock.c log.c merge.c ra_serf.h xml.c

Posted by Branko Čibej <br...@wandisco.com>.
On 24.09.2014 16:25, rhuijben@apache.org wrote:
> Author: rhuijben
> Date: Wed Sep 24 14:25:38 2014
> New Revision: 1627333
>
> URL: http://svn.apache.org/r1627333
> Log:
> Tweak ra_serf report xml generation code a tiny bit to use the shorter
> '<element />' notation for elements that are always just markers for
> enabling a feature instead of '<element></element>'.

You're aware that, depending on the DAV schema definition, it may not
always be valid to convert an empty element to a void element, right?

-- Brane