Checkout Tools
  • last updated 8 hours ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 846235 is being indexed.

Fix for occasional unhandled deadlock errors, as seen, for example,


* subversion/libsvn_fs/trail.c (svn_fs__retry_txn): Check the whole

stack for a deadlock error.

Document some functions, before I lose track and start muttering to

myself again.

* tools/cvs2svn/







CollectData.add_branch_point): Document.

Fix issue #1348: ghudson-style 'deleted' regression bug.

Whoops, it turns out that svn_wc_remove_from_revision_control wasn't

noticing 'deleted' entries when reading the entries file; so when it

wrote the entries file to disk, it would accidentally remove 'deleted'

entries as well. Ouch.

I wonder if there are other wc functions like this: read entries,

modify them, write to disk. They *all* need to be noticing 'deleted'


* libsvn_wc/adm_ops.c (svn_wc_remove_from_revision_control): when

reading the entries file, *notice* deleted entries.

* (hudson_part_2_1): tweak test to be correct.

(test_list): remove XFail(), run as a normal regression test.

* project_faq.html: remove obsolete "diff3 on win32" question.

add new "what is a baton?" question.

Tweak a bit, add a small suggestion.
    • -12
    • +18
* schema-tradeoffs.txt: new file discussing the fs schema's impact on users.
    • -0
    • +108
Don't bother to close objects that refcounting will close anyway,

don't remove files that don't need to be removed, and stop using ctx

as a stalking horse for global variables.

(With thanks to Greg Stein for the code review.)

* tools/cvs2svn/

(SymbolicNameTracker.close, TreeMirror.close): Removed.

(Dump.close): Don't close the tree mirror anymore, let refcounting

do it.

(Commit.commit): Take tag_tracker and branch_tracker as arguments.

(pass4): Initialize tag_tracker and branch_tracker here, and pass

them to c.commit.

(main): Don't store tag_tracker and branch_tracker in ctx, and don't

close the trackers. They are initialized in pass4() now, and will

be closed implicitly via refcounting.

* (hudson_part_2_1): new regression test for issue #1348.

(test_list): run it as XFail().

Fix 'svn diff URL URL' edge case.

If the changeset adds an empty file, no diff output was shown at all

for that event. That's because the repos-diff editor was doing a diff

between two empty files. But we still need to show the user that

*some* kind of add-event happened. (And the 'patch' program still

interprets an empty diff as a signal to create an empty file.)

Note: there's still a related ra_dav merge bug; see issue #1347.

* libsvn_client/diff.c (diff_cmd_baton): add new 'force_diff_output' flag.

(diff_file_changed): notice and honor this new flag.

(diff_file_added): temporarily activate this flag before calling

diff_file_changed, then deactivate it when finished.

    • -4
    • +20
When compiling the svn book, handle the case where "svnversion ."

doesn't work (i.e. we don't have an svnversion executable in our $PATH

or we aren't building inside a checked-out working copy).

Patch by: Bruce A. Mah <>

(From issue #1340.)

* doc/book/Makefile (BOOK_VERSION_SOURCE): Check to see if "svnversion

." produces an error before trying to use its output. Provide a

fallback for the version.xml entity if this doesn't work.

* doc/book/book.xml: Let version.xml provide the complete subtitle


As described in new versions of patch

accept spaces in filenames. This causes patch to behave incorrectly

on the output of a subversion diff between two branches.

Patch by: David Kimdon <>

Suggested by: John Lenz <>

* subversion/libsvn_client/diff.c (diff_file_changed): Delimit filename with

tab instead of space since some versions of patch accept space as a valid

character in a filename.

    • -4
    • +4
Reword security warning in ~/.subversion/servers file.

Patch by: Eric M. Hopper <>

Erik Abele <>

(From issue #1344.)

* COMMITTERS: update email address -- ACM's forwarding is broken

Patch from Marc Haesen, issue #1337:

Make config variable 'store-password = no' actually work.

    • -1
    • +2
Stop installing the info pages for svn's ancient design document.

It's one thing to keep original design doc around for historical interest,

but ridiculous to install it as system documentation. :-)

Patch by: Olaf Hering <>

(From issue #1329.)

* project_faq.html: the variable is named neon-debug-mask, not http-debug.
Continue working on tag and branch support:

* tools/cvs2svn/


Replace TAGS_FILE and BRANCHES_FILE constants.

(SymbolicNameTracker.__init__): Open two db files, document the new

key/value discipline.

(SymbolicNameTracker.close): New func.

(SymbolicNameTracker.track_names): Start filling in.

(pass4): Add a note about not blocking non-trunk revisions.

(Commit.__init__): Oops, don't initialize tag and branch trackers

here, as mistakenly introduced in revision 6137. Instead...

(main): Init trackers here, as part of the operation ctx, and

close them when done.

Rename a constant, for consistency with other upcoming changes:

* tools/cvs2svn/


(TreeMirror.__init__): Adjust accordingly.

Start branch and tag support:

* tools/cvs2svn/

(TAGS_DIR, BRANCHES_DIR): New constants.

(Dump.start_revision): Increment to new rev right away, return it.

(Dump.end_revision): Removed.

(SymbolicNameTracker, TagTracker, BranchTracker): New classes.

(Commit.__init__): Init new tag_tracker, branch_tracker vars.

(Commit.commit): Use the new trackers, and adjust for the dumper's

new revision bumping behavior.

Polish off a "FIXME" by making pruning optional:

* tools/cvs2svn/

(main): Take --no-prune option, set new field ctx.prune accordingly.

(Dump.delete_path): Take prune argument, pass it along to


* tools/cvs2svn/design-notes.txt: Clarify an important point about

branches and tags in the .revs format.

Add some code to associate extracted function names with the libraries

that they belong to.

* build/generator/

(scan_headers): new function to scan all headers

(headers_to_libraries): new dict to map header names to library names

(__main__): adjust the types of invocation

    • -4
    • +80
Aha, resolves the scoping

mystery referred to in revision 6130:

* tools/cvs2svn/

(interleaved_commits): Clarify the scoping situation.

"Scope: it's what's for dinner."

* tools/cvs2svn/

(interleaved_commits): Deal with odd scoping lossage.

Fix copy-n-pasto:

* tools/cvs2svn/

(split_branch): Oops, get the name right.

Add two new tests, and fix some infrastructure:

* tools/cvs2svn/

(parse_log.LineFeeder): New miniclass.

(parse_log): Use run_svn filtered through LineFeeder. See

for a description of the flow control issues thus resolved.

(interleaved_commits): New test.

(split_branch): Start of a new test, XFail for now.

(test_list): Run the new tests.

* tools/cvs2svn/test-data/main-cvsrepos/CVSROOT/,


New directory, new file.

* tools/cvs2svn/test-data/main-cvsrepos/interleaved/:

New test data.

* tools/cvs2svn/test-data/main-cvsrepos/proj/:

Extend test data.

  1. … 7 more files in changeset.
Finally, I can reveal the *real* reason why I wrote the path-based

editor driver. Ladies and gents, meet svn_repos_replay(). A

replacement not so much for svn_repos_dir_delta, but for at least a

whole class of functionality that svn_repos_dir_delta was never

intended to handle.

I should note that, to my great joy, not only does this code solve

issue #1290 (an svnadmin dump edge-case), but it also seems to greatly

increase the speed of that operation. On a 2.4 GHz machine with a

copy of the repository as of revision 6084, svnadmin

dump used to take 9 1/2 minutes to dump all 6084 revisions. Now, it

takes 5 1/2 minutes. I also saw about 20% in speed improvement

running 'svnlook changed' over the 6084 revisions of that repository,


Enjoy. :-)

* subversion/include/svn_repos.h

(svn_repos_replay): New hotness. (For "Old n' busted", see


* subversion/libsvn_repos/replay.c

New file.

* subversion/libsvn_repos/dump.c

(svn_repos_dump_fs): Use the new svn_repos_replay() for every

revision except the first of a non-incremental dump. Update call

to svn_repos_dir_delta(), which is still called in that one case

that the new function is not.

* subversion/svnlook/main.c

(generate_delta_tree): Use the new svn_repos_replay() instead of


* subversion/libsvn_repos/delta.c

(svn_repos_dir_delta): Remove 'use_copy_history' parameter.

(struct context): Remove 'use_copy_history' member.

(add_file_or_dir): Remove support for use_copy_history stuffs.

* subversion/libsvn_repos/reporter.c

(svn_repos_finish_report): Update call to svn_repos_dir_delta().

* subversion/mod_dav_svn/merge.c

(dav_svn__merge_response): Update call to svn_repos_dir_delta().

* subversion/mod_dav_svn/update.c

(dav_svn__update_report): Update call to svn_repos_dir_delta().

* subversion/tests/libsvn_repos/repos-test.c

(dir_deltas): Update call to svn_repos_dir_delta().

    • -12
    • +24
    • -0
    • +340
    • -29
    • +4
    • -1
    • +0
    • -9
    • +16
    • -1
    • +0
More pool cleanup after the error interface cleanup of rev 3719, and

another round of cleanup in 5523. Since we removed the need for a

pool, we no longer need a special handler_baton, nor do we need to

stuff the pool into the item_baton.

* bindings/swig/swigutil_py.c:

(struct item_baton): remove the pool member.

(struct handler_baton): removed.

(make_baton): no need to initialize the pool member.

(thunk_window_handler): the baton will just be the handler callable,

rather than a baton structure.

(thunk_apply_textdelta): don't bother with a handler_baton

structure, just pass the callable directly as the window

handler's baton.

Make some minor mods to to get a basic test of the Editor

bindings code to run. This script needs more work to bring it back in

line with the current svnlook code.

* tools/examples/

(SVNLook.__init__): use 'repos_ptr' as the variable name for holding

a pointer to the repos object, rather than 'repos' since the

latter conflicts with the imported module.

(ChangedEditor.change_dir_prop): fix typo -- use dir_baton, not baton

(ChangedEditor.close_file): fix order of parameters

Fix up the apply_textdelta handling for Python-based editors. We want

to allow them to return None, so they can easily refer to the new

svn_delta_noop_window_handler function.

This also reverts the changes made to this file in revs 6120 and 6123.

* bindings/swig/swigutil_py.c (thunk_apply_textdelta): revert the

changes made in 6120 and 6123. Instead, map the None response to

the new svn_delta_noop_window_handler function introduced in 6120

(and renamed in 6122).