[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: r40202 broke commit over ra_neon (Re: svn commit: r40202 - trunk/subversion/libsvn_ra_neon)

From: Hyrum K. Wright <hyrum_wright_at_mail.utexas.edu>
Date: Tue, 8 Dec 2009 07:00:59 -0600

Any chance patch submissions can include [PATCH] in the subject, per HACKING guidelines?

Thanks,
-Hyrum

On Dec 8, 2009, at 12:14 AM, Kannan wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Stefan Sperling wrote:
> [..]
>> You're correct, the place you point out is the place where my_bc_url
>> is initialised. If we could canonicalise it right there without causing
>> breakage elsewhere (make check over ra_neon should tell us) then please
>> send an updated patch. I'd say if changing this ends up causing breakage
>> we can apply your original patch, and then try to fix the breakage and
>> canonicalise my_bc_url earlier in a separate patch.
>
> Thank you Stefan. `apr_hash_get()' returns a struct comprising of two
> values(data, len), of which we need to canonicalise 'data' to store it
> in `my_bc_url'. So, canonicalisation right there fails (AFAICS).
> Attaching the updated original patch herewith.
>
> [[[
> Log:
> Make a proper fix to resolve some deprecation warnings using
> `svn_path_url_add_component2()' by canonicalizing the base before
> passing to the above method.
>
> [in subversion/libsvn_ra_neon]
>
> * commit.c
> (get_version_url, create_activity, commit_add_dir, commit_add_file
> commit_close_file, add_child, commit_delete_entry): Use
> `svn_path_url_add_component2()'.
> (svn_ra_neon__get_commit_editor, checkout_resource, apply_revprops):
> Canonicalize the base before passing to
> `svn_path_url_add_component2()'.
>
> * props.c
> (svn_ra_neon__get_baseline_info): Canonicalize the base before
> passing to `svn_path_url_add_component2()'.
>
> Found and Suggested by: stsp
> Patch by: Kannan R <kannanr_at_collab.net>
> ]]]
>
>
> - --
> Thanks & Regards,
> Kannan
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iQEVAwUBSx3u33lTqcY7ytmIAQLkpgf/Ye/v0jRCE65QFxYh5dr/oR5n/DoijIhO
> fVVzsu/k9Cc/6SuKbCg6eCPr9rHaDRVvBCQy+kOHC3HYyNOdv37wUT0LGqc94LHg
> RVyTq4R9EcIBFB05z3C7OD3UWso6ngaOteUD4+fe/PvPql51GiqQ+gPKzpmiZaJN
> 23IN13gadZOXg8079N6yLv1ui+9OIG8i3UQ4ON9v6s5h8+euxMYv2A3qe6pjVaW6
> qXZKuAiL4/Qj7YMfOtEG7rmNsGtbukPFJ2kZ7p+Xu9B13Bxv2tOaGohlVf31Ypj7
> fJKiKunAbGJM4mN6L/cwlnQHIWIxSMvNzEex9ULkCym0AUTZrxtuHA==
> =d3CC
> -----END PGP SIGNATURE-----
> Index: subversion/libsvn_ra_neon/commit.c
> ===================================================================
> --- subversion/libsvn_ra_neon/commit.c (revision 885339)
> +++ subversion/libsvn_ra_neon/commit.c (working copy)
> @@ -203,9 +203,9 @@
> the version resource URL of RSRC. */
> if (parent && parent->vsn_url && parent->revision == rsrc->revision)
> {
> - rsrc->vsn_url = svn_path_url_add_component(parent->vsn_url,
> - rsrc->name,
> - rsrc->pool);
> + rsrc->vsn_url = svn_path_url_add_component2(parent->vsn_url,
> + rsrc->name,
> + rsrc->pool);
> return SVN_NO_ERROR;
> }
>
> @@ -231,7 +231,7 @@
> rsrc->revision,
> pool));
>
> - url = svn_path_url_add_component(bc_url.data, bc_relative.data, pool);
> + url = svn_path_url_add_component2(bc_url.data, bc_relative.data, pool);
> }
>
> /* Get the DAV:checked-in property, which contains the URL of the
> @@ -325,8 +325,8 @@
> the activity, and create the activity. The URL for our activity
> will be ACTIVITY_COLL/UUID */
> SVN_ERR(get_activity_collection(cc, &activity_collection, FALSE, pool));
> - url = svn_path_url_add_component(activity_collection->data,
> - uuid_buf, pool);
> + url = svn_path_url_add_component2(activity_collection->data,
> + uuid_buf, pool);
> SVN_ERR(svn_ra_neon__simple_request(&code, cc->ras,
> "MKACTIVITY", url, NULL, NULL,
> 201 /* Created */,
> @@ -338,8 +338,8 @@
> if (code == 404)
> {
> SVN_ERR(get_activity_collection(cc, &activity_collection, TRUE, pool));
> - url = svn_path_url_add_component(activity_collection->data,
> - uuid_buf, pool);
> + url = svn_path_url_add_component2(activity_collection->data,
> + uuid_buf, pool);
> SVN_ERR(svn_ra_neon__simple_request(&code, cc->ras,
> "MKACTIVITY", url, NULL, NULL,
> 201, 0, pool));
> @@ -373,7 +373,7 @@
> rsrc->pool = pool;
> rsrc->revision = revision;
> rsrc->name = name;
> - rsrc->url = svn_path_url_add_component(parent->url, name, pool);
> + rsrc->url = svn_path_url_add_component2(parent->url, name, pool);
> rsrc->local_path = svn_path_join(parent->local_path, name, pool);
>
> /* Case 1: the resource is truly "new". Either it was added as a
> @@ -382,7 +382,7 @@
> URL by the rules of deltaV: "copy structure is preserved below
> the WR you COPY to." */
> if (created || (parent->vsn_url == NULL))
> - rsrc->wr_url = svn_path_url_add_component(parent->wr_url, name, pool);
> + rsrc->wr_url = svn_path_url_add_component2(parent->wr_url, name, pool);
>
> /* Case 2: the resource is already under version-control somewhere.
> This means it has a VR URL already, and the WR URL won't exist
> @@ -517,8 +517,7 @@
> return svn_error_createf(SVN_ERR_RA_DAV_MALFORMED_DATA, NULL,
> _("Unable to parse URL '%s'"), locn);
> }
> -
> - rsrc->wr_url = apr_pstrdup(rsrc->pool, parse.path);
> + rsrc->wr_url = svn_uri_canonicalize(parse.path, rsrc->pool);
> ne_uri_free(&parse);
>
> return SVN_NO_ERROR;
> @@ -714,7 +713,7 @@
> SVN_ERR(checkout_resource(parent->cc, parent->rsrc, TRUE, NULL, pool));
>
> /* create the URL for the child resource */
> - child = svn_path_url_add_component(parent->rsrc->wr_url, name, pool);
> + child = svn_path_url_add_component2(parent->rsrc->wr_url, name, pool);
>
> /* Start out assuming that we're deleting a file; try to lookup the
> path itself in the token-hash, and if found, attach it to the If:
> @@ -729,8 +728,8 @@
> const char *token_header_val;
> const char *token_uri;
>
> - token_uri = svn_path_url_add_component(parent->cc->ras->url->data,
> - path, pool);
> + token_uri = svn_path_url_add_component2(parent->cc->ras->url->data,
> + path, pool);
> token_header_val = apr_psprintf(pool, "<%s> (<%s>)",
> token_uri, token);
> extra_headers = apr_hash_make(pool);
> @@ -888,9 +887,9 @@
> "source" argument to the COPY request. The "Destination:"
> header given to COPY is simply the wr_url that is already
> part of the child object. */
> - copy_src = svn_path_url_add_component(bc_url.data,
> - bc_relative.data,
> - workpool);
> + copy_src = svn_path_url_add_component2(bc_url.data,
> + bc_relative.data,
> + workpool);
>
> /* Have neon do the COPY. */
> SVN_ERR(svn_ra_neon__copy(parent->cc->ras,
> @@ -1088,9 +1087,9 @@
> "source" argument to the COPY request. The "Destination:"
> header given to COPY is simply the wr_url that is already
> part of the file_baton. */
> - copy_src = svn_path_url_add_component(bc_url.data,
> - bc_relative.data,
> - workpool);
> + copy_src = svn_path_url_add_component2(bc_url.data,
> + bc_relative.data,
> + workpool);
>
> /* Have neon do the COPY. */
> SVN_ERR(svn_ra_neon__copy(parent->cc->ras,
> @@ -1271,9 +1270,9 @@
> svn_ra_neon__set_header
> (extra_headers, "If",
> apr_psprintf(pool, "<%s> (<%s>)",
> - svn_path_url_add_component(cc->ras->url->data,
> - file->rsrc->url,
> - request->pool),
> + svn_path_url_add_component2(cc->ras->url->data,
> + file->rsrc->url,
> + request->pool),
> file->token));
>
> if (pb->base_checksum)
> @@ -1389,7 +1388,7 @@
> vcc, NULL,
> &svn_ra_neon__checked_in_prop, pool));
> baseline_rsrc.pool = pool;
> - baseline_rsrc.vsn_url = baseline_url->data;
> + baseline_rsrc.vsn_url = svn_uri_canonicalize(baseline_url->data, pool);
>
> /* To set the revision properties, we must checkout the latest baseline
> and get back a mutable "working" baseline. */
> @@ -1452,6 +1451,8 @@
> /* ### should we perform an OPTIONS to validate the server we're about
> ### to talk to? */
>
> + cc->ras->act_coll = svn_uri_canonicalize(cc->ras->act_coll, pool);
> +
> /*
> ** Create an Activity. This corresponds directly to an FS transaction.
> ** We will check out all further resources within the context of this
> Index: subversion/libsvn_ra_neon/props.c
> ===================================================================
> --- subversion/libsvn_ra_neon/props.c (revision 885339)
> +++ subversion/libsvn_ra_neon/props.c (working copy)
> @@ -991,7 +991,10 @@
>
> /* maybe return bc_url to the caller */
> if (bc_url)
> - *bc_url = *my_bc_url;
> + {
> + bc_url->data = svn_uri_canonicalize(my_bc_url->data, pool);
> + bc_url->len = my_bc_url->len;
> + }
>
> if (latest_rev != NULL)
> {
Received on 2009-12-08 14:01:35 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.