subversion

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

Changeset 1857624 is being indexed.

Report a revision's size on disk.

This adds an 'svnadmin rev-size' CLI and a libsvn_fs ioctl API to report

the total size in bytes of the representation on disk of a revision,

including rev-props, excluding FSFS indexes.

$ svnadmin rev-size /path/to/repo -r1

1337 bytes in revision 1

* subversion/svnadmin/svnadmin.c

(cmd_table): Add and document the 'rev-size' command.

(revision_size,

subcommand_rev_size): New.

* subversion/include/private/svn_fs_fs_private.h

(svn_fs_fs__ioctl_revision_size_input_t,

svn_fs_fs__ioctl_revision_size_output_t,

SVN_FS_FS__IOCTL_REVISION_SIZE): New.

* subversion/libsvn_fs_fs/fs.c

(fs_ioctl): Handle SVN_FS_FS__IOCTL_REVISION_SIZE.

* subversion/libsvn_fs_fs/fs_fs.h

* subversion/libsvn_fs_fs/stats.c

(svn_fs_fs__revision_size,

rev_size_index_entry_cb,

rev_size_baton_t): New.

* subversion/libsvn_fs_fs/revprops.h

* subversion/libsvn_fs_fs/revprops.c

(svn_fs_fs__get_revision_props_size): New.

* tools/client-side/bash_completion

(_svnadmin): Add 'rev-size'.

* STATUS: As far as I know, Subversion 1.8.x is end of life.

* STATUS: Nominate r1857391
* STATUS: Nominate r1857391
* STATUS: Nominate r1857391.

* STATUS: Nominate r1857391.

Fix Doxygen mark-up, following r1857435.
* publish/download.html

(#pre-releases): Fix broken markup that was causing comments to

be rendered on the page.

Reimplement fsfs private operations required by `svnfsfs` (stats, dump index,

load index) as "ioctls".

Technically we achieve this by introducing the new svn_fs_ioctl() API that

adds a generic way of performing backend-specific I/O operations.

This change serves two purposes:

- It allows us to properly expose FS-specific details and invoke FS-specific

operations everywhere without necessarily promoting them into a proper

public API (the ioctl code itself may be made either public or private,

depending on the requirements).

- It solves a potential dependency/linking problem where tools like `svnfsfs`

work through the libsvn_fs's loader, but also have to load and call private

APIs from libsvn_fs_fs thus ignoring the loader. The latter part may

potentially cause issues with the global shared state, etc. With the

patch, all such operations always go through the FS loader.

* subversion/include/svn_fs.h

(svn_fs_ioctl, SVN_FS_DECLARE_IOCTL_CODE, svn_fs_ioctl_code_t): New.

* subversion/include/svn_error_codes.h

(SVN_ERR_FS_UNRECOGNIZED_IOCTL_CODE): New error code.

* subversion/include/private/svn_fs_fs_private.h

(svn_fs_fs__get_stats, svn_fs_fs__dump_index, svn_fs_fs__load_index):

These functions are now implemented as...

(SVN_FS_FS__IOCTL_GET_STATS, SVN_FS_FS__IOCTL_DUMP_INDEX,

SVN_FS_FS__IOCTL_LOAD_INDEX): ...these new ioctls, which ...

(svn_fs_fs__ioctl_get_stats_input_t, svn_fs_fs__ioctl_get_stats_output_t,

svn_fs_fs__ioctl_dump_index_input_t, svn_fs_fs__ioctl_load_index_input_t):

...use these new structures.

* subversion/libsvn_fs/fs-loader.h

(fs_library_vtable_t.ioctl, fs_vtable_t.ioctl): New vtable members.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_ioctl): Implement the new API by forwarding it to an appropriate

vtable member.

* subversion/libsvn_fs_fs/fs_fs.h

(svn_fs_fs__get_stats, svn_fs_fs__dump_index, svn_fs_fs__load_index):

These functions are now declared here.

* subversion/libsvn_fs_fs/fs.c

(): Include `svn_fs_fs_private.h`.

(fs_ioctl): Implement the ioctl dispatcher for three current fsfs-specific

operations.

(fs_vtable): Initialize the `ioctl` field.

(library_vtable): Initialize the `ioctl` field to NULL.

* subversion/libsvn_fs_fs/dump-index.c,

subversion/libsvn_fs_fs/load-index.c,

subversion/libsvn_fs_fs/stats.c

(): Tweak includes.

* subversion/libsvn_fs_base/fs.c

(library_vtable, fs_vtable): Initialize the `ioctl` field to NULL.

* subversion/libsvn_fs_x/fs.c

(library_vtable, fs_vtable): Initialize the `ioctl` field to NULL.

* subversion/svnfsfs/dump-index-cmd.c

(dump_index): Invoke an appropriate svn_fs_ioctl().

* subversion/svnfsfs/load-index-cmd.c

(load_index): Invoke an appropriate svn_fs_ioctl().

* subversion/svnfsfs/stats-cmd.c

(subcommand__stats): Invoke an appropriate svn_fs_ioctl().

* subversion/tests/libsvn_fs/fs-test.c

(test_unrecognized_ioctl): New test.

(test_funcs): Run the new test.

* subversion/tests/libsvn_fs_fs/fs-fs-private-test.c

(get_repo_stats, dump_index, load_index): Switch to svn_fs_ioctl().

* build.conf

(svnfsfs, fs-fs-private-test): Don't link to libsvn_fs_fs.

  1. … 3 more files in changeset.
Get rid of apr_int64_t format string check in swig py configure.

This check relied on APR implementation details and broke with APR 1.7.0.

Rather than trying to guess a perfect format string to use, just use the

largest possible format and cast the argument accordingly.

Should fix build against APR 1.7.0 and later.

Suggested by: brane

* build/ac-macros/swig.m4: Remove code related to SVN_APR_INT64_T_PYCFMT.

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

(svn_swig_py_client_blame_receiver_func): Stop relying on the

SVN_APR_INT64_T_PYCFMT constant from configure. Use "L" and

acast to PY_LONG_LONG instead.

publish: merge from staging
* staging/docs/release-notes/1.12.html

(github-issue): remove; no longer relevant

* staging/docs/release-notes/1.12.html

(issues): Mention the APR 1.7.0 build problem.

publish: merge from staging
* staging/docs/release-notes/1.12.html

(conflict-resolver): Document improved support for unversioned items.

publish: merge from staging

* staging/docs/release-notes/1.12.html: Document more client- and server-side

changes, based on items in the CHANGES file.

* publish: merge from staging

* staging/docs/release-notes/1.12.html

(conflict-resolver): Document resolver features added for 1.12.

* STATUS: Nominate r1857367.

* STATUS: Nominate r1857367.

* STATUS: Nominate r1857367.

Fix memory lifetime problem in a libsvn_wc error code path.

* subversion/libsvn_wc/wc_db_update_move.c

(suitable_for_move): Calling svn_sqlite__column_text() with a NULL result

pool twice means the result of the first call becomes invalid. Store the

child_relpath variable in a pool. It is passed to path_for_error_message()

later, after another call to svn_sqlite__column_text() with a NULL result

pool has already occurred.

Crash observed on OpenBSD:

#0 strlen () at /usr/src/lib/libc/arch/amd64/string/strlen.S:125

#1 0x00000c38d5de6db7 in svn_dirent_join (

base=0xc38dfe1ef00 "/home/stsp/svn/svn-1.12.0/subversion/tests/libsvn_wc/svn-test-work/working-copies/move_update_subtree",

component=0xc390ca94fc8 '\337' <repeats 55 times>, <incomplete sequence \337><error: Cannot access memory at address 0xc390ca95000>, pool=0xc38eeceff00)

at subversion/libsvn_subr/dirent_uri.c:1007

#2 0x00000c38f686a815 in path_for_error_message (wcroot=0xc387ee3d300,

local_relpath=0xc390ca94fc8 '\337' <repeats 55 times>, <incomplete sequence \337><error: Cannot access memory at address 0xc390ca95000>,

result_pool=0xc38eeceff00) at subversion/libsvn_wc/wc_db_update_move.c:167

#3 0x00000c38f686ad1f in suitable_for_move (wcroot=0xc387ee3d300,

local_relpath=0xc387efe4ce0 "A/B", scratch_pool=0xc38eeceff00)

at subversion/libsvn_wc/wc_db_update_move.c:2192

Post-release housekeeping: bump the 1.12.x branch to 1.12.1.
Tagging release 1.12.0
    • ?
    /tags/1.12.0/subversion/include/svn_version.h
On the '1.12.x' branch: sync 'CHANGES' from trunk.
Add a release date for 1.12.0.
* STATUS: Nominate VS2019 support.
* STATUS: Nominate VS2019 support.
Add support for generating Microsoft Visual Studio 2019 project files.

* build/generator/gen_win_dependencies.py

(parse_options): Add magic numbers for Visual Studio 2019.