You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2015/07/07 03:57:27 UTC

svn commit: r1689558 - in /subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer: logic.c mergeinfo-normalizer.h missing-branches.c

Author: stefan2
Date: Tue Jul  7 01:57:26 2015
New Revision: 1689558

URL: http://svn.apache.org/r1689558
Log:
On the svn-mergeinfo-normalizer branch:
Add a summary of deleted branches to the 'analyze' output.

* tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
  (svn_min__branch_deleted_list): Declare new function.

* tools/client-side/svn-mergeinfo-normalizer/missing-branches.c
  (svn_min__branch_deleted_list): Implement it.

* tools/client-side/svn-mergeinfo-normalizer/logic.c
  (show_obsoletes_summary): New console output utility.
  (svn_min__run_normalize): Call the new function.

Modified:
    subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/logic.c
    subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
    subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/missing-branches.c

Modified: subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/logic.c
URL: http://svn.apache.org/viewvc/subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/logic.c?rev=1689558&r1=1689557&r2=1689558&view=diff
==============================================================================
--- subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/logic.c (original)
+++ subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/logic.c Tue Jul  7 01:57:26 2015
@@ -766,6 +766,44 @@ processing_title(svn_min__opt_state_t *o
   return result->data;
 }
 
+static svn_error_t *
+show_obsoletes_summary(svn_min__branch_lookup_t *lookup,
+                       svn_min__opt_state_t *opt_state,
+                       apr_pool_t *scratch_pool)
+{
+  apr_array_header_t *paths;
+  apr_pool_t *iterpool;
+  int i;
+
+  if (!opt_state->run_analysis || !opt_state->remove_obsoletes)
+    return SVN_NO_ERROR;
+
+  paths = svn_min__branch_deleted_list(lookup, scratch_pool, scratch_pool);
+  if (!paths->nelts)
+    {
+      SVN_ERR(svn_cmdline_printf(scratch_pool,
+                            _("\nNo deleted branches were detected.\n\n")));
+      return SVN_NO_ERROR;
+    }
+
+  iterpool = svn_pool_create(scratch_pool);
+
+  SVN_ERR(svn_cmdline_printf(iterpool,
+                             _("\nDetected %d deleted branches:\n"),
+                             paths->nelts));
+  for (i = 0; i < paths->nelts; ++i)
+    {
+      const char *path = APR_ARRAY_IDX(paths, i, const char *);
+
+      svn_pool_clear(iterpool);
+      SVN_ERR(svn_cmdline_printf(iterpool, _("    %s\n"), path));
+    }
+
+  svn_pool_destroy(iterpool);
+
+  return SVN_NO_ERROR;
+}
+
 /* This implements the `svn_opt_subcommand_t' interface. */
 svn_error_t *
 svn_min__run_normalize(apr_getopt_t *os,
@@ -834,11 +872,14 @@ svn_min__run_normalize(apr_getopt_t *os,
 
       /* write results to disk */
       svn_pool_clear(subpool);
-      if (cmd_baton->opt_state->dry_run)
-        SVN_ERR(svn_min__remove_empty_mergeinfo(wc_mergeinfo));
-      else
+      if (!cmd_baton->opt_state->dry_run)
         SVN_ERR(svn_min__write_mergeinfo(cmd_baton, wc_mergeinfo, subpool));
 
+      SVN_ERR(svn_min__remove_empty_mergeinfo(wc_mergeinfo));
+
+      /* Show a summary of deleted branches. */
+      SVN_ERR(show_obsoletes_summary(lookup, cmd_baton->opt_state, iterpool));
+
       /* show results */
       if (!cmd_baton->opt_state->quiet)
         {

Modified: subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
URL: http://svn.apache.org/viewvc/subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h?rev=1689558&r1=1689557&r2=1689558&view=diff
==============================================================================
--- subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h (original)
+++ subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h Tue Jul  7 01:57:26 2015
@@ -197,6 +197,11 @@ svn_min__branch_lookup(svn_boolean_t *de
                        svn_boolean_t local_only,
                        apr_pool_t *scratch_pool);
 
+apr_array_header_t *
+svn_min__branch_deleted_list(svn_min__branch_lookup_t *lookup,
+                             apr_pool_t *result_pool,
+                             apr_pool_t *scratch_pool);
+
 svn_error_t *
 svn_min__run_normalize(apr_getopt_t *os,
                        void *baton,

Modified: subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/missing-branches.c
URL: http://svn.apache.org/viewvc/subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/missing-branches.c?rev=1689558&r1=1689557&r2=1689558&view=diff
==============================================================================
--- subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/missing-branches.c (original)
+++ subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/missing-branches.c Tue Jul  7 01:57:26 2015
@@ -31,6 +31,7 @@
 
 #include "svn_hash.h"
 #include "svn_pools.h"
+#include "private/svn_sorts_private.h"
 #include "private/svn_subr_private.h"
 
 #include "mergeinfo-normalizer.h"
@@ -264,3 +265,27 @@ svn_min__branch_lookup(svn_boolean_t *de
                                        scratch_pool));
 }
 
+apr_array_header_t *
+svn_min__branch_deleted_list(svn_min__branch_lookup_t *lookup,
+                             apr_pool_t *result_pool,
+                             apr_pool_t *scratch_pool)
+{
+  apr_array_header_t *result = apr_array_make(result_pool,
+                                              apr_hash_count(lookup->deleted),
+                                              sizeof(const char *));
+  apr_hash_index_t *hi;
+  for (hi = apr_hash_first(scratch_pool, lookup->deleted);
+       hi;
+       hi = apr_hash_next(hi))
+    {
+      const char *path = apr_hash_this_key(hi);
+      apr_size_t len = apr_hash_this_key_len(hi);
+
+      APR_ARRAY_PUSH(result, const char *) = apr_pstrmemdup(result_pool,
+                                                            path, len);
+    }
+
+  svn_sort__array(result, svn_sort_compare_paths);
+
+  return result;
+}
\ No newline at end of file