You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2011/03/14 19:55:31 UTC
svn commit: r1081515 - /subversion/trunk/subversion/libsvn_repos/log.c
Author: pburba
Date: Mon Mar 14 18:55:30 2011
New Revision: 1081515
URL: http://svn.apache.org/viewvc?rev=1081515&view=rev
Log:
Fix reopened issue #3176 'log -g output for merge reversal is bit confusing'.
Some more pool-fu...
* subversion/libsvn_repos/log.c
(get_combined_mergeinfo_changes): Revert r1080034 and r1080236 and use
a clearer implementation to deal with the fact that svn_mergeinfo_merge
does not make a deep copy of incoming mergeinfo (i.e. simply dup the
argument ourselves). Add similar logic to the block for explicit
mergeinfo, which fixes the reopened issue, see
http://subversion.tigris.org/issues/show_bug.cgi?id=3176#desc7
Modified:
subversion/trunk/subversion/libsvn_repos/log.c
Modified: subversion/trunk/subversion/libsvn_repos/log.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_repos/log.c?rev=1081515&r1=1081514&r2=1081515&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_repos/log.c (original)
+++ subversion/trunk/subversion/libsvn_repos/log.c Mon Mar 14 18:55:30 2011
@@ -839,13 +839,13 @@ get_combined_mergeinfo_changes(svn_merge
svn_mergeinfo_inherited, FALSE, iterpool));
mergeinfo = apr_hash_get(catalog, path, APR_HASH_KEY_STRING);
- /* Compare, constrast, and combine the results. Use POOL to calculate
- the diff because svn_mergeinfo_merge does not make deep copies of
- the incoming mergeinfo changes. */
+ /* Compare, constrast, and combine the results. */
SVN_ERR(svn_mergeinfo_diff(&deleted, &added, prev_mergeinfo,
- mergeinfo, FALSE, pool));
- SVN_ERR(svn_mergeinfo_merge(*deleted_mergeinfo, deleted, pool));
- SVN_ERR(svn_mergeinfo_merge(*added_mergeinfo, added, pool));
+ mergeinfo, FALSE, iterpool));
+ SVN_ERR(svn_mergeinfo_merge(*deleted_mergeinfo,
+ svn_mergeinfo_dup(deleted, pool), pool));
+ SVN_ERR(svn_mergeinfo_merge(*added_mergeinfo,
+ svn_mergeinfo_dup(added, pool), pool));
}
svn_pool_destroy(iterpool);
@@ -871,8 +871,12 @@ get_combined_mergeinfo_changes(svn_merge
if (! svn_dirent_is_ancestor(path, changed_path))
continue;
deleted = apr_hash_get(deleted_mergeinfo_catalog, key, klen);
- SVN_ERR(svn_mergeinfo_merge(*deleted_mergeinfo, deleted, pool));
- SVN_ERR(svn_mergeinfo_merge(*added_mergeinfo, added, pool));
+ SVN_ERR(svn_mergeinfo_merge(*deleted_mergeinfo,
+ svn_mergeinfo_dup(deleted, pool),
+ pool));
+ SVN_ERR(svn_mergeinfo_merge(*added_mergeinfo,
+ svn_mergeinfo_dup(added, pool),
+ pool));
break;
}