You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by da...@apache.org on 2013/07/04 13:45:21 UTC

svn commit: r1499727 - in /subversion/trunk/subversion: libsvn_ra_svn/client.c libsvn_ra_svn/protocol svnserve/serve.c

Author: danielsh
Date: Thu Jul  4 11:45:20 2013
New Revision: 1499727

URL: http://svn.apache.org/r1499727
Log:
Follow-up to r1498550: widely document the implementation detail that r1498550
relies on, and elevate it to a protocol promise.

No functional change (comment changes only).

Suggested by: philip

* subversion/libsvn_ra_svn/client.c
  (ra_svn_commit): Extend documentation of the LOG_MSG manipulation.

* subversion/libsvn_ra_svn/protocol
  (commit):
    Specify the behaviour of the server when both LOGMSG and REVPROP-TABLE are
    present.  I verified (by code inspection) that 1.5.x@HEAD behaves that way,
    so presumably everything in [1.5.0, trunk@HEAD].

* subversion/svnserve/serve.c
  (commit): Point to the new protocol promise.

Modified:
    subversion/trunk/subversion/libsvn_ra_svn/client.c
    subversion/trunk/subversion/libsvn_ra_svn/protocol
    subversion/trunk/subversion/svnserve/serve.c

Modified: subversion/trunk/subversion/libsvn_ra_svn/client.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/client.c?rev=1499727&r1=1499726&r2=1499727&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/client.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/client.c Thu Jul  4 11:45:20 2013
@@ -989,8 +989,15 @@ static svn_error_t *ra_svn_commit(svn_ra
     } 
   else if (log_msg == NULL)
     /* 1.5+ server.  Set LOG_MSG to something, since the 'logmsg' argument
-       to the 'commit' protocol command is non-optional; later, REVPROP_TABLE
-       (which has NULL for svn:log) will override this value. */
+       to the 'commit' protocol command is non-optional; on the server side,
+       only REVPROP_TABLE will be used, and LOG_MSG will be ignored.  The 
+       "svn:log" member of REVPROP_TABLE table is NULL, therefore the commit
+       will have a NULL log message (not just "", really NULL).
+
+       svnserve 1.5.x+ has always ignored LOG_MSG when REVPROP_TABLE was
+       present; this was elevated to a protocol promise in r1498550 (and
+       later documented in this comment) in order to fix the segmentation
+       fault bug described in the log message of r1498550.*/
     log_msg = svn_string_create("", pool);
 
   /* If we're sending revprops other than svn:log, make sure the server won't

Modified: subversion/trunk/subversion/libsvn_ra_svn/protocol
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/protocol?rev=1499727&r1=1499726&r2=1499727&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/protocol (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/protocol Thu Jul  4 11:45:20 2013
@@ -294,6 +294,8 @@ second place for auth-request point as n
     Upon receiving response, client switches to editor command set.
     Upon successful completion of edit, server sends auth-request.
     After auth exchange completes, server sends commit-info.
+    If rev-props is present, logmsg is ignored.  Only the svn:log entry in
+    rev-props (if any) will be used.
     commit-info: ( new-rev:number date:string author:string
                    ? ( post-commit-err:string ) )
     NOTE: when revving this, make 'logmsg' optional, or delete that parameter

Modified: subversion/trunk/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnserve/serve.c?rev=1499727&r1=1499726&r2=1499727&view=diff
==============================================================================
--- subversion/trunk/subversion/svnserve/serve.c (original)
+++ subversion/trunk/subversion/svnserve/serve.c Thu Jul  4 11:45:20 2013
@@ -1441,6 +1441,7 @@ static svn_error_t *commit(svn_ra_svn_co
   if (lock_tokens && lock_tokens->nelts)
     SVN_CMD_ERR(add_lock_tokens(conn, lock_tokens, b, pool));
 
+  /* Ignore LOG_MSG, per the protocol.  See ra_svn_commit(). */
   if (revprop_list)
     SVN_ERR(svn_ra_svn__parse_proplist(revprop_list, pool, &revprop_table));
   else