Checkout Tools
  • last updated 3 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Delete issue-3067-deleted-subtrees branch, it has been merged back to trunk.
On the issue-3067-deleted-subtrees branch: Merge r33961-34008 from trunk.
  1. … 160 more files in changeset.
On the issue-3067-deleted-subtrees branch: Merge r33948-33960 from trunk.
  1. … 11 more files in changeset.
On the issue-3067-deleted-subtrees branch: Merge r33887-33948 from trunk.
  1. … 92 more files in changeset.
On the issue-3067-deleted-subtrees branch: Merge r33854-33886 from trunk.
  1. … 45 more files in changeset.
On the issue-3067-deleted-subtrees branch: Merge r33617-33853 from trunk.
  1. … 194 more files in changeset.
On the issue-3067-deleted-subtrees branch: Close out some remaining TODOs.

* subversion/libsvn_client/merge.c

(adjust_deleted_subtree_ranges): Use a subpool. Check

that svn_ra_get_deleted_rev() found a valid revision.

On the issue-3067-deleted-subtrees branch: Implement log based workaround

for svn_ra_get_deleted_rev() when querying a 1.5.x server.

* subversion/libsvn_client/merge.c

(adjust_deleted_subtree_ranges): Some comment tweaks. Remove a TODO


(calculate_remaining_ranges): Comment tweaks.

* subversion/libsvn_ra/compat.c

(log_path_del_rev_t, log_path_del_receiver): New baton and

svn_log_entry_receiver_t callback for...

(svn_ra__get_deleted_rev_from_log): ...this new fallback implementation of

svn_ra_get_deleted_rev() using svn_ra_get_log2().

* subversion/libsvn_ra/ra_loader.c

(svn_ra_get_deleted_rev): If get-deleted-rev isn't implemented

on the server then use the new svn_ra__get_deleted_rev_from_log fallback.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__get_deleted_rev_from_log): New declaration.

On the issue-3067-deleted-subtrees branch: Follow-up to 33562, remove

unnecessary structure.

Suggested by: gstein

* subversion/libsvn_ra_serf/get_deleted_rev.c

(drev_info_t): Remove.

(push_state, end_getdrev, cdata_getdrev): Use svn_string_t * instead of

drev_info_t *.

On the issue-3067-deleted-subtrees branch: Merge r33583-33616 from trunk.

  1. … 31 more files in changeset.
On the issue-3067-deleted-subtrees branch: Merge r33524-33582 from trunk.
  1. … 55 more files in changeset.
On the issue-3067-deleted-subtrees branch: Implement ra-serf version of the

get-deleted-rev RA API.

Several merge tests fail intermittently with this change with the error

svn: Error running context: An established connection was aborted by the

software in your host machine. Can't put my finger on what is wrong just


* subversion/libsvn_ra_serf/get_deleted_rev.c

Include svn_ra.h, svn_xml.h, svn_path.h, and svn_private_config.h.

(drev_state_e): New enum.

(drev_info_t, drev_context_t): New structs.

(push_state, start_getdrev, end_getdrev, cdata_getdrev,

create_getdrev_body): New functions.


(svn_ra_serf__get_deleted_rev): Implement previously empty function.

On the issue-3067-deleted-subtrees branch: Merge r33376-33523 from trunk.
  1. … 112 more files in changeset.
On the issue-3067-deleted-subtrees branch: Set svn:eol-style to file added

in r33523.

On the issue-3067-deleted-subtrees branch: Implement ra-neon version of the

get-deleted-rev RA API.

* subversion/libsvn_ra_neon/get_deleted_rev.c

Include apr_pools.h, apr_strings.h, apr_xml.h, svn_error.h, svn_pools.h,

svn_ra.h, ../libsvn_ra/ra_loader.h, svn_path.h, svn_xml.h,

private/svn_dav_protocol.h, and svn_private_config.h.

(drev_report_elements, drev_baton_t, drev_start_element,

drev_end_element): New.

(svn_ra_neon__get_deleted_rev): Implement a formerly empty shell.

* subversion/libsvn_ra_neon/ra_neon.h

(ELEM_deleted_rev_report): New SVN element enum.

* subversion/mod_dav_svn/dav_svn.h

(dav_svn__reports_list): Add 'get-deleted-rev-report' to the list of

custom Subversion reports.

* subversion/mod_dav_svn/reports/deleted-rev.c: New.

* subversion/mod_dav_svn/version.c

(deliver_report): Add 'get-deleted-rev-report'.

On the issue-3067-deleted-subtrees branch: Make svn_ra_get_deleted_rev's

path argument relative to its session argument's URL. This is consistent

with the other RA APIs.

* subversion/include/svn_ra.h

(svn_ra_get_deleted_rev): Change doc string to reflect new expectations

of path arg.

* subversion/libsvn_client/merge.c

(adjust_deleted_subtree_ranges): Pass relative path to


* subversion/libsvn_ra/ra_loader.c

(svn_ra_get_deleted_rev): Enforce relative path argument.

* subversion/libsvn_ra_local/ra_plugin.c


* subversion/svnserve/serve.c


Tweak implementations to expect relative paths.

On the issue-3067-deleted-subtrees branch: Set eol-style on new files.

* subversion/libsvn_ra_neon/get_deleted_rev.c

* subversion/libsvn_ra_serf/get_deleted_rev.c

Set eol-style to native.

On the issue-3067-deleted-subtrees branch: Implement ra-svn version of the

get-deleted-rev RA API.

* subversion/libsvn_ra_svn/client.c

(ra_svn_get_deleted_rev): Implement a formerly empty shell.

* subversion/libsvn_ra_svn/protocol

Add entry for get-deleted-rev in the main command set.

* subversion/svnserve/serve.c

(get_deleted_rev): New.

(main_commands): Add get-deleted-rev to supported commands.

On the issue-3067-deleted-subtrees branch: Rename all RA

'*get_revision_deleted' functions '*get_deleted_rev' to keep consistent

with existing RA naming scheme.

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra/ra_loader.h

* subversion/include/svn_ra.h

* subversion/libsvn_client/merge.c

* subversion/libsvn_ra_neon/ra_neon.h

* subversion/libsvn_ra_neon/session.c

* subversion/libsvn_ra_serf/ra_serf.h

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/protocol

Rename all '*get_revision_deleted' functions to '*get_deleted_rev'.

* subversion/libsvn_ra_neon/get_rev_deleted.c

Renamed from this...

* subversion/libsvn_ra_neon/get_deleted_rev.c this. Rename svn_ra_neon__get_revision_deleted to


* subversion/libsvn_ra_serf/get_rev_deleted.c

Renamed from this...

* subversion/libsvn_ra_serf/get_deleted_rev.c

...this. Rename svn_ra_serf__get_revision_deleted to


On the issue-3067-deleted-subtrees branch: Merge r33301-33375 from trunk.
  1. … 144 more files in changeset.
On the issue-3067-deleted-subtrees branch: Avoid spurious tree conflicts when

a subtree file needs some changes during a merge but is ultimately deleted.

As part of this fix I've reimplemented the helper function which ensures that

we don't describe non-existent subtree paths to the merge editor and thus

break the merge. I did this with the obvious goal of solving the problem

this branch was created to address,, but this

change should also solve any analogous problems for *directory* subtrees,

when (if) that behavior is implemented. This change also goes some way to

making the subtree merge code marginally easier to understand (o.k., I

might be guilty of extreme optimism here, but I can dream).

There are still two significant TODOs left on this branch:

1) Handle the case of 1.6 clients and 1.5 servers: The latter won't have

svn_ra_get_revision_deleted implemented and the solution in this commit

relies on that API.

2) Implement svn_ra_get_revision_deleted() for ra_neon, ra_svn, and


* subversion/libsvn_client/merge.c

(prepare_subtree_ranges): Rename this...

(adjust_deleted_subtree_ranges): this. Change signature to accept

the actual svn_client__merge_path_t *child being processed, rather than

just the child's remaining_ranges member. Remove the reference argument

child_deleted_or_nonexistant and handle this situation entirely within

this function.

(filter_merged_revisions): Simplify what this function does, specifically

stop calling prepare_subtree_ranges() and remove arguments from signature

that were only needed for this call. Rework the doc string to reflect

these signature changes and to better describe what this function does.

Also, use a subpool for all but the final allocation of


(calculate_remaining_ranges): Update call to filter_merged_revisions().

Call adjust_deleted_subtree_ranges() directly since for subtrees, since

filter_merged_revisions() no longer does that work.

* subversion/tests/cmdline/


subtree_gets_changes_even_if_ultimately_deleted): Remove comments about

XFail status.

(test_list): Remove XFail from new_subtrees_should_not_break_merge and


On the issue-3067-deleted-subtrees branch fix some doc string typos.

Found by: arfrever

* subversion/include/svn_ra.h

(svn_ra_get_revision_deleted): It's oh so lovely when the arguments the

doc string mentions actually agree with the argument names in the

declaration. Don't you agree?

On the issue-3067-deleted-subtrees branch add new RA interface


This change implements svn_ra_get_revision_deleted for ra_local only.

Holding off on ra_serf, ra_neon, and ra_svn implementations until I'm sure

this (branch) is going to work.

* subversion/include/svn_ra.h

* subversion/libsvn_ra/ra_loader.c

(svn_ra_get_revision_deleted): New function.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t): Add get_revision_deleted.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_revision_deleted): New implementation.

(ra_local_vtable): Add svn_ra_local__get_revision_deleted.

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__get_revision_deleted): New (unimplemented) function.

* subversion/libsvn_ra_neon/get_rev_deleted.c:

New file for svn_ra_neon__get_revision_deleted implementation.

* subversion/libsvn_ra_neon/session.c

(neon_vtable): Add svn_ra_neon__get_revision_deleted.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__get_revision_deleted): New (unimplemented) function.

* subversion/libsvn_ra_serf/get_rev_deleted.c:

New file for svn_ra_serf__get_revision_deleted implementation.

* subversion/libsvn_ra_serf/serf.c

(serf_vtable): Add svn_ra_serf__get_revision_deleted.

* subversion/libsvn_ra_svn/client.c

(ra_svn_get_revision_deleted): New (unimplemented) function.

(ra_svn_vtable): Add ra_svn_get_revision_deleted.

Create new branch, "issue-3067-deleted-subtrees", to develop a fix