Author: julianfoad
Date: Tue Apr  3 09:09:22 2012
New Revision: 1308766

URL: http://svn.apache.org/viewvc?rev=1308766&view=rev
Log:
Introduce 'svn_client__pathrev_t' to the svn_client private name space, moved
and renamed from 'repo_location_t' in the merge code.

* subversion/include/private/svn_client_private.h,
  subversion/libsvn_client/util.c
  (svn_client__pathrev_t): New struct, moved and renamed from merge.c.
  (svn_client__pathrev_create, svn_client__pathrev_dup): New functions,
    moved and renamed from merge.c.

* subversion/libsvn_client/merge.c
  (repo_location_t, repo_location_create, repo_location_dup): Removed.
  (...everywhere...): Track the renames.

Modified:
    subversion/trunk/subversion/include/private/svn_client_private.h
    subversion/trunk/subversion/libsvn_client/merge.c
    subversion/trunk/subversion/libsvn_client/util.c

Modified: subversion/trunk/subversion/include/private/svn_client_private.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_client_private.h?rev=1308766&r1=1308765&r2=1308766&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_client_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_client_private.h Tue Apr  3 
09:09:22 2012
@@ -37,6 +37,30 @@ extern "C" {
 #endif /* __cplusplus */
 
 
+/* A location in a repository. */
+typedef struct svn_client__pathrev_t
+{
+  const char *repos_root_url;
+  const char *repos_uuid;
+  svn_revnum_t rev;
+  const char *url;
+} svn_client__pathrev_t;
+
+/* Return a new path-rev structure, allocated in RESULT_POOL,
+ * initialized with deep copies of REPOS_ROOT_URL, REPOS_UUID, REV and URL. */
+svn_client__pathrev_t *
+svn_client__pathrev_create(const char *repos_root_url,
+                           const char *repos_uuid,
+                           svn_revnum_t rev,
+                           const char *url,
+                           apr_pool_t *result_pool);
+
+/* Return a deep copy of the path-rev LOC, allocated in RESULT_POOL. */
+svn_client__pathrev_t *
+svn_client__pathrev_dup(const svn_client__pathrev_t *loc,
+                        apr_pool_t *result_pool);
+
+
 /** Return @c SVN_ERR_ILLEGAL_TARGET if TARGETS contains a mixture of
  * URLs and paths; otherwise return SVN_NO_ERROR.
  *

Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1308766&r1=1308765&r2=1308766&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Tue Apr  3 09:09:22 2012
@@ -158,23 +158,14 @@
 
 /*** Repos-Diff Editor Callbacks ***/
 
-/* A location in a repository. */
-typedef struct repo_location_t
-{
-  const char *repos_root_url;
-  const char *repos_uuid;
-  svn_revnum_t rev;
-  const char *url;
-} repo_location_t;
-
 /* */
 typedef struct merge_source_t
 {
   /* "left" side URL and revision (inclusive iff youngest) */
-  const repo_location_t *loc1;
+  const svn_client__pathrev_t *loc1;
 
   /* "right" side URL and revision (inclusive iff youngest) */
-  const repo_location_t *loc2;
+  const svn_client__pathrev_t *loc2;
 
 } merge_source_t;
 
@@ -190,7 +181,7 @@ typedef struct merge_target_t
   /* The repository location of the base node of the target WC.  If the node
    * is locally added, then URL & REV are NULL & SVN_INVALID_REVNUM.
    * REPOS_ROOT_URL and REPOS_UUID are always valid. */
-  repo_location_t loc;
+  svn_client__pathrev_t loc;
 
 } merge_target_t;
 
@@ -320,45 +311,18 @@ typedef struct merge_cmd_baton_t {
 
 /*** Utilities ***/
 
-/* Return a new repo_location_t structure, allocated in RESULT_POOL,
- * initialized with deep copies of REPOS_ROOT_URL, REPOS_UUID, REV and URL. */
-static repo_location_t *
-repo_location_create(const char *repos_root_url,
-                     const char *repos_uuid,
-                     svn_revnum_t rev,
-                     const char *url,
-                     apr_pool_t *result_pool)
-{
-  repo_location_t *loc = apr_palloc(result_pool, sizeof(*loc));
-
-  loc->repos_root_url = apr_pstrdup(result_pool, repos_root_url);
-  loc->repos_uuid = apr_pstrdup(result_pool, repos_uuid);
-  loc->rev = rev;
-  loc->url = apr_pstrdup(result_pool, url);
-  return loc;
-}
-
-/* Return a deep copy of LOC, allocated in RESULT_POOL. */
-static repo_location_t *
-repo_location_dup(const repo_location_t *loc,
-                  apr_pool_t *result_pool)
-{
-  return repo_location_create(loc->repos_root_url, loc->repos_uuid,
-                              loc->rev, loc->url, result_pool);
-}
-
 /* Return a new merge_source_t structure, allocated in RESULT_POOL,
  * initialized with deep copies of LOC1 and LOC2. */
 static merge_source_t *
-merge_source_create(const repo_location_t *loc1,
-                    const repo_location_t *loc2,
+merge_source_create(const svn_client__pathrev_t *loc1,
+                    const svn_client__pathrev_t *loc2,
                     apr_pool_t *result_pool)
 {
   merge_source_t *s
     = apr_palloc(result_pool, sizeof(*s));
 
-  s->loc1 = repo_location_dup(loc1, result_pool);
-  s->loc2 = repo_location_dup(loc2, result_pool);
+  s->loc1 = svn_client__pathrev_dup(loc1, result_pool);
+  s->loc2 = svn_client__pathrev_dup(loc2, result_pool);
   return s;
 }
 
@@ -369,17 +333,17 @@ merge_source_dup(const merge_source_t *s
 {
   merge_source_t *s = apr_palloc(result_pool, sizeof(*s));
 
-  s->loc1 = repo_location_dup(source->loc1, result_pool);
-  s->loc2 = repo_location_dup(source->loc2, result_pool);
+  s->loc1 = svn_client__pathrev_dup(source->loc1, result_pool);
+  s->loc2 = svn_client__pathrev_dup(source->loc2, result_pool);
   return s;
 }
 
-/* Like svn_client__repos_location() but using repo_location_t for input
+/* Like svn_client__repos_location() but using svn_client__pathrev_t for input
  * and output. */
 static svn_error_t *
-repos_location(repo_location_t **op_loc_p,
+repos_location(svn_client__pathrev_t **op_loc_p,
                svn_ra_session_t *ra_session,
-               const repo_location_t *peg_loc,
+               const svn_client__pathrev_t *peg_loc,
                svn_revnum_t op_revnum,
                svn_client_ctx_t *ctx,
                apr_pool_t *result_pool,
@@ -400,13 +364,13 @@ repos_location(repo_location_t **op_loc_
  * LOC1 and LOC2.  If the locations have no common ancestor, set
  * *ANCESTOR_P to NULL.
  *
- * Like svn_client__get_youngest_common_ancestor() but using repo_location_t
- * for input and output.
+ * Like svn_client__get_youngest_common_ancestor() but using
+ * svn_client__pathrev_t for input and output.
  */
 static svn_error_t *
-get_youngest_common_ancestor(repo_location_t **ancestor_p,
-                             const repo_location_t *loc1,
-                             const repo_location_t *loc2,
+get_youngest_common_ancestor(svn_client__pathrev_t **ancestor_p,
+                             const svn_client__pathrev_t *loc1,
+                             const svn_client__pathrev_t *loc2,
                              svn_client_ctx_t *ctx,
                              apr_pool_t *result_pool,
                              apr_pool_t *scratch_pool)
@@ -419,8 +383,9 @@ get_youngest_common_ancestor(repo_locati
             loc1->url, loc1->rev, loc2->url, loc2->rev,
             ctx, result_pool));
   if (url)
-    *ancestor_p = repo_location_create(loc1->repos_root_url, loc1->repos_uuid,
-                                       rev, url, result_pool);
+    *ancestor_p = svn_client__pathrev_create(loc1->repos_root_url,
+                                             loc1->repos_uuid,
+                                             rev, url, result_pool);
   else
     *ancestor_p = NULL;
   return SVN_NO_ERROR;
@@ -449,8 +414,8 @@ check_repos_match(merge_cmd_baton_t *mer
  * match (and the UUIDs, just to be sure), otherwise just the UUIDs must
  * match and the URLs can differ (a common case is http versus https). */
 static svn_boolean_t
-is_same_repos(const repo_location_t *location1,
-              const repo_location_t *location2,
+is_same_repos(const svn_client__pathrev_t *location1,
+              const svn_client__pathrev_t *location2,
               svn_boolean_t strict_urls)
 {
   if (strict_urls)
@@ -465,9 +430,9 @@ is_same_repos(const repo_location_t *loc
  * error mentioning PATH1 and PATH2. For STRICT_URLS, see is_same_repos().
  */
 static svn_error_t *
-check_same_repos(const repo_location_t *location1,
+check_same_repos(const svn_client__pathrev_t *location1,
                  const char *path1,
-                 const repo_location_t *location2,
+                 const svn_client__pathrev_t *location2,
                  const char *path2,
                  svn_boolean_t strict_urls,
                  apr_pool_t *scratch_pool)
@@ -961,7 +926,7 @@ filter_self_referential_mergeinfo(apr_ar
   int i;
   apr_pool_t *iterpool;
   svn_boolean_t is_added;
-  repo_location_t target_base;
+  svn_client__pathrev_t target_base;
 
   /* Issue #3383: We don't want mergeinfo from a foreign repos.
 
@@ -1091,7 +1056,7 @@ filter_self_referential_mergeinfo(apr_ar
               for (j = 0; j < rangelist->nelts; j++)
                 {
                   svn_error_t *err2;
-                  repo_location_t *start_loc;
+                  svn_client__pathrev_t *start_loc;
                   svn_merge_range_t *range =
                     APR_ARRAY_IDX(rangelist, j, svn_merge_range_t *);
 
@@ -4170,7 +4135,7 @@ calculate_remaining_ranges(svn_client__m
       /* Hmmm, an inoperative reverse merge from the "future".  If it is
          from our own future return a helpful error. */
       svn_error_t *err;
-      repo_location_t *start_loc;
+      svn_client__pathrev_t *start_loc;
 
       err = repos_location(&start_loc,
                            ra_session,
@@ -4452,8 +4417,8 @@ populate_remaining_ranges(apr_array_head
   for (i = 0; i < children_with_mergeinfo->nelts; i++)
     {
       const char *child_repos_path;
-      repo_location_t loc1 = *source->loc1;
-      repo_location_t loc2 = *source->loc2;
+      svn_client__pathrev_t loc1 = *source->loc1;
+      svn_client__pathrev_t loc2 = *source->loc2;
       merge_source_t child_source = { &loc1, &loc2 };
       svn_client__merge_path_t *child =
         APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *);
@@ -6317,7 +6282,7 @@ static svn_error_t *
 combine_range_with_segments(apr_array_header_t **merge_source_ts_p,
                             const svn_merge_range_t *range,
                             const apr_array_header_t *segments,
-                            const repo_location_t *source_loc,
+                            const svn_client__pathrev_t *source_loc,
                             apr_pool_t *pool)
 {
   apr_array_header_t *merge_source_ts =
@@ -6331,7 +6296,7 @@ combine_range_with_segments(apr_array_he
     {
       svn_location_segment_t *segment =
         APR_ARRAY_IDX(segments, i, svn_location_segment_t *);
-      repo_location_t loc1, loc2;
+      svn_client__pathrev_t loc1, loc2;
       merge_source_t *merge_source;
       const char *path1 = NULL;
       svn_revnum_t rev1;
@@ -6394,7 +6359,7 @@ combine_range_with_segments(apr_array_he
       /* If this is subtractive, reverse the whole calculation. */
       if (subtractive)
         {
-          const repo_location_t *tmploc = merge_source->loc1;
+          const svn_client__pathrev_t *tmploc = merge_source->loc1;
           merge_source->loc1 = merge_source->loc2;
           merge_source->loc2 = tmploc;
         }
@@ -6421,7 +6386,7 @@ combine_range_with_segments(apr_array_he
  */
 static svn_error_t *
 normalize_merge_sources_internal(apr_array_header_t **merge_sources_p,
-                                 const repo_location_t *source_loc,
+                                 const svn_client__pathrev_t *source_loc,
                                  const apr_array_header_t *merge_range_ts,
                                  svn_ra_session_t *ra_session,
                                  svn_client_ctx_t *ctx,
@@ -6452,7 +6417,7 @@ normalize_merge_sources_internal(apr_arr
      all the underlying APIs would do in this case right now anyway). */
   if (source_peg_revnum < youngest_requested)
     {
-      repo_location_t *start_loc;
+      svn_client__pathrev_t *start_loc;
 
       SVN_ERR(repos_location(&start_loc,
                              ra_session, source_loc,
@@ -6598,7 +6563,7 @@ normalize_merge_sources_internal(apr_arr
 static svn_error_t *
 normalize_merge_sources(apr_array_header_t **merge_sources_p,
                         const char *source_path_or_url,
-                        const repo_location_t *source_loc,
+                        const svn_client__pathrev_t *source_loc,
                         const apr_array_header_t *ranges_to_merge,
                         svn_ra_session_t *ra_session,
                         svn_client_ctx_t *ctx,
@@ -6740,8 +6705,8 @@ subrange_source(const merge_source_t *so
 {
   svn_boolean_t is_rollback = (source->loc1->rev > source->loc2->rev);
   svn_boolean_t same_urls = (strcmp(source->loc1->url, source->loc2->url) == 
0);
-  repo_location_t loc1 = *source->loc1;
-  repo_location_t loc2 = *source->loc2;
+  svn_client__pathrev_t loc1 = *source->loc1;
+  svn_client__pathrev_t loc2 = *source->loc2;
 
   loc1.rev = start_rev;
   loc2.rev = end_rev;
@@ -9412,7 +9377,7 @@ open_target_wc(merge_target_t **target_p
  * the session and set *LOCATION_P to the resolved revision, URL and
  * repository root.  Allocate the results in RESULT_POOL.  */
 static svn_error_t *
-open_source_session(repo_location_t **location_p,
+open_source_session(svn_client__pathrev_t **location_p,
                     svn_ra_session_t **ra_session_p,
                     const char *path_or_url,
                     const svn_opt_revision_t *peg_revision,
@@ -9420,7 +9385,7 @@ open_source_session(repo_location_t **lo
                     apr_pool_t *result_pool,
                     apr_pool_t *scratch_pool)
 {
-  repo_location_t *location = apr_palloc(result_pool, sizeof(*location));
+  svn_client__pathrev_t *location = apr_palloc(result_pool, sizeof(*location));
   svn_ra_session_t *ra_session;
 
   SVN_ERR(svn_client__ra_session_from_path(
@@ -9459,13 +9424,13 @@ merge_locked(const char *source1,
              apr_pool_t *scratch_pool)
 {
   merge_target_t *target;
-  repo_location_t *source1_loc, *source2_loc;
+  svn_client__pathrev_t *source1_loc, *source2_loc;
   svn_boolean_t related = FALSE, ancestral = FALSE;
   svn_ra_session_t *ra_session1, *ra_session2;
   apr_array_header_t *merge_sources;
   svn_error_t *err;
   svn_boolean_t use_sleep = FALSE;
-  repo_location_t *yca = NULL;
+  svn_client__pathrev_t *yca = NULL;
   apr_pool_t *sesspool;
   svn_boolean_t same_repos;
 
@@ -9914,8 +9879,8 @@ log_find_operative_revs(void *baton,
 
    Use SCRATCH_POOL for all temporary allocations. */
 static svn_error_t *
-find_unsynced_ranges(const repo_location_t *source_loc,
-                     const repo_location_t *target_loc,
+find_unsynced_ranges(const svn_client__pathrev_t *source_loc,
+                     const svn_client__pathrev_t *target_loc,
                      svn_mergeinfo_catalog_t unmerged_catalog,
                      svn_mergeinfo_catalog_t merged_catalog,
                      svn_mergeinfo_catalog_t true_unmerged_catalog,
@@ -10361,12 +10326,12 @@ find_unmerged_mergeinfo(svn_mergeinfo_ca
    allocated in RESULT_POOL.  SCRATCH_POOL is used for all temporary
    allocations. */
 static svn_error_t *
-calculate_left_hand_side(repo_location_t **left_p,
+calculate_left_hand_side(svn_client__pathrev_t **left_p,
                          svn_mergeinfo_catalog_t *merged_to_source_catalog,
                          svn_mergeinfo_catalog_t *unmerged_to_source_catalog,
                          const merge_target_t *target,
                          apr_hash_t *subtrees_with_mergeinfo,
-                         const repo_location_t *source_loc,
+                         const svn_client__pathrev_t *source_loc,
                          svn_ra_session_t *source_ra_session,
                          svn_ra_session_t *target_ra_session,
                          svn_client_ctx_t *ctx,
@@ -10381,7 +10346,7 @@ calculate_left_hand_side(repo_location_t
   /* hash of paths mapped to arrays of svn_mergeinfo_t. */
   apr_hash_t *target_history_hash = apr_hash_make(scratch_pool);
   svn_revnum_t youngest_merged_rev;
-  repo_location_t *yc_ancestor;
+  svn_client__pathrev_t *yc_ancestor;
   const char *source_repos_rel_path;
 
   /* Initialize our return variables. */
@@ -10498,7 +10463,7 @@ calculate_left_hand_side(repo_location_t
   if (youngest_merged_rev == SVN_INVALID_REVNUM)
     {
       /* We never merged to the source.  Just return the branch point. */
-      *left_p = repo_location_dup(yc_ancestor, result_pool);
+      *left_p = svn_client__pathrev_dup(yc_ancestor, result_pool);
     }
   else
     {
@@ -10530,17 +10495,17 @@ calculate_left_hand_side(repo_location_t
  */
 static svn_error_t *
 find_reintegrate_merge(merge_source_t **source_p,
-                       repo_location_t **yc_ancestor_p,
+                       svn_client__pathrev_t **yc_ancestor_p,
                        svn_ra_session_t *source_ra_session,
-                       const repo_location_t *source_loc,
+                       const svn_client__pathrev_t *source_loc,
                        svn_ra_session_t *target_ra_session,
                        const merge_target_t *target,
                        svn_client_ctx_t *ctx,
                        apr_pool_t *result_pool,
                        apr_pool_t *scratch_pool)
 {
-  repo_location_t *yc_ancestor;
-  repo_location_t *loc1;
+  svn_client__pathrev_t *yc_ancestor;
+  svn_client__pathrev_t *loc1;
   merge_source_t source;
   svn_mergeinfo_catalog_t unmerged_to_source_mergeinfo_catalog;
   svn_mergeinfo_catalog_t merged_to_source_mergeinfo_catalog;
@@ -10652,7 +10617,7 @@ find_reintegrate_merge(merge_source_t **
     *source_p = merge_source_dup(&source, result_pool);
 
   if (yc_ancestor_p)
-    *yc_ancestor_p = repo_location_dup(yc_ancestor, result_pool);
+    *yc_ancestor_p = svn_client__pathrev_dup(yc_ancestor, result_pool);
   return SVN_NO_ERROR;
 }
 
@@ -10674,7 +10639,7 @@ find_reintegrate_merge(merge_source_t **
  */
 static svn_error_t *
 open_reintegrate_source_and_target(svn_ra_session_t **source_ra_session_p,
-                                   repo_location_t **source_loc_p,
+                                   svn_client__pathrev_t **source_loc_p,
                                    svn_ra_session_t **target_ra_session_p,
                                    merge_target_t **target_p,
                                    const char *source_path_or_url,
@@ -10684,7 +10649,7 @@ open_reintegrate_source_and_target(svn_r
                                    apr_pool_t *result_pool,
                                    apr_pool_t *scratch_pool)
 {
-  repo_location_t *source_loc;
+  svn_client__pathrev_t *source_loc;
   merge_target_t *target;
 
   /* Open the target WC.  A reintegrate merge requires the merge target to
@@ -10737,7 +10702,7 @@ svn_client_find_reintegrate_merge(const 
 {
   const char *target_abspath;
   svn_ra_session_t *source_ra_session;
-  repo_location_t *source_loc;
+  svn_client__pathrev_t *source_loc;
   svn_ra_session_t *target_ra_session;
   merge_target_t *target;
   merge_source_t *source;
@@ -10783,9 +10748,9 @@ merge_reintegrate_locked(const char *sou
 {
   svn_ra_session_t *target_ra_session, *source_ra_session;
   merge_target_t *target;
-  repo_location_t *source_loc;
+  svn_client__pathrev_t *source_loc;
   merge_source_t *source;
-  repo_location_t *yc_ancestor;
+  svn_client__pathrev_t *yc_ancestor;
   svn_boolean_t use_sleep;
   svn_error_t *err;
 
@@ -10876,7 +10841,7 @@ merge_peg_locked(const char *source_path
                  apr_pool_t *scratch_pool)
 {
   merge_target_t *target;
-  repo_location_t *source_loc;
+  svn_client__pathrev_t *source_loc;
   apr_array_header_t *merge_sources;
   svn_ra_session_t *ra_session;
   apr_pool_t *sesspool;
@@ -10971,13 +10936,13 @@ svn_client_merge_peg4(const char *source
 /* Details of a symmetric merge. */
 struct svn_client__symmetric_merge_t
 {
-  repo_location_t *yca, *base, *mid, *right;
+  svn_client__pathrev_t *yca, *base, *mid, *right;
 };
 
 /* */
 typedef struct source_and_target_t
 {
-  repo_location_t *source;
+  svn_client__pathrev_t *source;
   svn_ra_session_t *source_ra_session;
   merge_target_t *target;
   svn_ra_session_t *target_ra_session;
@@ -11047,7 +11012,7 @@ close_source_and_target(source_and_targe
  *
  */
 static svn_error_t *
-find_base_on_source(repo_location_t **base_p,
+find_base_on_source(svn_client__pathrev_t **base_p,
                     source_and_target_t *s_t,
                     svn_client_ctx_t *ctx,
                     apr_pool_t *result_pool,
@@ -11056,7 +11021,7 @@ find_base_on_source(repo_location_t **ba
   svn_mergeinfo_t target_mergeinfo;
   svn_client__merge_path_t *merge_target;
   svn_boolean_t inherited;
-  repo_location_t loc1;
+  svn_client__pathrev_t loc1;
   merge_source_t source;
   svn_merge_range_t *r;
 
@@ -11091,9 +11056,9 @@ find_base_on_source(repo_location_t **ba
   r = APR_ARRAY_IDX(merge_target->remaining_ranges, 0, svn_merge_range_t *);
 
   /* ### WRONG: need historical URL instead of s_t->source->url. */
-  *base_p = repo_location_create(s_t->source->repos_root_url,
-                                 s_t->source->repos_uuid,
-                                 r->start, s_t->source->url, result_pool);
+  *base_p = svn_client__pathrev_create(s_t->source->repos_root_url,
+                                       s_t->source->repos_uuid,
+                                       r->start, s_t->source->url, 
result_pool);
   return SVN_NO_ERROR;
 }
 
@@ -11116,8 +11081,8 @@ find_base_on_source(repo_location_t **ba
  * S_T->source at which all revisions up to BASE_P are recorded as merged.
  */
 static svn_error_t *
-find_base_on_target(repo_location_t **base_p,
-                    repo_location_t **mid_p,
+find_base_on_target(svn_client__pathrev_t **base_p,
+                    svn_client__pathrev_t **mid_p,
                     source_and_target_t *s_t,
                     svn_client_ctx_t *ctx,
                     apr_pool_t *result_pool,
@@ -11158,15 +11123,15 @@ find_base_on_target(repo_location_t **ba
 /* The body of svn_client__find_symmetric_merge(), which see.
  */
 static svn_error_t *
-find_symmetric_merge(repo_location_t **yca_p,
-                     repo_location_t **base_p,
-                     repo_location_t **mid_p,
+find_symmetric_merge(svn_client__pathrev_t **yca_p,
+                     svn_client__pathrev_t **base_p,
+                     svn_client__pathrev_t **mid_p,
                      source_and_target_t *s_t,
                      svn_client_ctx_t *ctx,
                      apr_pool_t *result_pool,
                      apr_pool_t *scratch_pool)
 {
-  repo_location_t *base_on_source, *base_on_target, *mid;
+  svn_client__pathrev_t *base_on_source, *base_on_target, *mid;
 
   SVN_ERR(get_youngest_common_ancestor(yca_p, s_t->source, &s_t->target->loc,
                                        ctx, result_pool, result_pool));

Modified: subversion/trunk/subversion/libsvn_client/util.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/util.c?rev=1308766&r1=1308765&r2=1308766&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/util.c (original)
+++ subversion/trunk/subversion/libsvn_client/util.c Tue Apr  3 09:09:22 2012
@@ -41,6 +41,30 @@
 
 #include "svn_private_config.h"
 
+svn_client__pathrev_t *
+svn_client__pathrev_create(const char *repos_root_url,
+                           const char *repos_uuid,
+                           svn_revnum_t rev,
+                           const char *url,
+                           apr_pool_t *result_pool)
+{
+  svn_client__pathrev_t *loc = apr_palloc(result_pool, sizeof(*loc));
+
+  loc->repos_root_url = apr_pstrdup(result_pool, repos_root_url);
+  loc->repos_uuid = apr_pstrdup(result_pool, repos_uuid);
+  loc->rev = rev;
+  loc->url = apr_pstrdup(result_pool, url);
+  return loc;
+}
+
+svn_client__pathrev_t *
+svn_client__pathrev_dup(const svn_client__pathrev_t *loc,
+                        apr_pool_t *result_pool)
+{
+  return svn_client__pathrev_create(loc->repos_root_url, loc->repos_uuid,
+                                    loc->rev, loc->url, result_pool);
+}
+
 svn_client_commit_item3_t *
 svn_client_commit_item3_create(apr_pool_t *pool)
 {


Reply via email to