diff options
Diffstat (limited to 'subversion/svnrdump/load_editor.c')
| -rw-r--r-- | subversion/svnrdump/load_editor.c | 45 | 
1 files changed, 20 insertions, 25 deletions
| diff --git a/subversion/svnrdump/load_editor.c b/subversion/svnrdump/load_editor.c index 15dac6e98f18..2ebacf79e1b5 100644 --- a/subversion/svnrdump/load_editor.c +++ b/subversion/svnrdump/load_editor.c @@ -167,8 +167,7 @@ set_revision_mapping(apr_hash_t *rev_map,                                           sizeof(svn_revnum_t) * 2);    mapped_revs[0] = from_rev;    mapped_revs[1] = to_rev; -  apr_hash_set(rev_map, mapped_revs, -               sizeof(svn_revnum_t), mapped_revs + 1); +  apr_hash_set(rev_map, mapped_revs, sizeof(*mapped_revs), mapped_revs + 1);  }  /* Return the revision to which FROM_REV maps in REV_MAP, or @@ -392,7 +391,7 @@ new_revision_record(void **revision_baton,  {    struct revision_baton *rb;    struct parse_baton *pb; -  apr_hash_index_t *hi; +  const char *rev_str;    svn_revnum_t head_rev;    rb = apr_pcalloc(pool, sizeof(*rb)); @@ -401,14 +400,9 @@ new_revision_record(void **revision_baton,    rb->pb = pb;    rb->db = NULL; -  for (hi = apr_hash_first(pool, headers); hi; hi = apr_hash_next(hi)) -    { -      const char *hname = apr_hash_this_key(hi); -      const char *hval = apr_hash_this_val(hi); - -      if (strcmp(hname, SVN_REPOS_DUMPFILE_REVISION_NUMBER) == 0) -        rb->rev = atoi(hval); -    } +  rev_str = svn_hash_gets(headers, SVN_REPOS_DUMPFILE_REVISION_NUMBER); +  if (rev_str) +    rb->rev = SVN_STR_TO_REV(rev_str);    SVN_ERR(svn_ra_get_latest_revnum(pb->session, &head_rev, pool)); @@ -499,6 +493,7 @@ new_node_record(void **node_baton,    const struct svn_delta_editor_t *commit_editor = rb->pb->commit_editor;    void *commit_edit_baton = rb->pb->commit_edit_baton;    struct node_baton *nb; +  svn_revnum_t head_rev_before_commit = rb->rev - rb->rev_offset - 1;    apr_hash_index_t *hi;    void *child_baton;    const char *nb_dirname; @@ -537,7 +532,7 @@ new_node_record(void **node_baton,        rb->pb->commit_edit_baton = commit_edit_baton;        SVN_ERR(commit_editor->open_root(commit_edit_baton, -                                       rb->rev - rb->rev_offset - 1, +                                       head_rev_before_commit,                                         rb->pool, &child_baton));        /* child_baton corresponds to the root directory baton here */ @@ -570,7 +565,7 @@ new_node_record(void **node_baton,        if (strcmp(hname, SVN_REPOS_DUMPFILE_TEXT_DELTA_BASE_MD5) == 0)          nb->base_checksum = apr_pstrdup(rb->pool, hval);        if (strcmp(hname, SVN_REPOS_DUMPFILE_NODE_COPYFROM_REV) == 0) -        nb->copyfrom_rev = atoi(hval); +        nb->copyfrom_rev = SVN_STR_TO_REV(hval);        if (strcmp(hname, SVN_REPOS_DUMPFILE_NODE_COPYFROM_PATH) == 0)          nb->copyfrom_path = apr_pstrdup(rb->pool, hval);      } @@ -617,7 +612,7 @@ new_node_record(void **node_baton,                               rb->pool);            SVN_ERR(commit_editor->open_directory(relpath_compose,                                                  rb->db->baton, -                                                rb->rev - rb->rev_offset - 1, +                                                head_rev_before_commit,                                                  rb->pool, &child_baton));            push_directory(rb, child_baton, relpath_compose, TRUE /*is_added*/,                           NULL, SVN_INVALID_REVNUM); @@ -660,7 +655,7 @@ new_node_record(void **node_baton,      case svn_node_action_delete:      case svn_node_action_replace:        SVN_ERR(commit_editor->delete_entry(nb->path, -                                          rb->rev - rb->rev_offset - 1, +                                          head_rev_before_commit,                                            rb->db->baton, rb->pool));        if (nb->action == svn_node_action_delete)          break; @@ -698,7 +693,7 @@ new_node_record(void **node_baton,            break;          default:            SVN_ERR(commit_editor->open_directory(nb->path, rb->db->baton, -                                                rb->rev - rb->rev_offset - 1, +                                                head_rev_before_commit,                                                  rb->pool, &child_baton));            push_directory(rb, child_baton, nb->path, FALSE /*is_added*/,                           NULL, SVN_INVALID_REVNUM); @@ -718,16 +713,15 @@ set_revision_property(void *baton,  {    struct revision_baton *rb = baton; -  SVN_ERR(svn_rdump__normalize_prop(name, &value, rb->pool)); - +  SVN_ERR(svn_repos__normalize_prop(&value, NULL, name, value, +                                    rb->pool, rb->pool));    SVN_ERR(svn_repos__validate_prop(name, value, rb->pool));    if (rb->rev > 0)      {        if (! svn_hash_gets(rb->pb->skip_revprops, name))          svn_hash_sets(rb->revprop_table, -                      apr_pstrdup(rb->pool, name), -                      svn_string_dup(value, rb->pool)); +                      apr_pstrdup(rb->pool, name), value);      }    else if (rb->rev_offset == -1             && ! svn_hash_gets(rb->pb->skip_revprops, name)) @@ -742,9 +736,9 @@ set_revision_property(void *baton,    /* Remember any datestamp/ author that passes through (see comment       in close_revision). */    if (!strcmp(name, SVN_PROP_REVISION_DATE)) -    rb->datestamp = svn_string_dup(value, rb->pool); +    rb->datestamp = value;    if (!strcmp(name, SVN_PROP_REVISION_AUTHOR)) -    rb->author = svn_string_dup(value, rb->pool); +    rb->author = value;    return SVN_NO_ERROR;  } @@ -781,13 +775,13 @@ set_node_property(void *baton,        value = new_value;      } -  SVN_ERR(svn_rdump__normalize_prop(name, &value, pool)); +  SVN_ERR(svn_repos__normalize_prop(&value, NULL, name, value, pool, pool));    SVN_ERR(svn_repos__validate_prop(name, value, pool));    prop = apr_palloc(nb->rb->pool, sizeof (*prop));    prop->name = apr_pstrdup(pool, name); -  prop->value = svn_string_dup(value, pool); +  prop->value = value;    svn_hash_sets(nb->prop_changes, prop->name, prop);    return SVN_NO_ERROR; @@ -988,6 +982,7 @@ close_revision(void *baton)      }    else      { +      svn_revnum_t head_rev_before_commit = rb->rev - rb->rev_offset - 1;        void *child_baton;        /* Legitimate revision with no node information */ @@ -997,7 +992,7 @@ close_revision(void *baton)                                          NULL, FALSE, rb->pool));        SVN_ERR(commit_editor->open_root(commit_edit_baton, -                                       rb->rev - rb->rev_offset - 1, +                                       head_rev_before_commit,                                         rb->pool, &child_baton));        SVN_ERR(commit_editor->close_directory(child_baton, rb->pool)); | 
