subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From s...@apache.org
Subject svn commit: r1480725 - in /subversion/branches/1.8.x: ./ STATUS subversion/svn/cl.h subversion/svn/conflict-callbacks.c subversion/svn/notify.c subversion/svn/resolve-cmd.c subversion/svn/svn.c
Date Thu, 09 May 2013 17:06:02 GMT
Author: stsp
Date: Thu May  9 17:06:02 2013
New Revision: 1480725

URL: http://svn.apache.org/r1480725
Log:
On the 1.8.x branch, merge r1471443 and r1471490 from trunk.

 * r1471443, r1471490
   Fix a bug in the Summary of Conflicts when using interactive conflict
   resolution.  Marking a text conflict as resolved but leaving a prop
   conflict unresolved on the same file, or vice versa, would decrement
   both the text and prop conflict summary stats.
   Justification:
     Regression since 1.7.
   Notes:
     r1471443 is just a removal of unused code, and is included here in
     order to avoid conflicts.  r1471490 is the main change.
   Votes:
     +1: julianfoad, brane, stsp

Modified:
    subversion/branches/1.8.x/   (props changed)
    subversion/branches/1.8.x/STATUS
    subversion/branches/1.8.x/subversion/svn/cl.h
    subversion/branches/1.8.x/subversion/svn/conflict-callbacks.c
    subversion/branches/1.8.x/subversion/svn/notify.c
    subversion/branches/1.8.x/subversion/svn/resolve-cmd.c
    subversion/branches/1.8.x/subversion/svn/svn.c

Propchange: subversion/branches/1.8.x/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1471443,1471490

Modified: subversion/branches/1.8.x/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/STATUS?rev=1480725&r1=1480724&r2=1480725&view=diff
==============================================================================
--- subversion/branches/1.8.x/STATUS (original)
+++ subversion/branches/1.8.x/STATUS Thu May  9 17:06:02 2013
@@ -127,16 +127,3 @@ Approved changes:
 # that would restart the soak should not be added unless they are resolving
 # blocking issues.  If in doubt see this link for details:
 # http://subversion.apache.org/docs/community-guide/releasing.html#release-stabilization
-
- * r1471443, r1471490
-   Fix a bug in the Summary of Conflicts when using interactive conflict
-   resolution.  Marking a text conflict as resolved but leaving a prop
-   conflict unresolved on the same file, or vice versa, would decrement
-   both the text and prop conflict summary stats.
-   Justification:
-     Regression since 1.7.
-   Notes:
-     r1471443 is just a removal of unused code, and is included here in
-     order to avoid conflicts.  r1471490 is the main change.
-   Votes:
-     +1: julianfoad, brane, stsp

Modified: subversion/branches/1.8.x/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/svn/cl.h?rev=1480725&r1=1480724&r2=1480725&view=diff
==============================================================================
--- subversion/branches/1.8.x/subversion/svn/cl.h (original)
+++ subversion/branches/1.8.x/subversion/svn/cl.h Thu May  9 17:06:02 2013
@@ -331,6 +331,23 @@ svn_cl__check_cancel(void *baton);
 typedef struct svn_cl__interactive_conflict_baton_t
   svn_cl__interactive_conflict_baton_t;
 
+/* Conflict stats for operations such as update and merge. */
+typedef struct svn_cl__conflict_stats_t svn_cl__conflict_stats_t;
+
+/* Return a new, initialized, conflict stats structure, allocated in
+ * POOL. */
+svn_cl__conflict_stats_t *
+svn_cl__conflict_stats_create(apr_pool_t *pool);
+
+/* Update CONFLICT_STATS to reflect that a conflict on PATH_LOCAL of kind
+ * CONFLICT_KIND is resolved.  (There is no support for updating the
+ * 'skipped paths' stats, since skips cannot be 'resolved'.) */
+void
+svn_cl__conflict_stats_resolved(svn_cl__conflict_stats_t *conflict_stats,
+                                const char *path_local,
+                                svn_wc_conflict_kind_t conflict_kind);
+
+
 /* Create and return an baton for use with svn_cl__conflict_func_interactive
  * in *B, allocated from RESULT_POOL, and initialised with the values
  * ACCEPT_WHICH, CONFIG, EDITOR_CMD, CANCEL_FUNC and CANCEL_BATON. */
@@ -340,6 +357,7 @@ svn_cl__get_conflict_func_interactive_ba
   svn_cl__accept_t accept_which,
   apr_hash_t *config,
   const char *editor_cmd,
+  svn_cl__conflict_stats_t *conflict_stats,
   svn_cancel_func_t cancel_func,
   void *cancel_baton,
   apr_pool_t *result_pool);
@@ -516,6 +534,7 @@ svn_cl__merge_file(const char *base_path
 svn_error_t *
 svn_cl__get_notifier(svn_wc_notify_func2_t *notify_func_p,
                      void **notify_baton_p,
+                     svn_cl__conflict_stats_t *conflict_stats,
                      apr_pool_t *pool);
 
 /* Make the notifier for use with BATON print the appropriate summary
@@ -551,13 +570,7 @@ svn_cl__check_externals_failed_notify_wr
                                               const svn_wc_notify_t *n,
                                               apr_pool_t *pool);
 
-/* Reset to zero the conflict stats accumulated in BATON, which is the
- * notifier baton from svn_cl__get_notifier().
- */
-svn_error_t *
-svn_cl__notifier_reset_conflict_stats(void *baton);
-
-/* Print the conflict stats accumulated in BATON, which is the
+/* Print the conflict stats accumulated in BATON, which is the
  * notifier baton from svn_cl__get_notifier().
  * Return any error encountered during printing.
  */
@@ -565,7 +578,7 @@ svn_error_t *
 svn_cl__notifier_print_conflict_stats(void *baton, apr_pool_t *scratch_pool);
 
 
-/*** Log message callback stuffs. ***/
+/*** Log message callback stuffs. ***/
 
 /* Allocate in POOL a baton for use with svn_cl__get_log_message().
 

Modified: subversion/branches/1.8.x/subversion/svn/conflict-callbacks.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/svn/conflict-callbacks.c?rev=1480725&r1=1480724&r2=1480725&view=diff
==============================================================================
--- subversion/branches/1.8.x/subversion/svn/conflict-callbacks.c (original)
+++ subversion/branches/1.8.x/subversion/svn/conflict-callbacks.c Thu May  9 17:06:02 2013
@@ -55,6 +55,7 @@ struct svn_cl__interactive_conflict_bato
   svn_cmdline_prompt_baton_t *pb;
   const char *path_prefix;
   svn_boolean_t quit;
+  svn_cl__conflict_stats_t *conflict_stats;
 };
 
 svn_error_t *
@@ -63,6 +64,7 @@ svn_cl__get_conflict_func_interactive_ba
   svn_cl__accept_t accept_which,
   apr_hash_t *config,
   const char *editor_cmd,
+  svn_cl__conflict_stats_t *conflict_stats,
   svn_cancel_func_t cancel_func,
   void *cancel_baton,
   apr_pool_t *result_pool)
@@ -79,6 +81,7 @@ svn_cl__get_conflict_func_interactive_ba
   (*b)->pb = pb;
   SVN_ERR(svn_dirent_get_absolute(&(*b)->path_prefix, "", result_pool));
   (*b)->quit = FALSE;
+  (*b)->conflict_stats = conflict_stats;
 
   return SVN_NO_ERROR;
 }
@@ -1024,12 +1027,13 @@ handle_obstructed_add(svn_wc_conflict_re
   return SVN_NO_ERROR;
 }
 
-svn_error_t *
-svn_cl__conflict_func_interactive(svn_wc_conflict_result_t **result,
-                                  const svn_wc_conflict_description2_t *desc,
-                                  void *baton,
-                                  apr_pool_t *result_pool,
-                                  apr_pool_t *scratch_pool)
+/* The body of svn_cl__conflict_func_interactive(). */
+static svn_error_t *
+conflict_func_interactive(svn_wc_conflict_result_t **result,
+                          const svn_wc_conflict_description2_t *desc,
+                          void *baton,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool)
 {
   svn_cl__interactive_conflict_baton_t *b = baton;
   svn_error_t *err;
@@ -1204,3 +1208,28 @@ svn_cl__conflict_func_interactive(svn_wc
 
   return SVN_NO_ERROR;
 }
+
+svn_error_t *
+svn_cl__conflict_func_interactive(svn_wc_conflict_result_t **result,
+                                  const svn_wc_conflict_description2_t *desc,
+                                  void *baton,
+                                  apr_pool_t *result_pool,
+                                  apr_pool_t *scratch_pool)
+{
+  svn_cl__interactive_conflict_baton_t *b = baton;
+
+  SVN_ERR(conflict_func_interactive(result, desc, baton,
+                                    result_pool, scratch_pool));
+
+  /* If we are resolving a conflict, adjust the summary of conflicts. */
+  if ((*result)->choice != svn_wc_conflict_choose_postpone)
+    {
+      const char *local_path
+        = svn_cl__local_style_skip_ancestor(
+            b->path_prefix, desc->local_abspath, scratch_pool);
+
+      svn_cl__conflict_stats_resolved(b->conflict_stats, local_path,
+                                             desc->kind);
+    }
+  return SVN_NO_ERROR;
+}

Modified: subversion/branches/1.8.x/subversion/svn/notify.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/svn/notify.c?rev=1480725&r1=1480724&r2=1480725&view=diff
==============================================================================
--- subversion/branches/1.8.x/subversion/svn/notify.c (original)
+++ subversion/branches/1.8.x/subversion/svn/notify.c Thu May  9 17:06:02 2013
@@ -56,37 +56,74 @@ struct notify_baton
   svn_boolean_t had_print_error; /* Used to not keep printing error messages
                                     when we've already had one print error. */
 
-  /* Conflict stats for update and merge. */
+  svn_cl__conflict_stats_t *conflict_stats;
+
+  /* The cwd, for use in decomposing absolute paths. */
+  const char *path_prefix;
+};
+
+/* Conflict stats for operations such as update and merge. */
+struct svn_cl__conflict_stats_t
+{
   apr_pool_t *stats_pool;
   apr_hash_t *text_conflicts, *prop_conflicts, *tree_conflicts;
   int text_conflicts_resolved, prop_conflicts_resolved, tree_conflicts_resolved;
   int skipped_paths;
-
-  /* The cwd, for use in decomposing absolute paths. */
-  const char *path_prefix;
 };
 
+svn_cl__conflict_stats_t *
+svn_cl__conflict_stats_create(apr_pool_t *pool)
+{
+  svn_cl__conflict_stats_t *conflict_stats
+    = apr_palloc(pool, sizeof(*conflict_stats));
+
+  conflict_stats->stats_pool = pool;
+  conflict_stats->text_conflicts = apr_hash_make(pool);
+  conflict_stats->prop_conflicts = apr_hash_make(pool);
+  conflict_stats->tree_conflicts = apr_hash_make(pool);
+  conflict_stats->text_conflicts_resolved = 0;
+  conflict_stats->prop_conflicts_resolved = 0;
+  conflict_stats->tree_conflicts_resolved = 0;
+  conflict_stats->skipped_paths = 0;
+  return conflict_stats;
+}
 
 /* Add the PATH (as a key, with a meaningless value) into the HASH in NB. */
 static void
 store_path(struct notify_baton *nb, apr_hash_t *hash, const char *path)
 {
-  svn_hash_sets(hash, apr_pstrdup(nb->stats_pool, path), "");
+  svn_hash_sets(hash, apr_pstrdup(nb->conflict_stats->stats_pool, path), "");
 }
 
-svn_error_t *
-svn_cl__notifier_reset_conflict_stats(void *baton)
+void
+svn_cl__conflict_stats_resolved(svn_cl__conflict_stats_t *conflict_stats,
+                                const char *path_local,
+                                svn_wc_conflict_kind_t conflict_kind)
 {
-  struct notify_baton *nb = baton;
-
-  apr_hash_clear(nb->text_conflicts);
-  apr_hash_clear(nb->prop_conflicts);
-  apr_hash_clear(nb->tree_conflicts);
-  nb->text_conflicts_resolved = 0;
-  nb->prop_conflicts_resolved = 0;
-  nb->tree_conflicts_resolved = 0;
-  nb->skipped_paths = 0;
-  return SVN_NO_ERROR;
+  switch (conflict_kind)
+    {
+      case svn_wc_conflict_kind_text:
+        if (svn_hash_gets(conflict_stats->text_conflicts, path_local))
+          {
+            svn_hash_sets(conflict_stats->text_conflicts, path_local, NULL);
+            conflict_stats->text_conflicts_resolved++;
+          }
+        break;
+      case svn_wc_conflict_kind_property:
+        if (svn_hash_gets(conflict_stats->prop_conflicts, path_local))
+          {
+            svn_hash_sets(conflict_stats->prop_conflicts, path_local, NULL);
+            conflict_stats->prop_conflicts_resolved++;
+          }
+        break;
+      case svn_wc_conflict_kind_tree:
+        if (svn_hash_gets(conflict_stats->tree_conflicts, path_local))
+          {
+            svn_hash_sets(conflict_stats->tree_conflicts, path_local, NULL);
+            conflict_stats->tree_conflicts_resolved++;
+          }
+        break;
+    }
 }
 
 static const char *
@@ -111,17 +148,17 @@ svn_error_t *
 svn_cl__notifier_print_conflict_stats(void *baton, apr_pool_t *scratch_pool)
 {
   struct notify_baton *nb = baton;
-  int n_text = apr_hash_count(nb->text_conflicts);
-  int n_prop = apr_hash_count(nb->prop_conflicts);
-  int n_tree = apr_hash_count(nb->tree_conflicts);
-  int n_text_r = nb->text_conflicts_resolved;
-  int n_prop_r = nb->prop_conflicts_resolved;
-  int n_tree_r = nb->tree_conflicts_resolved;
+  int n_text = apr_hash_count(nb->conflict_stats->text_conflicts);
+  int n_prop = apr_hash_count(nb->conflict_stats->prop_conflicts);
+  int n_tree = apr_hash_count(nb->conflict_stats->tree_conflicts);
+  int n_text_r = nb->conflict_stats->text_conflicts_resolved;
+  int n_prop_r = nb->conflict_stats->prop_conflicts_resolved;
+  int n_tree_r = nb->conflict_stats->tree_conflicts_resolved;
 
   if (n_text > 0 || n_text_r > 0
       || n_prop > 0 || n_prop_r > 0
       || n_tree > 0 || n_tree_r > 0
-      || nb->skipped_paths > 0)
+      || nb->conflict_stats->skipped_paths > 0)
     SVN_ERR(svn_cmdline_printf(scratch_pool,
                                _("Summary of conflicts:\n")));
 
@@ -158,10 +195,10 @@ svn_cl__notifier_print_conflict_stats(vo
                                    remaining_str(scratch_pool, n_tree),
                                    resolved_str(scratch_pool, n_tree_r)));
     }
-  if (nb->skipped_paths > 0)
+  if (nb->conflict_stats->skipped_paths > 0)
     SVN_ERR(svn_cmdline_printf(scratch_pool,
                                _("  Skipped paths: %d\n"),
-                               nb->skipped_paths));
+                               nb->conflict_stats->skipped_paths));
 
   return SVN_NO_ERROR;
 }
@@ -191,7 +228,7 @@ notify(void *baton, const svn_wc_notify_
   switch (n->action)
     {
     case svn_wc_notify_skip:
-      nb->skipped_paths++;
+      nb->conflict_stats->skipped_paths++;
       if (n->content_state == svn_wc_notify_state_missing)
         {
           if ((err = svn_cmdline_printf
@@ -214,28 +251,28 @@ notify(void *baton, const svn_wc_notify_
         }
       break;
     case svn_wc_notify_update_skip_obstruction:
-      nb->skipped_paths++;
+      nb->conflict_stats->skipped_paths++;
       if ((err = svn_cmdline_printf(
             pool, _("Skipped '%s' -- An obstructing working copy was found\n"),
             path_local)))
         goto print_error;
       break;
     case svn_wc_notify_update_skip_working_only:
-      nb->skipped_paths++;
+      nb->conflict_stats->skipped_paths++;
       if ((err = svn_cmdline_printf(
             pool, _("Skipped '%s' -- Has no versioned parent\n"),
             path_local)))
         goto print_error;
       break;
     case svn_wc_notify_update_skip_access_denied:
-      nb->skipped_paths++;
+      nb->conflict_stats->skipped_paths++;
       if ((err = svn_cmdline_printf(
             pool, _("Skipped '%s' -- Access denied\n"),
             path_local)))
         goto print_error;
       break;
     case svn_wc_notify_skip_conflicted:
-      nb->skipped_paths++;
+      nb->conflict_stats->skipped_paths++;
       if ((err = svn_cmdline_printf(
             pool, _("Skipped '%s' -- Node remains in conflict\n"),
             path_local)))
@@ -284,7 +321,7 @@ notify(void *baton, const svn_wc_notify_
       nb->received_some_change = TRUE;
       if (n->content_state == svn_wc_notify_state_conflicted)
         {
-          store_path(nb, nb->text_conflicts, path_local);
+          store_path(nb, nb->conflict_stats->text_conflicts, path_local);
           if ((err = svn_cmdline_printf(pool, "C    %s\n", path_local)))
             goto print_error;
         }
@@ -299,7 +336,7 @@ notify(void *baton, const svn_wc_notify_
       nb->received_some_change = TRUE;
       if (n->content_state == svn_wc_notify_state_conflicted)
         {
-          store_path(nb, nb->text_conflicts, path_local);
+          store_path(nb, nb->conflict_stats->text_conflicts, path_local);
           statchar_buf[0] = 'C';
         }
       else
@@ -307,7 +344,7 @@ notify(void *baton, const svn_wc_notify_
 
       if (n->prop_state == svn_wc_notify_state_conflicted)
         {
-          store_path(nb, nb->prop_conflicts, path_local);
+          store_path(nb, nb->conflict_stats->prop_conflicts, path_local);
           statchar_buf[1] = 'C';
         }
       else if (n->prop_state == svn_wc_notify_state_merged)
@@ -337,23 +374,6 @@ notify(void *baton, const svn_wc_notify_
       break;
 
     case svn_wc_notify_resolved:
-      /* All conflicts on this path are resolved, so remove path from
-         each of the text-, prop- and tree-conflict lists. */
-      if (svn_hash_gets(nb->text_conflicts, path_local))
-        {
-          svn_hash_sets(nb->text_conflicts, path_local, NULL);
-          nb->text_conflicts_resolved++;
-        }
-      if (svn_hash_gets(nb->prop_conflicts, path_local))
-        {
-          svn_hash_sets(nb->prop_conflicts, path_local, NULL);
-          nb->prop_conflicts_resolved++;
-        }
-      if (svn_hash_gets(nb->tree_conflicts, path_local))
-        {
-          svn_hash_sets(nb->tree_conflicts, path_local, NULL);
-          nb->tree_conflicts_resolved++;
-        }
       if ((err = svn_cmdline_printf(pool,
                                     _("Resolved conflicted state of '%s'\n"),
                                     path_local)))
@@ -390,7 +410,7 @@ notify(void *baton, const svn_wc_notify_
         nb->received_some_change = TRUE;
         if (n->content_state == svn_wc_notify_state_conflicted)
           {
-            store_path(nb, nb->text_conflicts, path_local);
+            store_path(nb, nb->conflict_stats->text_conflicts, path_local);
             statchar_buf[0] = 'C';
           }
         else if (n->kind == svn_node_file)
@@ -403,7 +423,7 @@ notify(void *baton, const svn_wc_notify_
 
         if (n->prop_state == svn_wc_notify_state_conflicted)
           {
-            store_path(nb, nb->prop_conflicts, path_local);
+            store_path(nb, nb->conflict_stats->prop_conflicts, path_local);
             statchar_buf[1] = 'C';
           }
         else if (n->prop_state == svn_wc_notify_state_changed)
@@ -602,7 +622,7 @@ notify(void *baton, const svn_wc_notify_
       {
         if (n->content_state == svn_wc_notify_state_conflicted)
           {
-            store_path(nb, nb->text_conflicts, path_local);
+            store_path(nb, nb->conflict_stats->text_conflicts, path_local);
             statchar_buf[0] = 'C';
           }
         else if (n->kind == svn_node_file)
@@ -615,7 +635,7 @@ notify(void *baton, const svn_wc_notify_
 
         if (n->prop_state == svn_wc_notify_state_conflicted)
           {
-            store_path(nb, nb->prop_conflicts, path_local);
+            store_path(nb, nb->conflict_stats->prop_conflicts, path_local);
             statchar_buf[1] = 'C';
           }
         else if (n->prop_state == svn_wc_notify_state_merged)
@@ -992,7 +1012,7 @@ notify(void *baton, const svn_wc_notify_
       break;
 
     case svn_wc_notify_tree_conflict:
-      store_path(nb, nb->tree_conflicts, path_local);
+      store_path(nb, nb->conflict_stats->tree_conflicts, path_local);
       if ((err = svn_cmdline_printf(pool, "   C %s\n", path_local)))
         goto print_error;
       break;
@@ -1140,6 +1160,7 @@ notify(void *baton, const svn_wc_notify_
 svn_error_t *
 svn_cl__get_notifier(svn_wc_notify_func2_t *notify_func_p,
                      void **notify_baton_p,
+                     svn_cl__conflict_stats_t *conflict_stats,
                      apr_pool_t *pool)
 {
   struct notify_baton *nb = apr_pcalloc(pool, sizeof(*nb));
@@ -1151,14 +1172,7 @@ svn_cl__get_notifier(svn_wc_notify_func2
   nb->is_wc_to_repos_copy = FALSE;
   nb->in_external = FALSE;
   nb->had_print_error = FALSE;
-  nb->stats_pool = pool;
-  nb->text_conflicts = apr_hash_make(pool);
-  nb->prop_conflicts = apr_hash_make(pool);
-  nb->tree_conflicts = apr_hash_make(pool);
-  nb->text_conflicts_resolved = 0;
-  nb->prop_conflicts_resolved = 0;
-  nb->tree_conflicts_resolved = 0;
-  nb->skipped_paths = 0;
+  nb->conflict_stats = conflict_stats;
   SVN_ERR(svn_dirent_get_absolute(&nb->path_prefix, "", pool));
 
   *notify_func_p = notify;

Modified: subversion/branches/1.8.x/subversion/svn/resolve-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/svn/resolve-cmd.c?rev=1480725&r1=1480724&r2=1480725&view=diff
==============================================================================
--- subversion/branches/1.8.x/subversion/svn/resolve-cmd.c (original)
+++ subversion/branches/1.8.x/subversion/svn/resolve-cmd.c Thu May  9 17:06:02 2013
@@ -52,9 +52,6 @@ svn_cl__resolve(apr_getopt_t *os,
   int i;
   apr_pool_t *iterpool;
   svn_boolean_t had_error = FALSE;
-  svn_wc_conflict_resolver_func2_t conflict_func2;
-  void *conflict_baton2;
-  svn_cl__interactive_conflict_baton_t *b;
 
   switch (opt_state->accept_which)
     {
@@ -106,21 +103,6 @@ svn_cl__resolve(apr_getopt_t *os,
 
   SVN_ERR(svn_cl__check_targets_are_local_paths(targets));
 
-  /* Store old state */
-  conflict_func2 = ctx->conflict_func2;
-  conflict_baton2 = ctx->conflict_baton2;
-
-  /* This subcommand always uses the interactive resolver function. */
-  ctx->conflict_func2 = svn_cl__conflict_func_interactive;
-  SVN_ERR(svn_cl__get_conflict_func_interactive_baton(&b,
-                                                      opt_state->accept_which,
-                                                      ctx->config,
-                                                      opt_state->editor_cmd,
-                                                      ctx->cancel_func,
-                                                      ctx->cancel_baton,
-                                                      scratch_pool));
-  ctx->conflict_baton2 = b;
-
   iterpool = svn_pool_create(scratch_pool);
   for (i = 0; i < targets->nelts; i++)
     {
@@ -140,10 +122,6 @@ svn_cl__resolve(apr_getopt_t *os,
     }
   svn_pool_destroy(iterpool);
 
-  /* Restore state */
-  ctx->conflict_func2 = conflict_func2;
-  ctx->conflict_baton2 = conflict_baton2;
-
   if (had_error)
     return svn_error_create(SVN_ERR_CL_ERROR_PROCESSING_EXTERNALS, NULL,
                             _("Failure occurred resolving one or more "

Modified: subversion/branches/1.8.x/subversion/svn/svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/svn/svn.c?rev=1480725&r1=1480724&r2=1480725&view=diff
==============================================================================
--- subversion/branches/1.8.x/subversion/svn/svn.c (original)
+++ subversion/branches/1.8.x/subversion/svn/svn.c Thu May  9 17:06:02 2013
@@ -1729,6 +1729,8 @@ sub_main(int argc, const char *argv[], a
   svn_boolean_t descend = TRUE;
   svn_boolean_t interactive_conflicts = FALSE;
   svn_boolean_t force_interactive = FALSE;
+  svn_cl__conflict_stats_t *conflict_stats
+    = svn_cl__conflict_stats_create(pool);
   svn_boolean_t use_notifier = TRUE;
   svn_boolean_t reading_file_from_stdin = FALSE;
   apr_hash_t *changelists;
@@ -2759,7 +2761,7 @@ sub_main(int argc, const char *argv[], a
   if (use_notifier)
     {
       SVN_INT_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
-                                       pool));
+                                       conflict_stats, pool));
     }
 
   /* Set up our cancellation support. */
@@ -2855,7 +2857,7 @@ sub_main(int argc, const char *argv[], a
     SVN_INT_ERR(svn_cl__get_conflict_func_interactive_baton(
                 &b,
                 opt_state.accept_which,
-                ctx->config, opt_state.editor_cmd,
+                ctx->config, opt_state.editor_cmd, conflict_stats,
                 ctx->cancel_func, ctx->cancel_baton, pool));
     ctx->conflict_baton2 = b;
   }



Mime
View raw message