subversion

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

Changeset 1860188 is being indexed.

* build/generator/gen_vcnet_vcproj.py

(quote_value): Fix yet another stupid bug introduced by remote testing :(.

* build/generator/gen_win.py

(quote_define): Fix another stupid typo.

Following up on r1860175, fix typo in python code.

* build/generator/gen_vcnet_vcproj.py

(quote_define): Add missing ':'.

Fix compiling Subversion with Visual Studio 2005 and 2008 by properly escaping

the e-mail address we use for the Win32 crash handler.

* build/generator/gen_vcnet_vcproj.py

(quote_define): New function

* build/generator/gen_win.py

(get_win_defines): Quote e-mail address in defines.

(quote_define): Add function (stub).

* subversion/libsvn_subr/io.c

(io_win_check_path): Tweak comment, no functional changes.

io: Implement the functions that check for node existence using the native

Win32 APIs on Windows:

svn_io_check_path()

svn_io_check_resolved_path()

svn_io_check_special_path()

This changeset aims for two distinct things:

1) First of all, starting from r1833621, these functions were patched to stop

checking symlinks on Windows. The root cause for this change has been an

incorrect implementation of stat in APR that didn't properly distinguish

between various types of reparse points, some of which are not symlinks.

Providing the custom implementation allows us to remove the hack and

properly handle such reparse points irrespectively of the APR version

in use.

Additional details on the core of the issue can be found here:

- https://github.com/golang/go/issues/23684

- https://github.com/dotnet/corefx/issues/24250

2) These APIs are used in various performance-critical code paths such as

in the core part of `svn st`.

On Win32 the necessary answers for these particular functions can be

obtained with a single call to GetFileAttributes(), which is much faster

than using the generic stat implementations from APR 1.6.x and 1.7.x

(I believe that it would be even slower in the latter case).

A couple of quick tests show about 20%-25% improvement in the speed of

`svn st` for a large working copy. The improvement may be more significant

with indexers or virus scanners, as just asking for file attributes may

completely avoid opening a file (by retrieving the result through the

fast I/O QueryOpen).

* subversion/libsvn_subr/io.c

(FILE_ATTRIBUTE_TAG_INFO, FileAttributeTagInfo): Add these definitions

for old versions of Windows SDK.

(typedef GetFileInformationByHandleEx_t,

get_file_information_by_handle_ex_proc): New.

(win_init_dynamic_imports): Import `GetFileInformationByHandleEx()`.

(win32_get_file_information_by_handle): New helper function.

(io_win_check_path): New helper with the Win32 implementation required

for the "check path" functions.

(svn_io_check_path,

svn_io_check_resolved_path,

svn_io_check_special_path): Invoke the new helper.

(io_check_path): Undo the workaround from r1833621 that stopped passing

APR_FINFO_LINK when performing a stat.

Always use HTTPS URLs when fetching build dependencies.
Always use HTTPS URLs when fetching build dependencies.

* /home/julianfoad/src/subversion-c/tools/dev/build-svn-deps-win.pl

Change all package download URLs to https, even though most are obsolete.

* /home/julianfoad/src/subversion-c/tools/dist/nightly.sh

Use https://svn.apache.org.

Remove some packages that CollabNet is no longer officially

supporting.

* site/staging/packages.html

(Solaris, openSUSE): Remove links to CollabNet's builds.

Remove some packages that CollabNet is no longer officially

supporting.

* site/staging/packages.html

(Solaris, openSUSE): Remove links to CollabNet's builds.

Add 1.12 API docs.
    • ?
    /site/publish/docs/api/1.12/group__clnt__revisions.html
    • ?
    /site/publish/docs/api/1.12/search/all_2.js
    • ?
    /site/publish/docs/api/1.12/search/all_13.js
    • ?
    /site/publish/docs/api/1.12/search/searchdata.js
    • ?
    /site/publish/docs/api/1.12/functions_func.html
    • ?
    /site/publish/docs/api/1.12/globals_eval_w.html
    • ?
    /site/publish/docs/api/1.12/search/files_8.js
    • ?
    /site/publish/docs/api/1.12/search/search.js
  1. … 1045 more files in changeset.
* publish/docs/index.html: Link to 1.12 API docs.
* publish/docs/release-notes/index.html: Update release numbers.
* tools/dist/release.py: Update release numbers.
* publish/download.html (supported-releases): Clarify.
* publish/docs/release-notes/1.12.html: Remove WIP notice, now 1.12 is released.

Thanks to Paul Cameron for pointing it out.

Announce Subversion 1.12.0
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.