Checkout
 

sussman in subversion

* STATUS: nominate svnsync bugfix for 1.6.x.
* STATUS: nominate svnsync bugfix for 1.5.x.
Re-add new error code for 1.7, as gstein suggested.

* subversion/include/svn_error_codes.h:

(SVN_ERR_RA_SVN_EDIT_ABORTED): re-add this new error code for 1.7.

* subversion/libsvn_ra_svn/client.c

(ra_svn_replay_range): use the new error code.

Make r38686 api-promise compatible with 1.6.5 and and 1.5.x backport.

* subversion/include/svn_error_codes.h:

(SVN_ERR_RA_SVN_EDIT_ABORTED): remove the new error code.

* subversion/libsvn_ra_svn/client.c

(ra_svn_replay_range): use SVN_ERR_RA_SVN_IO_ERROR.

Fix two serious bugs in libsvn_ra_svn and svnsync.

Working together, these bugs cause a situation whereby if 'svnsync

sync' from svnserve to apache ever encounters an error, a half-written

transaction is committed anyway. And then subsequent calls to

'svnsync sync' continue to snowball this behavior.

* subversion/svnsync/main.c

(get_sync_editor): put abort_edit() into the vtable.

(abort_edit): new function which calls wrapped editor's abort_edit().

* subversion/libsvn_ra_svn/client.c

(ra_svn_replay_range): notice when drive_editor2() aborts the commit.

When it does, BAIL instead of calling close_edit().

* subversion/include/svn_error_codes.h:

(SVN_ERR_RA_SVN_EDIT_ABORTED): new error code.

* COMMITTERS: oops, rassilon and kon were partial committers.
* COMMITTERS: bring 'dormant' full-committers list up to date; put it in a more visible place, right after the active ones.
Fix race condition in ra_serf which can cause infinite-loop during a commit.

Diagnosis and patch by Jon Trowbridge <jon@trowbridge.org>.

After initializing the parser, we were attempting to make it parse

response data. Apparently up till now, the server response was always

"fast enough" such that 100% of the response was waiting in the

buffer, ready to be parsed, and so __handle_xml_parser() always

succeeded.

But if you introduce latency into the server's response then parsing

might fail (the data may not be available yet), which means

'parser.done' doesn't get set. But then we *never* re-enter the

initialization block on subsequent calls, which means 'done' never

gets set, which means we're in an infinite loop waiting for 'done'.

* subversion/libsvn_ra_serf/util.c

(svn_ra_serf__handle_multistatus_only): separate parser

initialization from the "is parser done?" check. And actually examine

the status result of __handle_xml_parser()!

* www/svn_1.6_releasenotes.html: document new public historical URI syntax.
* CHANGES: make some tweaks for increased clarity.

- clarify what we mean by 'tree conflicts'

- put new switches together in a clump

- use $Header$ to remind people what a keyword is

- move features out of the bugfix section into features section

- clarify that 'pack' is an svnadmin command, and what it does

- mention new public URI syntax for (rev,path) pairs

* subversion/tests/cmdline/README: mention how to test with serf instead of neon.
HTTP protocol v2: send version-name header in PUT and PROPPATCH

requests, and have mod_dav_svn's get_resource() do an immediate OOD

check with it.

(Unable to actually test this new OOD check, since serf is still

sending a CHECKOUT before each PUT/PROPPATCH, which does its own OOD

check. But hey, it doesn't break neon tests.)

Patch started by cmpilato, continued by sussman.

* subversion/mod_dav_svn/repos.c

(do_out_of_date_check): new helper func.

(get_resource): call new helper func.

* subversion/libsvn_ra_serf/commit.c

(struct proppatch_context_t): add new base_revision field.

(setup_proppatch_headers): put version-name header in PROPPATCH request.

(setup_put_headers): put version-name header in PUT request.

(open_root, close_directory,

svn_ra_serf__change_rev_prop): fill out new field.

Teach mod_dav_svn to handle propchanges on our new 'txn','txr', 'rev' objects.

...in theory. :-) Not tested, but at least it doesn't break the test suite.

* subversion/mod_dav_svn/deadprops.c

(save_value): refactor logic to understand both protocol v1 and v2 resources.

* subversion/mod_dav_svn/repos.c

(prep_private): set exists flag, so that dav_method_proppatch won't

reject new 'txn' objects.

On the 'http-protocol-v2' branch: Teach mod_dav_svn to parse and prep

our new 'txn' and 'txr' objects.

Next up: make sure methods like PROPPATCH/PROPFIND work against 'txn'

and methods like PUT work against 'txr'.

* subversion/mod_dav_svn/repos.c

(special_subdirs): Add 'txn' and 'txr' parse patterns.

(parse_txnstub_uri): New function to parse 'txn/txn_name'.

(parse_txnroot_uri): New function to parse 'txr/txn_name/path'.

(prep_working): Make this func to handle both DeltaV 'wrk' and

new-style 'txr' objects... they're basically the same.

(prep_private): Make this func prep our new private 'txn' objects.

* subversion/mod_dav_svn/dav_svn.h

(dav_svn_root): Tweak docstring.

Begin teaching mod_dav_svn code to accept POST on 'me' resource.

* subversion/mod_dav_svn/dav_svn.h

(dav_svn__method_post): declare new POST handler.

(enum dav_svn_private_restype): two new enums for txn stubs.

* subversion/mod_dav_svn/mod_dav_svn.c

(register_hooks): hook in a new generic request handler.

(dav_svn__handler): our new generic request handler.

* subversion/mod_dav_svn/repos.c

(dav_svn__method_post): beginning of POST handler.

Teach mod_dav_svn to parse new rootstub and revstub.

* subversion/mod_dav_svn/dav_svn.h

(enum dav_svn_private_restype): add types for root-stub and rev-stub.

* subversion/mod_dav_svn/repos.c

(parse_rootstub_uri, parse_revstub_uri): new parsing functions.

(special_subdirs[]): list the new parsing functions.

* subversion/mod_dav_svn/reports/update.c

(dav_svn__update_report): allow a root-stub URI on an update

REPORT, in addition to the VCC URI.

* BRANCH-README: update.

    • ?
    /branches/http-protocol-v2/subversion/mod_dav_svn/repos.c
Catch up to trunk.
    • ?
    /branches/http-protocol-v2/build/ac-macros/sasl.m4
  1. … 121 more files in changeset.
Make serf's public get_youngest_rev() *not* use cached HEAD.

Create an internal helper func to used cached HEAD instead.

* subversion/libsvn_ra_serf/serf.c

(svn_ra_serf__get_latest_revnum): don't use the cached HEAD.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__get_youngest_rev): declare new helper func.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__get_youngest_rev): new internal helper func. tries

to use cached HEAD value first.

(svn_ra_serf__get_baseline_info): cache HEAD when we discover it.

* subversion/mod_dav_svn/reports/get-locations.c: fix source description.
Merge trunk to my branch.
    • ?
    /branches/http-protocol-v2/subversion/libsvn_client/log.c
  1. … 162 more files in changeset.
On the 'http-protocol-v2' branch:

Bugfix spotted by gstein.

* subversion/libsvn_ra_serf/options.c

(capabilities_headers_iterator_callback): compare first 3 chars of key with "SVN".

On the 'http-protocol-v2' branch:

Make serf notice and hold onto the v2 "stubs" in its session_t.

This should happen right in the initial ra_open() call, when the RA

session kicks off.

* subversion/libsvn_ra_serf/options.c

(capabilities_headers_iterator_callback): notice the new v2 stub

headers, and save the values in the master session_t.

* subversion/libsvn_ra_serf/ra_serf.h

(struct svn_ra_serf__session_t): add (cached) youngest_rev field.

* subversion/libsvn_ra_serf/serf.c

(svn_ra_serf__open): initialize session's youngest_rev field.

(svn_ra_serf__get_latest_revnum): try to return cached youngest_rev first!

Sync my branch with trunk.
    • ?
    /branches/http-protocol-v2/tools/dist/gen_nightly_ann.py
    • ?
    /branches/http-protocol-v2/tools/bdb/whatis-rep.py
    • ?
    /branches/http-protocol-v2/configure.ac
  1. … 99 more files in changeset.
On the 'http-protocol-v2' branch:

Unify all serf OPTIONS requests to go through svn_ra_serf__create_options_req():

- always send a request body

- always fill in the session->capabilities hash

- pave the way for always receiving & storing protocol v2 "stubs"

* subversion/libsvn_ra_serf/ra_serf.h

(SERF_CAPABILITY_YES, SERF_CAPABILITY_NO,

SERF_CAPABILITY_SERVER_YES): new constants shared by serf.c and options.c,

to replace 'static char *' vars.

* subversion/libsvn_ra_serf/options.c

(struct options_response_ctx_t): add pool field.

(options_response_handler): fill in pool field.

(capabilities_headers_iterator_callback): moved here from serf.c

-- slightly tweaked to use new baton.

(options_response_handler): parse the capabilities headers.

* subversion/libsvn_ra_serf/serf.c

(capability_yes, capability_no, capability_server_yes): removed.

(struct capabilities_response_baton): removed.

(capabilities_headers_iterator_callback): removed.

(capabilities_response_handler): removed.

(exchange_capabilities): simplify! just call __create_options_req().

On the 'http-protocol-v2' branch:

Getting ready to unify serf's OPTIONS code.

No new functionality, but at least dumb wrapper doesn't break tests. :-)

* subversion/libsvn_ra_serf/options.c

(struct options_response_ctx_t,

options_response_handler): new response handler for __create_options_req()

(svn_ra_serf__create_options_req): use new response handler.

* subversion/libsvn_ra_serf/ra_serf.h

(struct svn_ra_serf__session_t): add 5 new url 'stubs' for v2 protocol.

On the 'http-protocol-v2' branch:

* subversion/mod_dav_svn/mod_dav_svn.c

(dav_svn__get_root_stub): oops, forgot to implement

On the 'http-protocol-v2' branch:

Followup to r34386 (http protocol v2 OPTIONS stubs), based on gstein's review.

* subversion/include/svn_dav.h

(SVN_DAV_ROOT_STUB_HEADER, SVN_DAV_PEGREV_STUB_HEADER,

SVN_DAV_REV_STUB_HEADER, SVN_DAV_YOUNGEST_REV_HEADER):

remove the "X-" prefix on these headers.

* subversion/mod_dav_svn/dav_svn.h

(DAV_SVN__*_STUB): delete these constants...

(dav_svn__get_*_stub): create these five accessor functions instead.

* subversion/mod_dav_svn/mod_dav_svn.c

(dav_svn__get_*_stub): implement the five accessor functions here,

in terms of the configurable 'special' uri.

* subversion/mod_dav_svn/version.c

(get_option): use %ld instead of deprecated SVN_REVNUM_T_FMT.

update calls to new accessors.

Catch up with ^/trunk
    • ?
    /branches/http-protocol-v2/subversion/libsvn_wc/status.c
  1. … 17 more files in changeset.
Weekly sync with trunk.
  1. … 82 more files in changeset.
A periodic 'svn merge ^/trunk' to this feature branch.
    • ?
    /branches/http-protocol-v2/subversion/libsvn_fs_base/fs.c
    • ?
    /branches/http-protocol-v2/www/getting.html
  1. … 90 more files in changeset.