You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2011/01/03 22:46:17 UTC

svn commit: r1054785 - in /subversion/branches/ignore-mergeinfo-log/subversion: include/svn_client.h include/svn_error_codes.h include/svn_ra.h libsvn_client/deprecated.c libsvn_client/log.c libsvn_ra/deprecated.c libsvn_ra/ra_loader.c svn/log-cmd.c

Author: hwright
Date: Mon Jan  3 21:46:17 2011
New Revision: 1054785

URL: http://svn.apache.org/viewvc?rev=1054785&view=rev
Log:
On the ignore-mergeinfo-log branch:
Add API support for ignoring mergeinfo in 'svn log'.  This doesn't actually
do the ignoring, just pushes parameters down to the RA layer.

* subversion/libsvn_ra/deprecated.c
  (svn_ra_get_log2): New wrapper.

* subversion/libsvn_ra/ra_loader.c
  (svn_ra_get_log3): New.

* subversion/svn/log-cmd.c
  (svn_cl__log): Call the new client API, with the appropriate ignore_mergeinfo
    flag value.

* subversion/include/svn_error_codes.h
  (SVN_ERR_NONSENSICAL_OPTIONS): New.

* subversion/include/svn_client.h
  (svn_client_log6): New.
  (svn_client_log5): Deprecate.

* subversion/include/svn_ra.h
  (svn_ra_get_log3): New.
  (svn_ra_get_log2): Deprecate.

* subversion/libsvn_client/deprecated.c
  (svn_client_log5): New deprecated wrapper.

* subversion/libsvn_client/log.c
  (svn_client_log6): New.

Modified:
    subversion/branches/ignore-mergeinfo-log/subversion/include/svn_client.h
    subversion/branches/ignore-mergeinfo-log/subversion/include/svn_error_codes.h
    subversion/branches/ignore-mergeinfo-log/subversion/include/svn_ra.h
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/deprecated.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/log.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/deprecated.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/ra_loader.c
    subversion/branches/ignore-mergeinfo-log/subversion/svn/log-cmd.c

Modified: subversion/branches/ignore-mergeinfo-log/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/include/svn_client.h?rev=1054785&r1=1054784&r2=1054785&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/include/svn_client.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/include/svn_client.h Mon Jan  3 21:46:17 2011
@@ -2341,6 +2341,9 @@ svn_client_status(svn_revnum_t *result_r
  * If @a include_merged_revisions is set, log information for revisions
  * which have been merged to @a targets will also be returned.
  *
+ * If @a ignore_mergeinfo_changes is set, log will ignore any changes to
+ * the svn:mergeinfo property when determining which revisions to return.
+ *
  * If @a revprops is NULL, retrieve all revprops; else, retrieve only the
  * revprops named in the array (i.e. retrieve none if the array is empty).
  *
@@ -2356,8 +2359,31 @@ svn_client_status(svn_revnum_t *result_r
  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2/baton2
  * with a 'skip' signal on any unversioned targets.
  *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_client_log6(const apr_array_header_t *targets,
+                const svn_opt_revision_t *peg_revision,
+                const apr_array_header_t *revision_ranges,
+                int limit,
+                svn_boolean_t discover_changed_paths,
+                svn_boolean_t strict_node_history,
+                svn_boolean_t include_merged_revisions,
+                svn_boolean_t ignore_mergeinfo_changes,
+                const apr_array_header_t *revprops,
+                svn_log_entry_receiver_t receiver,
+                void *receiver_baton,
+                svn_client_ctx_t *ctx,
+                apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_log6(), but with @a ignore_mergeinfo_changes
+ * always @c FALSE.
+ *
+ * @deprecated Provided for compatibility with the 1.6 API.
  * @since New in 1.6.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_log5(const apr_array_header_t *targets,
                 const svn_opt_revision_t *peg_revision,

Modified: subversion/branches/ignore-mergeinfo-log/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/include/svn_error_codes.h?rev=1054785&r1=1054784&r2=1054785&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/include/svn_error_codes.h Mon Jan  3 21:46:17 2011
@@ -1350,6 +1350,11 @@ SVN_ERROR_START
              "SQLite busy at transaction rollback; "
              "resetting all busy SQLite statements to allow rollback")
 
+  /** @since New in 1.7. */
+  SVN_ERRDEF(SVN_ERR_NONSENSICAL_OPTIONS,
+             SVN_ERR_MISC_CATEGORY_START + 35,
+             "Argument combinations are invalid")
+
   /* command-line client errors */
 
   SVN_ERRDEF(SVN_ERR_CL_ARG_PARSING_ERROR,

Modified: subversion/branches/ignore-mergeinfo-log/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/include/svn_ra.h?rev=1054785&r1=1054784&r2=1054785&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/include/svn_ra.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/include/svn_ra.h Mon Jan  3 21:46:17 2011
@@ -1459,9 +1459,30 @@ svn_ra_do_diff(svn_ra_session_t *session
  * revprops is NULL or contains a revprop other than svn:author, svn:date,
  * or svn:log, an @c SVN_ERR_RA_NOT_IMPLEMENTED error is returned.
  *
- * @since New in 1.5.
+ * @since New in 1.6.
  */
+svn_error_t *
+svn_ra_get_log3(svn_ra_session_t *session,
+                const apr_array_header_t *paths,
+                svn_revnum_t start,
+                svn_revnum_t end,
+                int limit,
+                svn_boolean_t discover_changed_paths,
+                svn_boolean_t strict_node_history,
+                svn_boolean_t include_merged_revisions,
+                svn_boolean_t ignore_mergeinfo,
+                const apr_array_header_t *revprops,
+                svn_log_entry_receiver_t receiver,
+                void *receiver_baton,
+                apr_pool_t *pool);
 
+/**
+ * Similar to svn_ra_get_log3(), but with @a ignore_mergeinfo always @c FALSE.
+ * 
+ * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
+ */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_get_log2(svn_ra_session_t *session,
                 const apr_array_header_t *paths,

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/deprecated.c?rev=1054785&r1=1054784&r2=1054785&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/deprecated.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/deprecated.c Mon Jan  3 21:46:17 2011
@@ -1201,6 +1201,26 @@ svn_client_ls(apr_hash_t **dirents,
 
 /*** From log.c ***/
 svn_error_t *
+svn_client_log5(const apr_array_header_t *targets,
+                const svn_opt_revision_t *peg_revision,
+                const apr_array_header_t *revision_ranges,
+                int limit,
+                svn_boolean_t discover_changed_paths,
+                svn_boolean_t strict_node_history,
+                svn_boolean_t include_merged_revisions,
+                const apr_array_header_t *revprops,
+                svn_log_entry_receiver_t receiver,
+                void *receiver_baton,
+                svn_client_ctx_t *ctx,
+                apr_pool_t *pool)
+{
+  return svn_client_log6(targets, peg_revision, revision_ranges, limit,
+                         discover_changed_paths, strict_node_history,
+                         include_merged_revisions, FALSE, revprops,
+                         receiver, receiver_baton, ctx, pool);
+}
+
+svn_error_t *
 svn_client_log4(const apr_array_header_t *targets,
                 const svn_opt_revision_t *peg_revision,
                 const svn_opt_revision_t *start,

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/log.c?rev=1054785&r1=1054784&r2=1054785&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/log.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/log.c Mon Jan  3 21:46:17 2011
@@ -266,13 +266,14 @@ limit_receiver(void *baton, svn_log_entr
 
 
 svn_error_t *
-svn_client_log5(const apr_array_header_t *targets,
+svn_client_log6(const apr_array_header_t *targets,
                 const svn_opt_revision_t *peg_revision,
                 const apr_array_header_t *revision_ranges,
                 int limit,
                 svn_boolean_t discover_changed_paths,
                 svn_boolean_t strict_node_history,
                 svn_boolean_t include_merged_revisions,
+                svn_boolean_t ignore_mergeinfo_changes,
                 const apr_array_header_t *revprops,
                 svn_log_entry_receiver_t real_receiver,
                 void *real_receiver_baton,
@@ -603,7 +604,7 @@ svn_client_log5(const apr_array_header_t
           passed_receiver_baton = &lb;
         }
 
-      SVN_ERR(svn_ra_get_log2(ra_session,
+      SVN_ERR(svn_ra_get_log3(ra_session,
                               condensed_targets,
                               start_revnum,
                               end_revnum,
@@ -611,6 +612,7 @@ svn_client_log5(const apr_array_header_t
                               discover_changed_paths,
                               strict_node_history,
                               include_merged_revisions,
+                              ignore_mergeinfo_changes,
                               passed_receiver_revprops,
                               passed_receiver,
                               passed_receiver_baton,

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/deprecated.c?rev=1054785&r1=1054784&r2=1054785&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/deprecated.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/deprecated.c Mon Jan  3 21:46:17 2011
@@ -293,6 +293,25 @@ svn_error_t *svn_ra_do_diff(svn_ra_sessi
                          versus_url, diff_editor, diff_baton, pool);
 }
 
+svn_error_t *svn_ra_get_log2(svn_ra_session_t *session,
+                             const apr_array_header_t *paths,
+                             svn_revnum_t start,
+                             svn_revnum_t end,
+                             int limit,
+                             svn_boolean_t discover_changed_paths,
+                             svn_boolean_t strict_node_history,
+                             svn_boolean_t include_merged_revisions,
+                             const apr_array_header_t *revprops,
+                             svn_log_entry_receiver_t receiver,
+                             void *receiver_baton,
+                             apr_pool_t *pool)
+{
+  return svn_ra_get_log3(session, paths, start, end, limit,
+                         discover_changed_paths, strict_node_history,
+                         include_merged_revisions, FALSE, revprops, receiver,
+                         receiver_baton, pool);
+}
+
 svn_error_t *svn_ra_get_log(svn_ra_session_t *session,
                             const apr_array_header_t *paths,
                             svn_revnum_t start,

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/ra_loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/ra_loader.c?rev=1054785&r1=1054784&r2=1054785&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/ra_loader.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/ra_loader.c Mon Jan  3 21:46:17 2011
@@ -868,7 +868,7 @@ svn_error_t *svn_ra_do_diff3(svn_ra_sess
                                   diff_baton, pool);
 }
 
-svn_error_t *svn_ra_get_log2(svn_ra_session_t *session,
+svn_error_t *svn_ra_get_log3(svn_ra_session_t *session,
                              const apr_array_header_t *paths,
                              svn_revnum_t start,
                              svn_revnum_t end,
@@ -876,11 +876,19 @@ svn_error_t *svn_ra_get_log2(svn_ra_sess
                              svn_boolean_t discover_changed_paths,
                              svn_boolean_t strict_node_history,
                              svn_boolean_t include_merged_revisions,
+                             svn_boolean_t ignore_mergeinfo,
                              const apr_array_header_t *revprops,
                              svn_log_entry_receiver_t receiver,
                              void *receiver_baton,
                              apr_pool_t *pool)
 {
+  /* Including merged revisions and ignoring mergeinfo simultaneously is
+     nonsensical, so prohibit it. */
+  if (include_merged_revisions && ignore_mergeinfo)
+    return svn_error_create
+      (SVN_ERR_NONSENSICAL_OPTIONS, NULL,
+       _("Can't ignore mergeinfo and include merged revisions simultaneously"));
+
   if (paths)
     {
       int i;

Modified: subversion/branches/ignore-mergeinfo-log/subversion/svn/log-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/svn/log-cmd.c?rev=1054785&r1=1054784&r2=1054785&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/svn/log-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/svn/log-cmd.c Mon Jan  3 21:46:17 2011
@@ -706,13 +706,14 @@ svn_cl__log(apr_getopt_t *os,
           if (!opt_state->quiet)
             APR_ARRAY_PUSH(revprops, const char *) = SVN_PROP_REVISION_LOG;
         }
-      SVN_ERR(svn_client_log5(targets,
+      SVN_ERR(svn_client_log6(targets,
                               &peg_revision,
                               opt_state->revision_ranges,
                               opt_state->limit,
                               opt_state->verbose,
                               opt_state->stop_on_copy,
                               opt_state->use_merge_history,
+                              opt_state->ignore_mergeinfo,
                               revprops,
                               log_entry_receiver_xml,
                               &lb,
@@ -729,13 +730,14 @@ svn_cl__log(apr_getopt_t *os,
       APR_ARRAY_PUSH(revprops, const char *) = SVN_PROP_REVISION_DATE;
       if (!opt_state->quiet)
         APR_ARRAY_PUSH(revprops, const char *) = SVN_PROP_REVISION_LOG;
-      SVN_ERR(svn_client_log5(targets,
+      SVN_ERR(svn_client_log6(targets,
                               &peg_revision,
                               opt_state->revision_ranges,
                               opt_state->limit,
                               opt_state->verbose,
                               opt_state->stop_on_copy,
                               opt_state->use_merge_history,
+                              opt_state->ignore_mergeinfo,
                               revprops,
                               log_entry_receiver,
                               &lb,