Author: stefan2
Date: Mon Jun 29 23:33:00 2015
New Revision: 1688329

URL: http://svn.apache.org/r1688329
Log:
On the svn-mergeinfo-normalizer branch:
Add progress information and post-op stats to all 3 modifying
sub-commands.

* tools/client-side/svn-mergeinfo-normalizer/clear-obsolete-cmd.c
  (remove_obsoletes): Show progress.
  (svn_min__clear_obsolete): Show post-process stats.

* tools/client-side/svn-mergeinfo-normalizer/combine-ranges-cmd.c
  (shorten_lines): Show progress.
  (svn_min__combine_ranges): Show post-process stats.

* tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.c
  (normalize): Show progress.
  (svn_min__normalize): Show post-process stats.

Modified:
    
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/clear-obsolete-cmd.c
    
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/combine-ranges-cmd.c
    
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.c

Modified: 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/clear-obsolete-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/clear-obsolete-cmd.c?rev=1688329&r1=1688328&r2=1688329&view=diff
==============================================================================
--- 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/clear-obsolete-cmd.c
 (original)
+++ 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/clear-obsolete-cmd.c
 Mon Jun 29 23:33:00 2015
@@ -27,6 +27,7 @@
 
 /*** Includes. ***/
 
+#include "svn_cmdline.h"
 #include "svn_dirent_uri.h"
 #include "svn_hash.h"
 #include "svn_path.h"
@@ -77,18 +78,29 @@ remove_obsolete_lines(svn_ra_session_t *
 static svn_error_t *
 remove_obsoletes(apr_array_header_t *wc_mergeinfo,
                  svn_ra_session_t *session,
+                 svn_boolean_t quiet,
                  apr_pool_t *scratch_pool)
 {
   apr_pool_t *iterpool = svn_pool_create(scratch_pool);
 
   int i;
+  apr_int64_t removed = 0;
   for (i = 0; i < wc_mergeinfo->nelts; ++i)
     {
       svn_mergeinfo_t mergeinfo = svn_min__get_mergeinfo(wc_mergeinfo, i);
+      unsigned initial_count = apr_hash_count(mergeinfo);
       svn_pool_clear(iterpool);
 
       /* Combine mergeinfo ranges */
       SVN_ERR(remove_obsolete_lines(session, mergeinfo, iterpool));
+      removed += initial_count - apr_hash_count(mergeinfo);
+
+      /* Show progress after every 1000 nodes and after the last one. */
+      if (!quiet && ((i+1) % 1000 == 0 || (i+1) == wc_mergeinfo->nelts))
+        SVN_ERR(svn_cmdline_printf(iterpool,
+                  _("    Processed %d nodes, removed %s branch entries.\n"),
+                  i+1,
+                  apr_psprintf(iterpool, "%" APR_UINT64_T_FMT, removed)));
     }
 
   svn_pool_destroy(iterpool);
@@ -125,12 +137,24 @@ svn_min__clear_obsolete(apr_getopt_t *os
 
       /* actual normalization */
       svn_pool_clear(subpool);
-      SVN_ERR(remove_obsoletes(wc_mergeinfo, session, subpool));
+      if (!cmd_baton->opt_state->quiet)
+        SVN_ERR(svn_cmdline_printf(subpool,
+                                   _("Remove obsoletes ...\n")));
+
+      SVN_ERR(remove_obsoletes(wc_mergeinfo, session,
+                               cmd_baton->opt_state->quiet, subpool));
 
       /* write results to disk */
       svn_pool_clear(subpool);
       if (!cmd_baton->opt_state->dry_run)
         SVN_ERR(svn_min__write_mergeinfo(cmd_baton, wc_mergeinfo, subpool));
+
+      /* show results */
+      if (!cmd_baton->opt_state->quiet)
+        {
+          SVN_ERR(svn_cmdline_printf(subpool, _("\nRemaining mergeinfo:\n")));
+          SVN_ERR(svn_min__print_mergeinfo_stats(wc_mergeinfo, subpool));
+        }
     }
 
   svn_pool_destroy(subpool);

Modified: 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/combine-ranges-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/combine-ranges-cmd.c?rev=1688329&r1=1688328&r2=1688329&view=diff
==============================================================================
--- 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/combine-ranges-cmd.c
 (original)
+++ 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/combine-ranges-cmd.c
 Mon Jun 29 23:33:00 2015
@@ -28,6 +28,7 @@
 
 /*** Includes. ***/
 
+#include "svn_cmdline.h"
 #include "svn_dirent_uri.h"
 #include "svn_hash.h"
 #include "svn_path.h"
@@ -77,12 +78,14 @@ inoperative(svn_min__log_t *log,
 static svn_error_t *
 shorten_lines(apr_array_header_t *wc_mergeinfo,
               svn_min__log_t *log,
+              svn_boolean_t quiet,
               apr_pool_t *scratch_pool)
 {
   apr_pool_t *iterpool = svn_pool_create(scratch_pool);
   apr_pool_t *iterpool2 = svn_pool_create(scratch_pool);
 
   int i;
+  apr_int64_t removed = 0;
   for (i = 0; i < wc_mergeinfo->nelts; ++i)
     {
       apr_hash_index_t *hi;
@@ -124,8 +127,16 @@ shorten_lines(apr_array_header_t *wc_mer
                 }
             }
 
+          removed += ranges->nelts - dest - 1;
           ranges->nelts = dest + 1;
         }
+
+      /* Show progress after every 1000 nodes and after the last one. */
+      if (!quiet && ((i+1) % 1000 == 0 || (i+1) == wc_mergeinfo->nelts))
+        SVN_ERR(svn_cmdline_printf(iterpool,
+                  _("    Processed %d nodes, removed %s revision ranges.\n"),
+                  i+1,
+                  apr_psprintf(iterpool, "%" APR_UINT64_T_FMT, removed)));
     }
 
   svn_pool_destroy(iterpool2);
@@ -175,12 +186,24 @@ svn_min__combine_ranges(apr_getopt_t *os
 
       /* actual normalization */
       svn_pool_clear(subpool);
-      SVN_ERR(shorten_lines(wc_mergeinfo, log, subpool));
+      if (!cmd_baton->opt_state->quiet)
+        SVN_ERR(svn_cmdline_printf(subpool,
+                                   _("Combine revision ranges ...\n")));
+
+      SVN_ERR(shorten_lines(wc_mergeinfo, log, cmd_baton->opt_state->quiet,
+                            subpool));
 
       /* write results to disk */
       svn_pool_clear(subpool);
       if (!cmd_baton->opt_state->dry_run)
         SVN_ERR(svn_min__write_mergeinfo(cmd_baton, wc_mergeinfo, subpool));
+
+      /* show results */
+      if (!cmd_baton->opt_state->quiet)
+        {
+          SVN_ERR(svn_cmdline_printf(subpool, _("\nRemaining mergeinfo:\n")));
+          SVN_ERR(svn_min__print_mergeinfo_stats(wc_mergeinfo, subpool));
+        }
     }
 
   svn_pool_destroy(subpool);

Modified: 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.c?rev=1688329&r1=1688328&r2=1688329&view=diff
==============================================================================
--- 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.c
 (original)
+++ 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.c
 Mon Jun 29 23:33:00 2015
@@ -27,6 +27,7 @@
 
 /*** Includes. ***/
 
+#include "svn_cmdline.h"
 #include "svn_dirent_uri.h"
 #include "svn_hash.h"
 #include "svn_path.h"
@@ -120,11 +121,13 @@ remove_lines(svn_min__log_t *log,
 static svn_error_t *
 normalize(apr_array_header_t *wc_mergeinfo,
           svn_min__log_t *log,
+          svn_boolean_t quiet,
           apr_pool_t *scratch_pool)
 {
   apr_pool_t *iterpool = svn_pool_create(scratch_pool);
 
   int i;
+  int deleted = 0;
   for (i = wc_mergeinfo->nelts - 1; i >= 0; --i)
     {
       const char *parent_path;
@@ -155,8 +158,14 @@ normalize(apr_array_header_t *wc_mergein
                                            apr_hash_pool_get(parent_mergeinfo),
                                            iterpool));
               apr_hash_clear(subtree_mergeinfo);
+              ++deleted;
             }
         }
+
+      if (!quiet && i % 1000 == 0)
+        SVN_ERR(svn_cmdline_printf(iterpool,
+                  _("    Processed %d nodes, eliminated mergeinfo on %d.\n"),
+                  wc_mergeinfo->nelts - i, deleted));
     }
 
   svn_pool_destroy(iterpool);
@@ -205,12 +214,24 @@ svn_min__normalize(apr_getopt_t *os,
 
       /* actual normalization */
       svn_pool_clear(subpool);
-      SVN_ERR(normalize(wc_mergeinfo, log, subpool));
+      if (!cmd_baton->opt_state->quiet)
+        SVN_ERR(svn_cmdline_printf(subpool,
+                                   _("Normalizing mergeinfo ...\n")));
+
+      SVN_ERR(normalize(wc_mergeinfo, log, cmd_baton->opt_state->quiet,
+                        subpool));
 
       /* write results to disk */
       svn_pool_clear(subpool);
       if (!cmd_baton->opt_state->dry_run)
         SVN_ERR(svn_min__write_mergeinfo(cmd_baton, wc_mergeinfo, subpool));
+
+      /* show results */
+      if (!cmd_baton->opt_state->quiet)
+        {
+          SVN_ERR(svn_cmdline_printf(subpool, _("\nRemaining mergeinfo:\n")));
+          SVN_ERR(svn_min__print_mergeinfo_stats(wc_mergeinfo, subpool));
+        }
     }
 
   svn_pool_destroy(subpool);


Reply via email to