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 01:41:13 UTC
svn commit: r1689524 -
/subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/logic.c
Author: stefan2
Date: Mon Jul 6 23:41:13 2015
New Revision: 1689524
URL: http://svn.apache.org/r1689524
Log:
On the svn-mergeinfo-normalizer branch:
In case a sub-tree mergeinfo cannot be elided, obsolete branches may
be amongst those previously reported as "elided". Therefore, log the
second removal in a separate section. Also, don't count the branch
removal if it part of removing whole nodes.
* tools/client-side/svn-mergeinfo-normalizer/logic.c
(remove_obsolete_line): Make the PROGRESS counter optional.
(remove_lines): Don't count removals of obsolete branches here.
(show_removing_obsoletes): New console output utility.
(normalize): Update caller. Show the obsolete branch removal after
failed elision under a separate header. Count removals.
Modified:
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/logic.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=1689524&r1=1689523&r2=1689524&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 Mon Jul 6 23:41:13 2015
@@ -205,7 +205,8 @@ remove_obsolete_line(svn_boolean_t *dele
{
svn_hash_sets(mergeinfo, path, NULL);
- ++progress->obsoletes_removed;
+ if (progress)
+ ++progress->obsoletes_removed;
SVN_ERR(show_removed_branch(path, local_only, opt_state, scratch_pool));
}
@@ -273,7 +274,6 @@ remove_lines(svn_min__log_t *log,
svn_mergeinfo_t parent_mergeinfo,
svn_mergeinfo_t subtree_mergeinfo,
svn_min__opt_state_t *opt_state,
- progress_t *progress,
apr_pool_t *scratch_pool)
{
apr_pool_t *iterpool = svn_pool_create(scratch_pool);
@@ -300,8 +300,8 @@ remove_lines(svn_min__log_t *log,
/* Maybe, this branch is known to be obsolete anyway.
Do a quick check based on previous lookups. */
SVN_ERR(remove_obsolete_line(&deleted, lookup, subtree_mergeinfo,
- subtree_path, opt_state, progress,
- TRUE, iterpool));
+ subtree_path, opt_state, NULL, TRUE,
+ iterpool));
if (deleted)
continue;
@@ -317,8 +317,8 @@ remove_lines(svn_min__log_t *log,
branch has been deleted after all? This time contact the
repository. */
SVN_ERR(remove_obsolete_line(&deleted, lookup, subtree_mergeinfo,
- subtree_path, opt_state, progress,
- FALSE, iterpool));
+ subtree_path, opt_state, NULL, FALSE,
+ iterpool));
/* If still relevant, we need to keep the whole m/i on this node.
Therefore, report the problem. */
@@ -337,8 +337,8 @@ remove_lines(svn_min__log_t *log,
/* We really found a reverse revision range!?
Try to get rid of it. */
SVN_ERR(remove_obsolete_line(&deleted, lookup, subtree_mergeinfo,
- subtree_path, opt_state, progress,
- FALSE, iterpool));
+ subtree_path, opt_state, NULL, FALSE,
+ iterpool));
if (!deleted)
SVN_ERR(show_reverse_ranges(subtree_path, reverse_ranges,
opt_state, iterpool));
@@ -367,8 +367,8 @@ remove_lines(svn_min__log_t *log,
{
/* This branch can't be elided. Maybe, it is obsolete anyway. */
SVN_ERR(remove_obsolete_line(&deleted, lookup, subtree_mergeinfo,
- subtree_path, opt_state, progress,
- FALSE, iterpool));
+ subtree_path, opt_state, NULL, FALSE,
+ iterpool));
if (deleted)
continue;
}
@@ -541,6 +541,17 @@ show_elision_header(const char *parent_p
}
static svn_error_t *
+show_removing_obsoletes(svn_min__opt_state_t *opt_state,
+ apr_pool_t *scratch_pool)
+{
+ if (opt_state->remove_obsoletes && opt_state->verbose)
+ SVN_ERR(svn_cmdline_printf(scratch_pool,
+ _("\n Removing obsolete entries ...\n")));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
show_elision_result(svn_mergeinfo_t parent_mergeinfo,
svn_mergeinfo_t subtree_mergeinfo,
svn_min__opt_state_t *opt_state,
@@ -628,7 +639,7 @@ normalize(apr_array_header_t *wc_mergein
iterpool);
SVN_ERR(remove_lines(log, lookup, relpath, parent_mergeinfo_copy,
- subtree_mergeinfo_copy, opt_state, &progress,
+ subtree_mergeinfo_copy, opt_state,
iterpool));
/* If all sub-tree mergeinfo could be elided, clear it. Update
@@ -642,14 +653,22 @@ normalize(apr_array_header_t *wc_mergein
apr_hash_clear(subtree_mergeinfo);
++progress.nodes_removed;
}
+ else
+ {
+ /* We have to keep the sub-tree m/i but we can remove entries
+ for deleted branches from it. */
+ SVN_ERR(show_removing_obsoletes(opt_state, iterpool));
+ SVN_ERR(remove_obsolete_lines(lookup, subtree_mergeinfo,
+ opt_state, &progress, FALSE,
+ iterpool));
+ }
+ }
+ else
+ {
+ /* Eliminate deleted branches. */
+ SVN_ERR(remove_obsolete_lines(lookup, subtree_mergeinfo, opt_state,
+ &progress, FALSE, iterpool));
}
-
- /* Eliminate deleted branches - in case there are any entries left.
- Even then, we almost certainly already cached the necessary info
- in LOOKUP. Still, because this is the final reduction for this
- node, we allow repository lookups if need be. */
- SVN_ERR(remove_obsolete_lines(lookup, subtree_mergeinfo, opt_state,
- &progress, FALSE, iterpool));
/* Reduce the number of remaining ranges. */
SVN_ERR(shorten_lines(subtree_mergeinfo, log, opt_state, &progress,