Author: stefan2
Date: Fri Jul 24 13:49:33 2015
New Revision: 1692517

URL: http://svn.apache.org/r1692517
Log:
On the svn-mergeinfo-normalizer branch:
Final preparations for the "natural branch history" detection feature,
making the FS paths corresponding to the working copy nodes available
in the remove_lines function.

* tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
  (svn_min__get_mergeinfo_pair): Add FS_PATH return argument.

* tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c
  (svn_min__get_mergeinfo_pair): Extend implementation accordingly.

* tools/client-side/svn-mergeinfo-normalizer/logic.c
  (remove_lines): Add FS_PATH parameter and derive the parent FS path.
  (normalize): Request and pass the extra parameter along.

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/wc_mergeinfo.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=1692517&r1=1692516&r2=1692517&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
 Fri Jul 24 13:49:33 2015
@@ -279,6 +279,7 @@ get_parent_path(const char *child,
 static svn_error_t *
 remove_lines(svn_min__log_t *log,
              svn_min__branch_lookup_t *lookup,
+             const char *fs_path,
              const char *relpath,
              svn_mergeinfo_t parent_mergeinfo,
              svn_mergeinfo_t subtree_mergeinfo,
@@ -294,7 +295,7 @@ remove_lines(svn_min__log_t *log,
                              scratch_pool);
   for (i = 0; i < sorted_mi->nelts; ++i)
     {
-      const char *parent_path, *subtree_path;
+      const char *parent_path, *subtree_path, *parent_fs_path;
       svn_rangelist_t *parent_ranges, *subtree_ranges, *reverse_ranges;
       svn_rangelist_t *subtree_only, *parent_only;
       svn_rangelist_t *operative_outside_subtree, *operative_in_subtree;
@@ -316,6 +317,7 @@ remove_lines(svn_min__log_t *log,
 
       /* Find the parent m/i entry for the same branch. */
       parent_path = get_parent_path(subtree_path, relpath, iterpool);
+      parent_fs_path = get_parent_path(fs_path, relpath, iterpool);
       subtree_ranges = item->value;
       parent_ranges = svn_hash_gets(parent_mergeinfo, parent_path);
 
@@ -661,7 +663,7 @@ normalize(apr_array_header_t *wc_mergein
       progress.nodes_todo = i;
 
       /* Get the relevant mergeinfo. */
-      svn_min__get_mergeinfo_pair(&parent_path, &relpath,
+      svn_min__get_mergeinfo_pair(&fs_path, &parent_path, &relpath,
                                   &parent_mergeinfo, &subtree_mergeinfo,
                                   wc_mergeinfo, i);
       SVN_ERR(show_elision_header(parent_path, relpath, opt_state,
@@ -679,9 +681,9 @@ normalize(apr_array_header_t *wc_mergein
           subtree_mergeinfo_copy = svn_mergeinfo_dup(subtree_mergeinfo,
                                                      iterpool);
 
-          SVN_ERR(remove_lines(log, lookup, relpath, parent_mergeinfo_copy,
-                               subtree_mergeinfo_copy, opt_state,
-                               iterpool));
+          SVN_ERR(remove_lines(log, lookup, fs_path, relpath,
+                               parent_mergeinfo_copy, subtree_mergeinfo_copy,
+                               opt_state, iterpool));
 
           /* If all sub-tree mergeinfo could be elided, clear it.  Update
              the parent mergeinfo in case we moved some up the tree. */

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=1692517&r1=1692516&r2=1692517&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
 Fri Jul 24 13:49:33 2015
@@ -145,7 +145,8 @@ svn_min__get_mergeinfo_path(apr_array_he
                             int idx);
 
 void
-svn_min__get_mergeinfo_pair(const char **parent_path,
+svn_min__get_mergeinfo_pair(const char **fs_path,
+                            const char **parent_path,
                             const char **subtree_relpath,
                             svn_mergeinfo_t *parent_mergeinfo,
                             svn_mergeinfo_t *subtree_mergeinfo,

Modified: 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c?rev=1692517&r1=1692516&r2=1692517&view=diff
==============================================================================
--- 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c
 (original)
+++ 
subversion/branches/svn-mergeinfo-normalizer/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c
 Fri Jul 24 13:49:33 2015
@@ -241,7 +241,8 @@ svn_min__common_parent(apr_array_header_
 }
 
 void
-svn_min__get_mergeinfo_pair(const char **parent_path,
+svn_min__get_mergeinfo_pair(const char **fs_path,
+                            const char **parent_path,
                             const char **subtree_relpath,
                             svn_mergeinfo_t *parent_mergeinfo,
                             svn_mergeinfo_t *subtree_mergeinfo,
@@ -251,6 +252,7 @@ svn_min__get_mergeinfo_pair(const char *
   mergeinfo_t *entry;
   if (idx < 0 || mergeinfo->nelts <= idx)
     {
+      *fs_path = "";
       *parent_path = "";
       *subtree_relpath = "";
       *parent_mergeinfo = NULL;
@@ -260,6 +262,7 @@ svn_min__get_mergeinfo_pair(const char *
     }
 
   entry = APR_ARRAY_IDX(mergeinfo, idx, mergeinfo_t *);
+  *fs_path = entry->fs_path;
   *subtree_mergeinfo = entry->mergeinfo;
 
   if (!entry->parent)


Reply via email to