You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/03/06 12:10:05 UTC
svn commit: r1453290 [1/15] - in /subversion/branches/fsfs-format7: ./
build/ build/ac-macros/ build/generator/ build/generator/templates/
subversion/bindings/javahl/native/
subversion/bindings/javahl/src/org/apache/subversion/javahl/
subversion/bindin...
Author: stefan2
Date: Wed Mar 6 11:10:01 2013
New Revision: 1453290
URL: http://svn.apache.org/r1453290
Log:
On the fsfs-format7 branch: sync with /trunk (up to r1453266).
A minor conflict in fsfs.c has been resolved.
Added:
subversion/branches/fsfs-format7/subversion/bindings/javahl/native/VersionExtended.cpp
- copied unchanged from r1453266, subversion/trunk/subversion/bindings/javahl/native/VersionExtended.cpp
subversion/branches/fsfs-format7/subversion/bindings/javahl/native/VersionExtended.h
- copied unchanged from r1453266, subversion/trunk/subversion/bindings/javahl/native/VersionExtended.h
subversion/branches/fsfs-format7/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp
- copied unchanged from r1453266, subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp
subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InheritedProplistCallback.java
- copied unchanged from r1453266, subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InheritedProplistCallback.java
subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/VersionExtended.java
- copied unchanged from r1453266, subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/VersionExtended.java
subversion/branches/fsfs-format7/subversion/libsvn_wc/diff.h
- copied unchanged from r1453266, subversion/trunk/subversion/libsvn_wc/diff.h
subversion/branches/fsfs-format7/subversion/tests/cmdline/move_tests.py
- copied unchanged from r1453266, subversion/trunk/subversion/tests/cmdline/move_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/svndumpfilter_tests_data/empty_revisions.dump
- copied unchanged from r1453266, subversion/trunk/subversion/tests/cmdline/svndumpfilter_tests_data/empty_revisions.dump
Removed:
subversion/branches/fsfs-format7/build/ac-macros/gssapi.m4
Modified:
subversion/branches/fsfs-format7/ (props changed)
subversion/branches/fsfs-format7/CHANGES
subversion/branches/fsfs-format7/INSTALL
subversion/branches/fsfs-format7/Makefile.in
subversion/branches/fsfs-format7/build.conf
subversion/branches/fsfs-format7/build/generator/gen_base.py
subversion/branches/fsfs-format7/build/generator/gen_win.py
subversion/branches/fsfs-format7/build/generator/templates/vcnet_vcxproj.ezt
subversion/branches/fsfs-format7/build/transform_sql.py
subversion/branches/fsfs-format7/configure.ac
subversion/branches/fsfs-format7/get-deps.sh
subversion/branches/fsfs-format7/subversion/bindings/javahl/native/CreateJ.cpp
subversion/branches/fsfs-format7/subversion/bindings/javahl/native/CreateJ.h
subversion/branches/fsfs-format7/subversion/bindings/javahl/native/ProplistCallback.cpp
subversion/branches/fsfs-format7/subversion/bindings/javahl/native/ProplistCallback.h
subversion/branches/fsfs-format7/subversion/bindings/javahl/native/SVNClient.cpp
subversion/branches/fsfs-format7/subversion/bindings/javahl/native/SVNClient.h
subversion/branches/fsfs-format7/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java
subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java
subversion/branches/fsfs-format7/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
subversion/branches/fsfs-format7/subversion/bindings/swig/INSTALL
subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_types.swg
subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/3client.t
subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/9wc.t
subversion/branches/fsfs-format7/subversion/bindings/swig/python/README
subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/test_wc.rb
subversion/branches/fsfs-format7/subversion/include/private/svn_client_private.h
subversion/branches/fsfs-format7/subversion/include/private/svn_diff_tree.h
subversion/branches/fsfs-format7/subversion/include/private/svn_fs_util.h
subversion/branches/fsfs-format7/subversion/include/private/svn_temp_serializer.h
subversion/branches/fsfs-format7/subversion/include/private/svn_wc_private.h
subversion/branches/fsfs-format7/subversion/include/svn_auth.h
subversion/branches/fsfs-format7/subversion/include/svn_client.h
subversion/branches/fsfs-format7/subversion/include/svn_cmdline.h
subversion/branches/fsfs-format7/subversion/include/svn_config.h
subversion/branches/fsfs-format7/subversion/include/svn_dav.h
subversion/branches/fsfs-format7/subversion/include/svn_props.h
subversion/branches/fsfs-format7/subversion/include/svn_ra.h
subversion/branches/fsfs-format7/subversion/include/svn_ra_svn.h
subversion/branches/fsfs-format7/subversion/include/svn_repos.h
subversion/branches/fsfs-format7/subversion/include/svn_sorts.h
subversion/branches/fsfs-format7/subversion/include/svn_wc.h
subversion/branches/fsfs-format7/subversion/libsvn_client/add.c
subversion/branches/fsfs-format7/subversion/libsvn_client/blame.c
subversion/branches/fsfs-format7/subversion/libsvn_client/cat.c
subversion/branches/fsfs-format7/subversion/libsvn_client/client.h
subversion/branches/fsfs-format7/subversion/libsvn_client/cmdline.c
subversion/branches/fsfs-format7/subversion/libsvn_client/commit.c
subversion/branches/fsfs-format7/subversion/libsvn_client/commit_util.c
subversion/branches/fsfs-format7/subversion/libsvn_client/copy.c
subversion/branches/fsfs-format7/subversion/libsvn_client/copy_foreign.c
subversion/branches/fsfs-format7/subversion/libsvn_client/delete.c
subversion/branches/fsfs-format7/subversion/libsvn_client/deprecated.c
subversion/branches/fsfs-format7/subversion/libsvn_client/diff.c
subversion/branches/fsfs-format7/subversion/libsvn_client/externals.c
subversion/branches/fsfs-format7/subversion/libsvn_client/import.c
subversion/branches/fsfs-format7/subversion/libsvn_client/iprops.c
subversion/branches/fsfs-format7/subversion/libsvn_client/list.c
subversion/branches/fsfs-format7/subversion/libsvn_client/locking_commands.c
subversion/branches/fsfs-format7/subversion/libsvn_client/merge.c
subversion/branches/fsfs-format7/subversion/libsvn_client/mergeinfo.c
subversion/branches/fsfs-format7/subversion/libsvn_client/mergeinfo.h
subversion/branches/fsfs-format7/subversion/libsvn_client/patch.c
subversion/branches/fsfs-format7/subversion/libsvn_client/prop_commands.c
subversion/branches/fsfs-format7/subversion/libsvn_client/ra.c
subversion/branches/fsfs-format7/subversion/libsvn_client/relocate.c
subversion/branches/fsfs-format7/subversion/libsvn_client/resolved.c
subversion/branches/fsfs-format7/subversion/libsvn_client/status.c
subversion/branches/fsfs-format7/subversion/libsvn_client/switch.c
subversion/branches/fsfs-format7/subversion/libsvn_client/update.c
subversion/branches/fsfs-format7/subversion/libsvn_client/upgrade.c
subversion/branches/fsfs-format7/subversion/libsvn_client/util.c
subversion/branches/fsfs-format7/subversion/libsvn_delta/svndiff.c
subversion/branches/fsfs-format7/subversion/libsvn_diff/diff_tree.c
subversion/branches/fsfs-format7/subversion/libsvn_fs_base/bdb/locks-table.c
subversion/branches/fsfs-format7/subversion/libsvn_fs_base/reps-strings.c
subversion/branches/fsfs-format7/subversion/libsvn_fs_base/tree.c
subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/cached_data.c
subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/dag.c
subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/fs_fs.c
subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/temp_serializer.c
subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/transaction.c
subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/tree.c
subversion/branches/fsfs-format7/subversion/libsvn_fs_util/fs-util.c
subversion/branches/fsfs-format7/subversion/libsvn_ra/deprecated.c
subversion/branches/fsfs-format7/subversion/libsvn_ra/ra_loader.c
subversion/branches/fsfs-format7/subversion/libsvn_ra/ra_loader.h
subversion/branches/fsfs-format7/subversion/libsvn_ra/wrapper_template.h
subversion/branches/fsfs-format7/subversion/libsvn_ra_local/ra_plugin.c
subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocks.c
subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/options.c
subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/property.c
subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/ra_serf.h
subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/update.c
subversion/branches/fsfs-format7/subversion/libsvn_ra_svn/client.c
subversion/branches/fsfs-format7/subversion/libsvn_ra_svn/marshal.c
subversion/branches/fsfs-format7/subversion/libsvn_repos/authz.c
subversion/branches/fsfs-format7/subversion/libsvn_repos/repos.c
subversion/branches/fsfs-format7/subversion/libsvn_repos/rev_hunt.c
subversion/branches/fsfs-format7/subversion/libsvn_subr/config_file.c
subversion/branches/fsfs-format7/subversion/libsvn_subr/mergeinfo.c
subversion/branches/fsfs-format7/subversion/libsvn_subr/prompt.c
subversion/branches/fsfs-format7/subversion/libsvn_subr/sorts.c
subversion/branches/fsfs-format7/subversion/libsvn_subr/sqlite.c
subversion/branches/fsfs-format7/subversion/libsvn_subr/subst.c
subversion/branches/fsfs-format7/subversion/libsvn_subr/sysinfo.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/adm_crawler.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/adm_files.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/adm_ops.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/conflicts.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/conflicts.h
subversion/branches/fsfs-format7/subversion/libsvn_wc/copy.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/delete.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/deprecated.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/diff_editor.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/diff_local.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/entries.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/externals.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/info.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/lock.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/merge.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/node.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/props.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/revert.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/status.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/update_editor.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/util.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/wc-queries.sql
subversion/branches/fsfs-format7/subversion/libsvn_wc/wc_db.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/wc_db.h
subversion/branches/fsfs-format7/subversion/libsvn_wc/wc_db_pristine.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/wc_db_private.h
subversion/branches/fsfs-format7/subversion/libsvn_wc/wc_db_update_move.c
subversion/branches/fsfs-format7/subversion/libsvn_wc/workqueue.c
subversion/branches/fsfs-format7/subversion/mod_dav_svn/version.c
subversion/branches/fsfs-format7/subversion/po/de.po
subversion/branches/fsfs-format7/subversion/svn/blame-cmd.c
subversion/branches/fsfs-format7/subversion/svn/cl.h
subversion/branches/fsfs-format7/subversion/svn/conflict-callbacks.c
subversion/branches/fsfs-format7/subversion/svn/merge-cmd.c
subversion/branches/fsfs-format7/subversion/svn/notify.c
subversion/branches/fsfs-format7/subversion/svn/patch-cmd.c
subversion/branches/fsfs-format7/subversion/svn/propedit-cmd.c
subversion/branches/fsfs-format7/subversion/svn/proplist-cmd.c
subversion/branches/fsfs-format7/subversion/svn/svn.c
subversion/branches/fsfs-format7/subversion/svn/switch-cmd.c
subversion/branches/fsfs-format7/subversion/svn/update-cmd.c
subversion/branches/fsfs-format7/subversion/svnadmin/svnadmin.c
subversion/branches/fsfs-format7/subversion/svndumpfilter/svndumpfilter.c
subversion/branches/fsfs-format7/subversion/svnmucc/svnmucc.c
subversion/branches/fsfs-format7/subversion/svnserve/serve.c
subversion/branches/fsfs-format7/subversion/svnsync/svnsync.c
subversion/branches/fsfs-format7/subversion/tests/cmdline/authz_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/blame_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/copy_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/diff_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/externals_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/input_validation_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/lock_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/merge_authz_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/merge_automatic_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/merge_reintegrate_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/merge_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/patch_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/prop_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/svndumpfilter_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/svntest/actions.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/svntest/sandbox.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/svntest/verify.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/switch_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/trans_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/tree_conflict_tests.py
subversion/branches/fsfs-format7/subversion/tests/cmdline/update_tests.py
subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/range-index-test.h
subversion/branches/fsfs-format7/subversion/tests/libsvn_fs_fs/fs-pack-test.c
subversion/branches/fsfs-format7/subversion/tests/libsvn_repos/repos-test.c
subversion/branches/fsfs-format7/subversion/tests/libsvn_subr/subst_translate-test.c
subversion/branches/fsfs-format7/subversion/tests/libsvn_wc/db-test.c
subversion/branches/fsfs-format7/subversion/tests/libsvn_wc/entries-compat.c
subversion/branches/fsfs-format7/subversion/tests/libsvn_wc/op-depth-test.c
subversion/branches/fsfs-format7/subversion/tests/libsvn_wc/pristine-store-test.c
subversion/branches/fsfs-format7/subversion/tests/libsvn_wc/utils.c
subversion/branches/fsfs-format7/subversion/tests/libsvn_wc/utils.h
subversion/branches/fsfs-format7/subversion/tests/libsvn_wc/wc-queries-test.c
subversion/branches/fsfs-format7/subversion/tests/libsvn_wc/wc-test.c
subversion/branches/fsfs-format7/tools/client-side/bash_completion
subversion/branches/fsfs-format7/tools/dev/unix-build/Makefile.svn
subversion/branches/fsfs-format7/tools/dist/make-deps-tarball.sh (props changed)
subversion/branches/fsfs-format7/tools/hook-scripts/mailer/mailer.py
subversion/branches/fsfs-format7/tools/hook-scripts/mailer/tests/mailer-init.sh
subversion/branches/fsfs-format7/tools/hook-scripts/mailer/tests/mailer-t1.output
subversion/branches/fsfs-format7/tools/server-side/fsfs-stats.c
subversion/branches/fsfs-format7/tools/server-side/svnauthz.c
subversion/branches/fsfs-format7/win-tests.py
Propchange: subversion/branches/fsfs-format7/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1445081-1453266
Modified: subversion/branches/fsfs-format7/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/CHANGES?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/CHANGES (original)
+++ subversion/branches/fsfs-format7/CHANGES Wed Mar 6 11:10:01 2013
@@ -33,6 +33,7 @@ http://svn.apache.org/repos/asf/subversi
* new 'svn --version --verbose' option shows runtime environment info
* new 'svnadmin freeze' subcommand (r1376228)
* 'svndumpfilter' now supports --delta dumpfiles (r1351009, -3745)
+ * new '--drop-all-emtpy-revs' option for 'svndumpfilter' (issue #3681)
* client version info now reported to commit hooks (issue #4124)
* 'svn merge' now uses reintegrate mode automatically when needed
* 'svn' is now non-interactive when not run in a terminal device (r1424037)
Modified: subversion/branches/fsfs-format7/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/INSTALL?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/INSTALL (original)
+++ subversion/branches/fsfs-format7/INSTALL Wed Mar 6 11:10:01 2013
@@ -307,7 +307,7 @@ I. INTRODUCTION
newer. The autogen.sh script knows about that.
- 5. Serf library 1.1 or newer (http://code.google.com/p/serf/) (OPTIONAL)
+ 5. Serf library 1.2 or newer (http://code.google.com/p/serf/) (OPTIONAL)
If you want your client to be able to speak to an Apache
server (via a http:// or https:// URL), you must link against
Modified: subversion/branches/fsfs-format7/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/Makefile.in?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/Makefile.in (original)
+++ subversion/branches/fsfs-format7/Makefile.in Wed Mar 6 11:10:01 2013
@@ -48,7 +48,6 @@ SVN_APR_MEMCACHE_LIBS = @SVN_APR_MEMCACH
SVN_DB_LIBS = @SVN_DB_LIBS@
SVN_GPG_AGENT_LIBS = @SVN_GPG_AGENT_LIBS@
SVN_GNOME_KEYRING_LIBS = @SVN_GNOME_KEYRING_LIBS@
-SVN_GSSAPI_LIBS = @SVN_GSSAPI_LIBS@
SVN_KWALLET_LIBS = @SVN_KWALLET_LIBS@
SVN_MAGIC_LIBS = @SVN_MAGIC_LIBS@
SVN_SASL_LIBS = @SVN_SASL_LIBS@
@@ -126,7 +125,7 @@ LT_CXX_LIBADD = @LT_CXX_LIBADD@
INCLUDES = -I$(top_srcdir)/subversion/include -I$(top_builddir)/subversion \
@SVN_APR_INCLUDES@ @SVN_APRUTIL_INCLUDES@ @SVN_APR_MEMCACHE_INCLUDES@ \
- @SVN_DB_INCLUDES@ @SVN_GNOME_KEYRING_INCLUDES@ @SVN_GSSAPI_INCLUDES@ \
+ @SVN_DB_INCLUDES@ @SVN_GNOME_KEYRING_INCLUDES@ \
@SVN_KWALLET_INCLUDES@ @SVN_MAGIC_INCLUDES@ \
@SVN_SASL_INCLUDES@ @SVN_SERF_INCLUDES@ @SVN_SQLITE_INCLUDES@ \
@SVN_XML_INCLUDES@ @SVN_ZLIB_INCLUDES@
@@ -249,7 +248,6 @@ INSTALL_APR_MEMCACHE_LIB = $(INSTALL_LIB
INSTALL_BDB_LIB = $(INSTALL_LIB)
INSTALL_GPG_AGENT_LIB = $(INSTALL_LIB)
INSTALL_GNOME_KEYRING_LIB = $(INSTALL_LIB)
-INSTALL_GSSAPI_LIB = $(INSTALL_LIB)
INSTALL_KWALLET_LIB = $(INSTALL_LIB)
INSTALL_SERF_LIB = $(INSTALL_LIB)
INSTALL_BIN = $(LIBTOOL) --mode=install $(INSTALL)
@@ -593,8 +591,8 @@ gcov-clean:
find . -name "*.gcda" -o -name "*.gcno" -print0 | xargs -0 rm -f --
check-clean: gcov-clean
- find subversion/tests/cmdline/svn-test-work -print0 \
- -mindepth 1 -maxdepth 1 | xargs -0 rm -rf --; \
+ find subversion/tests/cmdline/svn-test-work -mindepth 1 -maxdepth 1 \
+ -print0 | xargs -0 rm -rf --; \
rm -rf subversion/tests/libsvn_fs/test-repo-* \
subversion/tests/libsvn_fs_base/test-repo-* \
subversion/tests/libsvn_fs_fs/test-repo-* \
@@ -926,4 +924,6 @@ INSTALL_EXTRA_TOOLS=\
$(MKDIR) $(DESTDIR)$(bindir); \
test -n "$$SVN_SVNMUCC_IS_SVNSYITF" && \
ln -sf svnmucc$(EXEEXT) $(DESTDIR)$(bindir)/svnsyitf$(EXEEXT); \
- ln -sf $(DESTDIR)$(bindir)/svnmucc$(EXEEXT) $(DESTDIR)$(toolsdir)/svnmucc$(EXEEXT)
+ if test "$(DESTDIR)$(bindir)" != "$(DESTDIR)$(toolsdir)"; then \
+ ln -sf $(DESTDIR)$(bindir)/svnmucc$(EXEEXT) $(DESTDIR)$(toolsdir)/svnmucc$(EXEEXT); \
+ fi
Modified: subversion/branches/fsfs-format7/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build.conf?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/build.conf (original)
+++ subversion/branches/fsfs-format7/build.conf Wed Mar 6 11:10:01 2013
@@ -57,6 +57,11 @@ private-built-includes =
subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNRepos.h
subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNClient.h
subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Version.h
+ subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended.h
+ subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LinkedLib.h
+ subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LinkedLibIterator.h
+ subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LoadedLib.h
+ subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LoadedLibIterator.h
subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Revision.h
subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_UserPasswordCallback.h
subversion/svn/svn-help.inc
@@ -1232,12 +1237,17 @@ libs = __ALL__
ra-local-test
svndiff-test vdelta-test
entries-dump atomic-ra-revprop-change wc-lock-tester wc-incomplete-tester
- diff diff3 diff4 fsfs-reorg fsfs-stats fsfs-access-map svn-bench
client-test
conflict-data-test db-test pristine-store-test entries-compat-test
op-depth-test dirent_uri-test wc-queries-test wc-test
auth-test
parse-diff-test
+
+[__MORE__]
+type = project
+path = build/win32
+libs = __ALL_TESTS__
+ diff diff3 diff4 fsfs-reorg fsfs-stats fsfs-access-map svn-bench
svn-rep-sharing-stats svn-populate-node-origins-index
[__LIBS__]
Modified: subversion/branches/fsfs-format7/build/generator/gen_base.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build/generator/gen_base.py?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/build/generator/gen_base.py (original)
+++ subversion/branches/fsfs-format7/build/generator/gen_base.py Wed Mar 6 11:10:01 2013
@@ -469,7 +469,10 @@ class TargetExe(TargetLinked):
TargetLinked.add_dependencies(self)
# collect test programs
- if self.install == 'test':
+ if 'svnauthz' in self.name: # special case
+ self.gen_obj.test_deps.append(self.filename)
+ self.gen_obj.test_helpers.append(self.filename)
+ elif self.install == 'test':
self.gen_obj.test_deps.append(self.filename)
if self.testing != 'skip':
self.gen_obj.test_progs.append(self.filename)
Modified: subversion/branches/fsfs-format7/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build/generator/gen_win.py?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/build/generator/gen_win.py (original)
+++ subversion/branches/fsfs-format7/build/generator/gen_win.py Wed Mar 6 11:10:01 2013
@@ -159,22 +159,22 @@ class GeneratorBase(gen_base.GeneratorBa
elif opt == '--with-static-openssl':
self.static_openssl = 1
elif opt == '--vsnet-version':
- if val == '2002' or re.match('7(\.\d+)?', val):
+ if val == '2002' or re.match('7(\.\d+)?$', val):
self.vs_version = '2002'
self.sln_version = '7.00'
self.vcproj_version = '7.00'
self.vcproj_extension = '.vcproj'
- elif val == '2003' or re.match('8(\.\d+)?', val):
+ elif val == '2003' or re.match('8(\.\d+)?$', val):
self.vs_version = '2003'
self.sln_version = '8.00'
self.vcproj_version = '7.10'
self.vcproj_extension = '.vcproj'
- elif val == '2005' or re.match('9(\.\d+)?', val):
+ elif val == '2005' or re.match('9(\.\d+)?$', val):
self.vs_version = '2005'
self.sln_version = '9.00'
self.vcproj_version = '8.00'
self.vcproj_extension = '.vcproj'
- elif val == '2008' or re.match('10(\.\d+)?', val):
+ elif val == '2008' or re.match('10(\.\d+)?$', val):
self.vs_version = '2008'
self.sln_version = '10.00'
self.vcproj_version = '9.00'
@@ -189,6 +189,11 @@ class GeneratorBase(gen_base.GeneratorBa
self.sln_version = '12.00'
self.vcproj_version = '11.0'
self.vcproj_extension = '.vcxproj'
+ elif re.match('^1\d+$', val):
+ self.vsversion = val
+ self.sln_version = '12.00'
+ self.vcproj_version = val + '.0'
+ self.vcproj_extension = '.vcxproj'
else:
print('WARNING: Unknown VS.NET version "%s",'
' assuming "%s"\n' % (val, '7.00'))
@@ -962,6 +967,9 @@ class WinGeneratorBase(GeneratorBase):
if target.name == "libsvnjavahl" and self.jdk_path:
fakeincludes.append(os.path.join(self.jdk_path, 'include'))
fakeincludes.append(os.path.join(self.jdk_path, 'include', 'win32'))
+
+ if target.name.find('cxxhl') != -1:
+ fakeincludes.append(self.path("subversion/bindings/cxxhl/include"))
return fakeincludes
@@ -1433,7 +1441,7 @@ class WinGeneratorBase(GeneratorBase):
def _find_serf(self):
"Check if serf and its dependencies are available"
- minimal_serf_version = (0, 3, 0)
+ minimal_serf_version = (1, 2, 0)
self.serf_lib = None
if self.serf_path and os.path.exists(self.serf_path):
if self.openssl_path and os.path.exists(self.openssl_path):
@@ -1441,7 +1449,7 @@ class WinGeneratorBase(GeneratorBase):
version = self._get_serf_version()
if None in version:
msg = 'Unknown serf version found; but, will try to build ' \
- 'ra_serf.\n'
+ 'ra_serf.'
else:
self.serf_ver = '.'.join(str(v) for v in version)
if version < minimal_serf_version:
@@ -1449,7 +1457,7 @@ class WinGeneratorBase(GeneratorBase):
msg = 'Found serf %s, but >= %s is required. ra_serf will not be built.\n' % \
(self.serf_ver, '.'.join(str(v) for v in minimal_serf_version))
else:
- msg = 'Found serf version %s\n' % self.serf_ver
+ msg = 'Found serf %s' % self.serf_ver
print(msg)
else:
print('openssl not found, ra_serf will not be built\n')
@@ -1458,6 +1466,8 @@ class WinGeneratorBase(GeneratorBase):
def _find_apr(self):
"Find the APR library and version"
+
+ minimal_apr_version = (0, 9, 0)
version_file_path = os.path.join(self.apr_path, 'include',
'apr_version.h')
@@ -1470,22 +1480,41 @@ class WinGeneratorBase(GeneratorBase):
fp = open(version_file_path)
txt = fp.read()
fp.close()
+
vermatch = re.search(r'^\s*#define\s+APR_MAJOR_VERSION\s+(\d+)', txt, re.M)
-
- major_ver = int(vermatch.group(1))
+ major = int(vermatch.group(1))
+
+ vermatch = re.search(r'^\s*#define\s+APR_MINOR_VERSION\s+(\d+)', txt, re.M)
+ minor = int(vermatch.group(1))
+
+ vermatch = re.search(r'^\s*#define\s+APR_PATCH_VERSION\s+(\d+)', txt, re.M)
+ patch = int(vermatch.group(1))
+
+ version = (major, minor, patch)
+ self.apr_version = '%d.%d.%d' % version
suffix = ''
- if major_ver > 0:
- suffix = '-%d' % major_ver
+ if major > 0:
+ suffix = '-%d' % major
if self.static_apr:
self.apr_lib = 'apr%s.lib' % suffix
else:
self.apr_lib = 'libapr%s.lib' % suffix
+
+ if version < minimal_apr_version:
+ sys.stderr.write("ERROR: apr %s or higher is required "
+ "(%s found)\n" % (
+ '.'.join(str(v) for v in minimal_apr_version),
+ self.apr_version))
+ sys.exit(1)
+ else:
+ print('Found apr %s' % self.apr_version)
def _find_apr_util(self):
"Find the APR-util library and version"
+ minimal_aprutil_version = (0, 9, 0)
version_file_path = os.path.join(self.apr_util_path, 'include',
'apu_version.h')
@@ -1497,22 +1526,42 @@ class WinGeneratorBase(GeneratorBase):
fp = open(version_file_path)
txt = fp.read()
fp.close()
+
vermatch = re.search(r'^\s*#define\s+APU_MAJOR_VERSION\s+(\d+)', txt, re.M)
-
- major_ver = int(vermatch.group(1))
+ major = int(vermatch.group(1))
+
+ vermatch = re.search(r'^\s*#define\s+APU_MINOR_VERSION\s+(\d+)', txt, re.M)
+ minor = int(vermatch.group(1))
+
+ vermatch = re.search(r'^\s*#define\s+APU_PATCH_VERSION\s+(\d+)', txt, re.M)
+ patch = int(vermatch.group(1))
+
+ version = (major, minor, patch)
+ self.aprutil_version = '%d.%d.%d' % version
suffix = ''
- if major_ver > 0:
- suffix = '-%d' % major_ver
+ if major > 0:
+ suffix = '-%d' % major
if self.static_apr:
self.aprutil_lib = 'aprutil%s.lib' % suffix
else:
self.aprutil_lib = 'libaprutil%s.lib' % suffix
+
+ if version < minimal_aprutil_version:
+ sys.stderr.write("ERROR: aprutil %s or higher is required "
+ "(%s found)\n" % (
+ '.'.join(str(v) for v in minimal_aprutil_version),
+ self.aprutil_version))
+ sys.exit(1)
+ else:
+ print('Found aprutil %s' % self.aprutil_version)
def _find_sqlite(self):
"Find the Sqlite library and version"
+ minimal_sqlite_version = (3, 7, 12)
+
header_file = os.path.join(self.sqlite_path, 'inc', 'sqlite3.h')
# First check for compiled version of SQLite.
@@ -1537,23 +1586,26 @@ class WinGeneratorBase(GeneratorBase):
fp = open(header_file)
txt = fp.read()
fp.close()
- vermatch = re.search(r'^\s*#define\s+SQLITE_VERSION\s+"(\d+)\.(\d+)\.(\d+)(?:\.\d)?"', txt, re.M)
-
- version = tuple(map(int, vermatch.groups()))
-
+ vermatch = re.search(r'^\s*#define\s+SQLITE_VERSION\s+"(\d+)\.(\d+)\.(\d+)(?:\.(\d))?"', txt, re.M)
- self.sqlite_version = '%d.%d.%d' % version
-
- msg = 'Found SQLite version %s\n'
-
- major, minor, patch = version
- if major < 3 or (major == 3 and minor < 6) \
- or (major == 3 and minor == 6 and patch < 18):
- sys.stderr.write("ERROR: SQLite 3.6.18 or higher is required "
- "(%s found)\n" % self.sqlite_version);
+ version = vermatch.groups()
+
+ # Sqlite doesn't add patch numbers for their ordinary releases
+ if not version[3]:
+ version = version[0:3]
+
+ version = tuple(map(int, version))
+
+ self.sqlite_version = '.'.join(str(v) for v in version)
+
+ if version < minimal_sqlite_version:
+ sys.stderr.write("ERROR: sqlite %s or higher is required "
+ "(%s found)\n" % (
+ '.'.join(str(v) for v in minimal_sqlite_version),
+ self.sqlite_version))
sys.exit(1)
else:
- print(msg % self.sqlite_version)
+ print('Found SQLite %s' % self.sqlite_version)
def _find_zlib(self):
"Find the ZLib library and version"
@@ -1577,9 +1629,7 @@ class WinGeneratorBase(GeneratorBase):
self.zlib_version = '%d.%d.%d' % version
- msg = 'Found ZLib version %s\n'
-
- print(msg % self.zlib_version)
+ print('Found ZLib %s' % self.zlib_version)
class ProjectItem:
"A generic item class for holding sources info, config info, etc for a project"
Modified: subversion/branches/fsfs-format7/build/generator/templates/vcnet_vcxproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build/generator/templates/vcnet_vcxproj.ezt?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/build/generator/templates/vcnet_vcxproj.ezt (original)
+++ subversion/branches/fsfs-format7/build/generator/templates/vcnet_vcxproj.ezt Wed Mar 6 11:10:01 2013
@@ -45,7 +45,7 @@
[end][end] <PropertyGroup Label="UserMacros" />
<PropertyGroup>
[for configs][for platforms] <OutDir Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">$(SolutionDir)[configs.name]\[target.output_dir]\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">$(SolutionDir)[configs.name]\[target.intermediate_dir]\[target.proj_name]\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">$(SolutionDir)[configs.name]\obj\[target.intermediate_dir]\[target.proj_name]\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">[target.output_name_without_ext]</TargetName>
[is config_type "DynamicLibrary"][is target.output_ext ".dll"][else] <TargetExt>[target.output_ext]</TargetExt>
[end][end][end][end] </PropertyGroup>
Modified: subversion/branches/fsfs-format7/build/transform_sql.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build/transform_sql.py?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/build/transform_sql.py (original)
+++ subversion/branches/fsfs-format7/build/transform_sql.py Wed Mar 6 11:10:01 2013
@@ -137,10 +137,6 @@ class Processor(object):
# So for the root we can compare with > '' and < x'FFFF'. (This skips the
# root itself and selects all descendants)
#
- ### RH: I implemented this first with a user defined Sqlite function. But
- ### when I wrote the documentation for it, I found out I could just
- ### define it this way, without losing the option of just dropping the
- ### query in a plain sqlite3.
# '/'+1 == '0'
line = re.sub(
@@ -149,6 +145,48 @@ class Processor(object):
r" AND ((\1) < CASE (\2) WHEN '' THEN X'FFFF' ELSE (\2) || '0' END))",
line)
+ # RELPATH_SKIP_JOIN(x, y, z) skips the x prefix from z and the joins the
+ # result after y. In other words it replaces x with y, but follows the
+ # relpath rules.
+ line = re.sub(
+ r'RELPATH_SKIP_JOIN[(]([?]?[A-Za-z0-9_.]+), ' +
+ r'([?]?[A-Za-z0-9_.]+), ' +
+ r'([?]?[A-Za-z0-9_.]+)[)]',
+ r"(CASE WHEN (\1) = '' THEN RELPATH_JOIN(\2, \3) " +
+ r"WHEN (\2) = '' THEN RELPATH_SKIP_ANCESTOR(\1, \3) " +
+ r"WHEN SUBSTR((\3), 1, LENGTH(\1)) = (\1) " +
+ r"THEN " +
+ r"CASE WHEN LENGTH(\1) = LENGTH(\3) THEN (\2) " +
+ r"WHEN SUBSTR((\3), LENGTH(\1)+1, 1) = '/' " +
+ r"THEN (\2) || SUBSTR((\3), LENGTH(\1)+1) " +
+ r"END " +
+ r"END)",
+ line)
+
+ # RELPATH_JOIN(x, y) joins x to y following the svn_relpath_join() rules
+ line = re.sub(
+ r'RELPATH_JOIN[(]([?]?[A-Za-z0-9_.]+), ([?]?[A-Za-z0-9_.]+)[)]',
+ r"(CASE WHEN (\1) = '' THEN (\2) " +
+ r"WHEN (\2) = '' THEN (\1) " +
+ r"ELSE (\1) || '/' || (\2) " +
+ r"END)",
+ line)
+
+ # RELPATH_SKIP_ANCESTOR(x, y) skips the x prefix from y following the
+ # svn_relpath_skip_ancestor() rules. Returns NULL when y is not below X.
+ line = re.sub(
+ r'RELPATH_SKIP_ANCESTOR[(]([?]?[A-Za-z0-9_.]+), ' +
+ r'([?]?[A-Za-z0-9_.]+)[)]',
+ r"(CASE WHEN (\1) = '' THEN (\2) " +
+ r" WHEN SUBSTR((\2), 1, LENGTH(\1)) = (\1) " +
+ r" THEN " +
+ r"CASE WHEN LENGTH(\1) = LENGTH(\2) THEN '' " +
+ r"WHEN SUBSTR((\2), LENGTH(\1)+1, 1) = '/' " +
+ r"THEN SUBSTR((\2), LENGTH(\1)+2) " +
+ r"END" +
+ r" END)",
+ line)
+
# Another preprocessing.
for symbol, string in self.token_map.iteritems():
# ### This doesn't sql-escape 'string'
Modified: subversion/branches/fsfs-format7/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/configure.ac?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/configure.ac (original)
+++ subversion/branches/fsfs-format7/configure.ac Wed Mar 6 11:10:01 2013
@@ -125,21 +125,13 @@ dnl Search for pkg-config
AC_PATH_PROG(PKG_CONFIG, pkg-config)
dnl Search for serf
-SVN_LIB_SERF(1,0,0)
+SVN_LIB_SERF(1,2,0)
if test "$svn_lib_serf" = "yes"; then
AC_DEFINE([SVN_HAVE_SERF], 1,
[Defined if support for Serf is enabled])
fi
-dnl Search for GSSAPI
-SVN_LIB_RA_SERF_GSSAPI
-
-if test "$svn_lib_gssapi" = "yes"; then
- AC_DEFINE([SVN_RA_SERF_HAVE_GSSAPI], 1,
- [Defined if support for GSSAPI is enabled])
-fi
-
dnl Search for apr_memcache (only affects fs_fs)
SVN_LIB_APR_MEMCACHE
@@ -912,20 +904,6 @@ AC_CHECK_HEADER(termios.h,[
dnl Process some configuration options ----------
-AC_ARG_WITH(ssl,
-AS_HELP_STRING([--with-ssl],
- [This option does NOT affect the Subversion build process in any
- way. It enables OpenSSL support in the Neon HTTP client
- library. If and only if you are building Neon as an integrated
- part of the Subversion build process, rather than linking to
- an already installed version of Neon, you probably want to pass
- this option so that Neon (and so indirectly, Subversion) will
- be capable of https:// access via that library. (Note that
- Subversion may also or alternatively be configured to use
- the Serf library for http:// and https:// access; see the
- --with-serf and --with-openssl options.)]),
-[])
-
AC_ARG_WITH(openssl,
AS_HELP_STRING([--with-openssl],
[This option does NOT affect the Subversion build process in any
Modified: subversion/branches/fsfs-format7/get-deps.sh
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/get-deps.sh?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/get-deps.sh (original)
+++ subversion/branches/fsfs-format7/get-deps.sh Wed Mar 6 11:10:01 2013
@@ -25,10 +25,11 @@
APR=apr-1.4.6
APR_UTIL=apr-util-1.5.1
-SERF=serf-1.1.1
+SERF=serf-1.2.0
ZLIB=zlib-1.2.7
SQLITE_VERSION=3.7.15.1
-SQLITE=sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo $SQLITE_VERSION | sed -e 's/\./ /g'))
+SQLITE_VERSION_LIST=`echo $SQLITE_VERSION | sed -e 's/\./ /g'`
+SQLITE=sqlite-amalgamation-`printf %d%02d%02d%02d $SQLITE_VERSION_LIST`
GTEST_VERSION=1.6.0
GTEST=gtest-${GTEST_VERSION}
GTEST_URL=http://googletest.googlecode.com/files/
@@ -40,9 +41,9 @@ BASEDIR=`pwd`
TEMPDIR=$BASEDIR/temp
HTTP_FETCH=
-[ -z "$HTTP_FETCH" ] && type wget >/dev/null 2>&1 && HTTP_FETCH="wget -nc"
-[ -z "$HTTP_FETCH" ] && type curl >/dev/null 2>&1 && HTTP_FETCH="curl -O"
-[ -z "$HTTP_FETCH" ] && type fetch >/dev/null 2>&1 && HTTP_FETCH="fetch"
+[ -z "$HTTP_FETCH" ] && type wget >/dev/null 2>&1 && HTTP_FETCH="wget -q -nc"
+[ -z "$HTTP_FETCH" ] && type curl >/dev/null 2>&1 && HTTP_FETCH="curl -sO"
+[ -z "$HTTP_FETCH" ] && type fetch >/dev/null 2>&1 && HTTP_FETCH="fetch -q"
# Need this uncommented if any of the specific versions of the ASF tarballs to
# be downloaded are no longer available on the general mirrors.
@@ -129,7 +130,7 @@ get_deps() {
done
if [ $# -gt 0 ]; then
- for target; do
+ for target in "$@"; do
if [ "$target" != "deps" ]; then
get_$target || usage
else
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/native/CreateJ.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/native/CreateJ.cpp?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/native/CreateJ.cpp Wed Mar 6 11:10:01 2013
@@ -35,6 +35,7 @@
#include "../include/org_apache_subversion_javahl_CommitItemStateFlags.h"
#include "svn_path.h"
+#include "svn_props.h"
#include "private/svn_wc_private.h"
jobject
@@ -1049,6 +1050,87 @@ jobject CreateJ::PropertyMap(apr_hash_t
return env->PopLocalFrame(map);
}
+jobject CreateJ::InheritedProps(apr_array_header_t *iprops)
+{
+ JNIEnv *env = JNIUtil::getEnv();
+
+ if (iprops == NULL)
+ return NULL;
+
+ // Create a local frame for our references
+ env->PushLocalFrame(LOCAL_FRAME_SIZE);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
+ jclass list_cls = env->FindClass("java/util/ArrayList");
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ static volatile jmethodID init_mid = 0;
+ if (init_mid == 0)
+ {
+ init_mid = env->GetMethodID(list_cls, "<init>", "(I)V");
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+ }
+
+ static volatile jmethodID add_mid = 0;
+ if (add_mid == 0)
+ {
+ add_mid = env->GetMethodID(list_cls, "add",
+ "(Ljava/lang/Object;)Z");
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+ }
+
+ jclass item_cls = env->FindClass(
+ JAVA_PACKAGE"/callback/InheritedProplistCallback$InheritedItem");
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ static volatile jmethodID ctor_mid = 0;
+ if (ctor_mid == 0)
+ {
+ ctor_mid = env->GetMethodID(item_cls, "<init>",
+ "(Ljava/lang/String;Ljava/util/Map;)V");
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+ }
+
+ jobject array = env->NewObject(list_cls, init_mid, iprops->nelts);
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ for (int i = 0; i < iprops->nelts; ++i)
+ {
+ svn_prop_inherited_item_t *iprop =
+ APR_ARRAY_IDX(iprops, i, svn_prop_inherited_item_t*);
+
+ jstring path_or_url = JNIUtil::makeJString(iprop->path_or_url);
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ jobject props = PropertyMap(iprop->prop_hash);
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ jobject item = env->NewObject(item_cls, ctor_mid, path_or_url, props);
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ env->CallBooleanMethod(array, add_mid, item);
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ env->DeleteLocalRef(item);
+ env->DeleteLocalRef(props);
+ env->DeleteLocalRef(path_or_url);
+ }
+
+ return env->PopLocalFrame(array);
+}
+
+
jobject CreateJ::Set(std::vector<jobject> &objects)
{
JNIEnv *env = JNIUtil::getEnv();
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/native/CreateJ.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/native/CreateJ.h?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/native/CreateJ.h (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/native/CreateJ.h Wed Mar 6 11:10:01 2013
@@ -82,6 +82,9 @@ class CreateJ
static jobject
PropertyMap(apr_hash_t *prop_hash);
+ static jobject
+ InheritedProps(apr_array_header_t *inherited_props);
+
/* This creates a set of Objects. It derefs the members of the vector
* after putting them in the set, so they caller doesn't need to. */
static jobject
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/native/ProplistCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/native/ProplistCallback.cpp?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/native/ProplistCallback.cpp (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/native/ProplistCallback.cpp Wed Mar 6 11:10:01 2013
@@ -33,10 +33,10 @@
* Create a ProplistCallback object
* @param jcallback the Java callback object.
*/
-ProplistCallback::ProplistCallback(jobject jcallback)
-{
- m_callback = jcallback;
-}
+ProplistCallback::ProplistCallback(jobject jcallback, bool inherited)
+ : m_callback(jcallback),
+ m_inherited(inherited)
+{}
/**
* Destroy a ProplistCallback object
@@ -51,11 +51,18 @@ svn_error_t *
ProplistCallback::callback(void *baton,
const char *path,
apr_hash_t *prop_hash,
+ apr_array_header_t *inherited_props,
apr_pool_t *pool)
{
if (baton)
- return static_cast<ProplistCallback *>(baton)->singlePath(
- path, prop_hash, pool);
+ {
+ ProplistCallback *cb = static_cast<ProplistCallback *>(baton);
+
+ if (cb->inherited())
+ return cb->singlePath(path, prop_hash, inherited_props, pool);
+ else
+ return cb->singlePath(path, prop_hash, pool);
+ }
return SVN_NO_ERROR;
}
@@ -79,7 +86,7 @@ svn_error_t *ProplistCallback::singlePat
// The method id will not change during the time this library is
// loaded, so it can be cached.
- static jmethodID mid = 0;
+ static volatile jmethodID mid = 0;
if (mid == 0)
{
jclass clazz = env->FindClass(JAVA_PACKAGE"/callback/ProplistCallback");
@@ -109,3 +116,62 @@ svn_error_t *ProplistCallback::singlePat
return SVN_NO_ERROR;
}
+
+
+
+/**
+ * Callback called for a single path
+ * @param path the path name
+ * @param prop_hash the hash of properties on this path
+ * @param inherited_props list of inherited props
+ * @param pool memory pool for the use of this function
+ */
+svn_error_t *ProplistCallback::singlePath(
+ const char *path,
+ apr_hash_t *prop_hash,
+ apr_array_header_t *inherited_props,
+ apr_pool_t *pool)
+{
+ JNIEnv *env = JNIUtil::getEnv();
+
+ // Create a local frame for our references
+ env->PushLocalFrame(LOCAL_FRAME_SIZE);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
+ // The method id will not change during the time this library is
+ // loaded, so it can be cached.
+ static jmethodID mid = 0;
+ if (mid == 0)
+ {
+ jclass clazz = env->FindClass(JAVA_PACKAGE"/callback/InheritedProplistCallback");
+ if (JNIUtil::isJavaExceptionThrown())
+ return SVN_NO_ERROR;
+
+ mid = env->GetMethodID(clazz, "singlePath",
+ "(Ljava/lang/String;Ljava/util/Map;Ljava/util/Collection;)V");
+ if (JNIUtil::isJavaExceptionThrown() || mid == 0)
+ POP_AND_RETURN(SVN_NO_ERROR);
+ }
+
+ // convert the parameters to their Java relatives
+ jstring jpath = JNIUtil::makeJString(path);
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN(SVN_NO_ERROR);
+
+ jobject jmap = CreateJ::PropertyMap(prop_hash);
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN(SVN_NO_ERROR);
+
+ jobject jiprops = CreateJ::InheritedProps(inherited_props);
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN(SVN_NO_ERROR);
+
+ // call the Java method
+ env->CallVoidMethod(m_callback, mid, jpath, jmap, jiprops);
+ // We return whether an exception was thrown or not.
+
+ env->PopLocalFrame(NULL);
+
+ return SVN_NO_ERROR;
+}
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/native/ProplistCallback.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/native/ProplistCallback.h?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/native/ProplistCallback.h (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/native/ProplistCallback.h Wed Mar 6 11:10:01 2013
@@ -37,24 +37,33 @@
class ProplistCallback
{
public:
- ProplistCallback(jobject jcallback);
+ ProplistCallback(jobject jcallback, bool inherited);
~ProplistCallback();
static svn_error_t *callback(void *baton,
const char *path,
apr_hash_t *prop_hash,
+ apr_array_header_t *inherited_props,
apr_pool_t *pool);
+ bool inherited() const { return m_inherited; }
+
protected:
svn_error_t *singlePath(const char *path,
apr_hash_t *prop_hash,
apr_pool_t *pool);
+ svn_error_t *singlePath(const char *path,
+ apr_hash_t *prop_hash,
+ apr_array_header_t *inherited_props,
+ apr_pool_t *pool);
private:
/**
* This a local reference to the Java object.
*/
jobject m_callback;
+ bool m_inherited;
};
+
#endif // PROPLISTCALLBACK_H
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/native/SVNClient.cpp?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/native/SVNClient.cpp Wed Mar 6 11:10:01 2013
@@ -35,6 +35,7 @@
#include "Revision.h"
#include "OutputStream.h"
#include "RevisionRange.h"
+#include "VersionExtended.h"
#include "BlameCallback.h"
#include "ProplistCallback.h"
#include "LogMessageCallback.h"
@@ -93,6 +94,41 @@ void SVNClient::dispose(jobject jthis)
SVNBase::dispose(jthis, &fid, JAVA_PACKAGE"/SVNClient");
}
+jobject SVNClient::getVersionExtended(bool verbose)
+{
+ JNIEnv *const env = JNIUtil::getEnv();
+
+ jclass clazz = env->FindClass(JAVA_PACKAGE"/types/VersionExtended");
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
+ static volatile jmethodID ctor = 0;
+ if (!ctor)
+ {
+ ctor = env->GetMethodID(clazz, "<init>", "()V");
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ }
+
+ static volatile jfieldID fid = 0;
+ if (!fid)
+ {
+ fid = env->GetFieldID(clazz, "cppAddr", "J");
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ }
+
+ jobject j_ext_info = env->NewObject(clazz, ctor);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
+ VersionExtended *vx = new VersionExtended(verbose);
+ env->SetLongField(j_ext_info, fid, vx->getCppAddr());
+
+ env->DeleteLocalRef(clazz);
+ return j_ext_info;
+}
+
jstring SVNClient::getAdminDirectoryName()
{
SVN::Pool subPool(pool);
@@ -849,7 +885,8 @@ jbyteArray SVNClient::propertyGet(const
void SVNClient::properties(const char *path, Revision &revision,
Revision &pegRevision, svn_depth_t depth,
- StringArray &changelists, ProplistCallback *callback)
+ StringArray &changelists,
+ ProplistCallback *callback)
{
SVN::Pool subPool(pool);
SVN_JNI_NULL_PTR_EX(path, "path", );
@@ -860,13 +897,12 @@ void SVNClient::properties(const char *p
if (ctx == NULL)
return;
- SVN_JNI_ERR(svn_client_proplist3(intPath.c_str(), pegRevision.revision(),
+ SVN_JNI_ERR(svn_client_proplist4(intPath.c_str(), pegRevision.revision(),
revision.revision(), depth,
changelists.array(subPool),
+ callback->inherited(),
ProplistCallback::callback, callback,
ctx, subPool.getPool()), );
-
- return;
}
void SVNClient::propertySetLocal(Targets &targets, const char *name,
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/native/SVNClient.h?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/native/SVNClient.h Wed Mar 6 11:10:01 2013
@@ -151,6 +151,7 @@ class SVNClient :public SVNBase
bool discoverPaths, bool includeMergedRevisions,
StringArray &revProps,
long limit, LogMessageCallback *callback);
+ jobject getVersionExtended(bool verbose);
jstring getAdminDirectoryName();
jboolean isAdminDirectory(const char *name);
void addToChangelist(Targets &srcPaths, const char *changelist,
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Wed Mar 6 11:10:01 2013
@@ -51,6 +51,7 @@
#include "ChangelistCallback.h"
#include "StringArray.h"
#include "RevpropTable.h"
+#include "VersionExtended.h"
#include "svn_version.h"
#include "svn_private_config.h"
#include "version.h"
@@ -89,6 +90,20 @@ Java_org_apache_subversion_javahl_SVNCli
cl->finalize();
}
+JNIEXPORT jobject JNICALL
+Java_org_apache_subversion_javahl_SVNClient_getVersionExtended(
+ JNIEnv *env, jobject jthis, jboolean verbose)
+{
+ JNIEntry(SVNClient, getVersionExtended);
+ SVNClient *cl = SVNClient::getCppObject(jthis);
+ if (cl == NULL)
+ {
+ JNIUtil::throwError(_("bad C++ this"));
+ return NULL;
+ }
+ return cl->getVersionExtended(!!verbose);
+}
+
JNIEXPORT jstring JNICALL
Java_org_apache_subversion_javahl_SVNClient_getAdminDirectoryName
(JNIEnv *env, jobject jthis)
@@ -891,13 +906,11 @@ Java_org_apache_subversion_javahl_SVNCli
jdryRun ? true:false);
}
-JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_properties
+static void SVNClient_properties
(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
jobject jpegRevision, jobject jdepth, jobject jchangelists,
- jobject jproplistCallback)
+ jobject jproplistCallback, bool inherited)
{
- JNIEntry(SVNClient, properties);
SVNClient *cl = SVNClient::getCppObject(jthis);
if (cl == NULL)
{
@@ -920,12 +933,34 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- ProplistCallback callback(jproplistCallback);
+ ProplistCallback callback(jproplistCallback, inherited);
cl->properties(path, revision, pegRevision, EnumMapper::toDepth(jdepth),
changelists, &callback);
}
JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_SVNClient_properties__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2Lorg_apache_subversion_javahl_callback_ProplistCallback_2
+(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
+ jobject jpegRevision, jobject jdepth, jobject jchangelists,
+ jobject jproplistCallback)
+{
+ JNIEntry(SVNClient, properties);
+ SVNClient_properties(env, jthis, jpath, jrevision, jpegRevision, jdepth,
+ jchangelists, jproplistCallback, false);
+}
+
+JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_SVNClient_properties__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2Lorg_apache_subversion_javahl_callback_InheritedProplistCallback_2
+(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
+ jobject jpegRevision, jobject jdepth, jobject jchangelists,
+ jobject jproplistCallback)
+{
+ JNIEntry(SVNClient, properties);
+ SVNClient_properties(env, jthis, jpath, jrevision, jpegRevision, jdepth,
+ jchangelists, jproplistCallback, true);
+}
+
+JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_propertySetRemote
(JNIEnv *env, jobject jthis, jstring jpath, jlong jbaseRev, jstring jname,
jbyteArray jval, jobject jmessage, jboolean jforce, jobject jrevpropTable,
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java Wed Mar 6 11:10:01 2013
@@ -244,11 +244,13 @@ public class ConflictDescriptor
/**
* Object is already added or schedule-add.
+ * @since 1.6
*/
added,
/**
* Object is already replaced.
+ * @since 1.7
*/
replaced,
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Wed Mar 6 11:10:01 2013
@@ -51,6 +51,12 @@ public interface ISVNClient
public Version getVersion();
/**
+ * @return Extended version information about the underlying
+ * native libraries and operating system.
+ */
+ public VersionExtended getVersionExtended(boolean verbose);
+
+ /**
* @return The name of the working copy's administrative
* directory, which is usually <code>.svn</code>.
* @see <a
@@ -656,6 +662,23 @@ public interface ISVNClient
throws ClientException;
/**
+ * Retrieves the properties of an item, including inherited properties.
+ *
+ * @param path the path of the item
+ * @param revision the revision of the item
+ * @param pegRevision the revision to interpret path
+ * @param depth the depth to recurse into subdirectories
+ * @param changelists changelists to filter by
+ * @param callback the callback to use to return the properties
+ * @throws ClientException
+ * @since 1.8
+ */
+ void properties(String path, Revision revision, Revision pegRevision,
+ Depth depth, Collection<String> changelists,
+ InheritedProplistCallback callback)
+ throws ClientException;
+
+ /**
* Sets one property of an item with a String value
*
* @param paths paths of the items
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Wed Mar 6 11:10:01 2013
@@ -103,6 +103,8 @@ public class SVNClient implements ISVNCl
return NativeResources.getVersion();
}
+ public native VersionExtended getVersionExtended(boolean verbose);
+
public native String getAdminDirectoryName();
public native boolean isAdminDirectory(String name);
@@ -354,6 +356,12 @@ public class SVNClient implements ISVNCl
ProplistCallback callback)
throws ClientException;
+ public native void properties(String path, Revision revision,
+ Revision pegRevision, Depth depth,
+ Collection<String> changelists,
+ InheritedProplistCallback callback)
+ throws ClientException;
+
public native void propertySetLocal(Set<String> paths, String name,
byte[] value, Depth depth,
Collection<String> changelists,
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java Wed Mar 6 11:10:01 2013
@@ -33,7 +33,7 @@ import org.apache.subversion.javahl.ISVN
public interface ProplistCallback
{
/**
- * the method will be called for every line in a file.
+ * the method will be called once for every file.
* @param path the path.
* @param properties the properties on the path.
*/
Modified: subversion/branches/fsfs-format7/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Wed Mar 6 11:10:01 2013
@@ -131,6 +131,91 @@ public class BasicTests extends SVNTests
}
/**
+ * Test SVNClient.getVersionExtended().
+ * @throws Throwable
+ */
+ public void testVersionExtendedQuiet() throws Throwable
+ {
+ try
+ {
+ VersionExtended vx = client.getVersionExtended(false);
+ String result = vx.getBuildDate();
+ if (result == null || result.trim().length() == 0)
+ throw new Exception("Build date empty");
+ result = vx.getBuildTime();
+ if (result == null || result.trim().length() == 0)
+ throw new Exception("Build time empty");
+ result = vx.getBuildHost();
+ if (result == null || result.trim().length() == 0)
+ throw new Exception("Build host empty");
+ result = vx.getCopyright();
+ if (result == null || result.trim().length() == 0)
+ throw new Exception("Copyright empty");
+ }
+ catch (Exception e)
+ {
+ fail("VersionExtended should always be available unless the " +
+ "native libraries failed to initialize: " + e);
+ }
+ }
+
+ /**
+ * Test SVNClient.getVersionExtended().
+ * @throws Throwable
+ */
+ public void testVersionExtendedVerbose() throws Throwable
+ {
+ try
+ {
+ VersionExtended vx = client.getVersionExtended(true);
+ String result = vx.getRuntimeHost();
+ if (result == null || result.trim().length() == 0)
+ throw new Exception("Runtime host empty");
+
+ // OS name is allowed to be null, but not empty
+ result = vx.getRuntimeOSName();
+ if (result != null && result.trim().length() == 0)
+ throw new Exception("Runtime OS name empty");
+
+ java.util.Iterator<VersionExtended.LinkedLib> ikl;
+ ikl = vx.getLinkedLibs();
+ if (ikl.hasNext())
+ {
+ VersionExtended.LinkedLib lib = ikl.next();
+ result = lib.getName();
+ if (result == null || result.trim().length() == 0)
+ throw new Exception("Linked lib name empty");
+ result = lib.getCompiledVersion();
+ if (result == null || result.trim().length() == 0)
+ throw new Exception("Linked lib compiled version empty");
+ // Runtime version is allowed to be null, but not empty
+ result = lib.getRuntimeVersion();
+ if (result != null && result.trim().length() == 0)
+ throw new Exception("Linked lib runtime version empty");
+ }
+
+ java.util.Iterator<VersionExtended.LoadedLib> ill;
+ ill = vx.getLoadedLibs();
+ if (ill.hasNext())
+ {
+ VersionExtended.LoadedLib lib = ill.next();
+ result = lib.getName();
+ if (result == null || result.trim().length() == 0)
+ throw new Exception("Loaded lib name empty");
+ // Version is allowed to be null, but not empty
+ result = lib.getVersion();
+ if (result != null && result.trim().length() == 0)
+ throw new Exception("Loaded lib version empty");
+ }
+ }
+ catch (Exception e)
+ {
+ fail("VersionExtended should always be available unless the " +
+ "native libraries failed to initialize: " + e);
+ }
+ }
+
+ /**
* Test the JNIError class functionality
* @throws Throwable
*/
@@ -711,6 +796,49 @@ public class BasicTests extends SVNTests
}
/**
+ * Test property inheritance.
+ * @throws Throwable
+ */
+ public void testInheritedProperties() throws Throwable
+ {
+ OneTest thisTest = new OneTest();
+ WC wc = thisTest.getWc();
+
+ String adirPath = fileToSVNPath(new File(thisTest.getWCPath(),
+ "/A"),
+ false);
+ String alphaPath = fileToSVNPath(new File(thisTest.getWCPath(),
+ "/A/B/E/alpha"),
+ false);
+
+ String propval = "ybg";
+ setprop(adirPath, "ahqrtz", propval.getBytes());
+
+ final Map<String, Collection<InheritedProplistCallback.InheritedItem>> ipropMaps =
+ new HashMap<String, Collection<InheritedProplistCallback.InheritedItem>>();
+
+ client.properties(alphaPath, null, null, Depth.empty, null,
+ new InheritedProplistCallback () {
+ public void singlePath(
+ String path, Map<String, byte[]> props,
+ Collection<InheritedProplistCallback.InheritedItem> iprops)
+ { ipropMaps.put(path, iprops); }
+ });
+ Collection<InheritedProplistCallback.InheritedItem> iprops = ipropMaps.get(alphaPath);
+ for (InheritedProplistCallback.InheritedItem item : iprops)
+ {
+ for (String key : item.properties.keySet())
+ {
+ assertEquals("ahqrtz", key);
+ assertEquals(propval, new String(item.properties.get(key)));
+ }
+ }
+
+ wc.setItemPropStatus("A", Status.Kind.modified);
+ thisTest.checkStatus();
+ }
+
+ /**
* Test the basic SVNClient.update functionality.
* @throws Throwable
*/
Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/INSTALL?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/INSTALL (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/INSTALL Wed Mar 6 11:10:01 2013
@@ -121,18 +121,18 @@ Step 3: Install Specific Language Bindi
* Python
- 1. Run 'make swig-py' from the top of the Subversion source tree,
+ 1. Run 'make swig-py' from the top of the Subversion build tree,
to build the bindings.
(This will invoke SWIG on the *.i files, resulting in a collection
of .c source files. It will then compile and link those .c files into
Python libraries.)
- 2. Run 'make check-swig-py' from the top of the Subversion source
+ 2. Run 'make check-swig-py' from the top of the Subversion build
tree, to test the bindings
3. Run 'make install-swig-py' (as root, typically)
- from the top of the Subversion source tree. This will copy
+ from the top of the Subversion build tree. This will copy
your new Python libraries into the appropriate system location.
Note: If you don't have access to install to Python's site-packages
@@ -167,18 +167,18 @@ Step 3: Install Specific Language Bindi
is the same one that you configured SWIG to run against during the
SWIG configure (see above).
- 1. Run `make swig-pl' from the top of the Subversion source tree.
+ 1. Run `make swig-pl' from the top of the Subversion build tree.
- 2. Run `make check-swig-pl' from the top of the Subversion source
+ 2. Run `make check-swig-pl' from the top of the Subversion build
tree, to test the bindings
3. to install run `make install-swig-pl' from the top of the
- Subversion source tree.
+ Subversion build tree.
If you need to pass extra parameters to Perl build process (Makefile.PL),
then you need to do this process somewhat different:
- 1. Run `make swig-pl-lib' from the top of the Subversion source tree.
+ 1. Run `make swig-pl-lib' from the top of the Subversion build tree.
2. Run `make install-swig-pl-lib'
@@ -195,14 +195,14 @@ Step 3: Install Specific Language Bindi
* Ruby
- 1. Run `make swig-rb' from the top of the Subversion source tree,
+ 1. Run `make swig-rb' from the top of the Subversion build tree,
to build the bindings.
- 2. Run `make check-swig-rb' from the top of the Subversion source
+ 2. Run `make check-swig-rb' from the top of the Subversion build
tree, to test the bindings.
3. To install, run `make install-swig-rb' from the top of the
- Subversion source tree.
+ Subversion build tree.
You can specify the ruby binary by passing RUBY=/path/to/ruby as part
of the configure command in the top level of the Subversion source
@@ -332,13 +332,50 @@ BUILDING SWIG BINDINGS FOR SVN ON WINDOW
copy Release\subversion\bindings\swig\perl\_Wc.dll %PERL_LIBS%\auto\SVN\_Wc
copy Release\subversion\bindings\swig\perl\_Wc.pdb %PERL_LIBS%\auto\SVN\_Wc
-TESTING AND USING SWIG BINDINGS
+
+TESTING SWIG BINDINGS
* Python
You can exercise the Python bindings test suite by running 'make
check-swig-py' as described in the install section.
+* Perl
+
+ The Perl bindings are using the standard module testing facilities
+ to do regression tests. Simply run 'make check-swig-pl' as described in
+ the install section.
+
+* Ruby
+
+ To test the Ruby bindings, simply run `make check-swig-rb' as described
+ in the install section.
+
+
+USING SWIG BINDINGS
+
+* Python
+
+ 1. Ensure Python's module search path includes the 'lib/svn-python'
+ subdirectory of the Subversion installation directory. For example,
+ include that directory in the 'PYTHONPATH' environment variable or
+ insert it into 'sys.path' at run time.
+
+ 2. Import the required modules into your Python program. For example:
+
+ import svn.client, svn.repos
+
+ 3. The APIs available within each module are broadly the same as the
+ corresponding C APIs except:
+
+ * omit the module prefix (for example, 'svn_client_')
+ * pool arguments are optional
+ * using Python exceptions instead of returning svn_error_t
+ * returning a tuple of outputs instead of return-by-pointer
+ * do not pass a baton along with a callback function
+
+ See python/README for more details on these differences.
+
For examples of how to use the Python bindings, check out the
sample/demo programs found in tools/examples/ in the Subversion
source code tree. Additionally, there are several third-party
@@ -347,15 +384,10 @@ TESTING AND USING SWIG BINDINGS
* Perl
- The Perl bindings are using the standard module testing facilities
- to do regression tests. Simply run 'make check-swig-pl' as described in
- the install section.
+ ### TODO
-* Ruby
+* Ruby
- To test the Ruby bindings, simply run `make check-swig-rb' as described
- in the install section.
-
For examples of how to use the Ruby bindings, take a look at the .rb files
in the following directory:
subversion/bindings/swig/test
Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_types.swg
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_types.swg?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_types.swg (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_types.swg Wed Mar 6 11:10:01 2013
@@ -1169,8 +1169,7 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
*/
#ifdef SWIGPERL
%typemap(in) svn_opt_revision_t * (svn_opt_revision_t rev) {
- $1 = &rev;
- svn_swig_pl_set_revision(&rev, $input);
+ $1 = svn_swig_pl_set_revision(&rev, $input);
}
#endif
Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c Wed Mar 6 11:10:01 2013
@@ -315,12 +315,13 @@ SV *svn_swig_pl_revnums_to_list(const ap
}
/* perl -> c svn_opt_revision_t conversion */
-void svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source)
+svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source)
{
if (source == NULL || source == &PL_sv_undef || !SvOK(source)) {
rev->kind = svn_opt_revision_unspecified;
}
else if (sv_isobject(source) && sv_derived_from(source, "_p_svn_opt_revision_t")) {
+ /* this will assign to rev */
SWIG_ConvertPtr(source, (void **)&rev, _SWIG_TYPE("svn_opt_revision_t *"), 0);
}
else if (looks_like_number(source)) {
@@ -371,6 +372,8 @@ void svn_swig_pl_set_revision(svn_opt_re
"a string (one of \"BASE\", \"HEAD\", \"WORKING\", "
"\"COMMITTED\", \"PREV\" or a \"{DATE}\") "
"or a _p_svn_opt_revision_t object");
+
+ return rev;
}
/* put the va_arg in stack and invoke caller_func with func.
Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h Wed Mar 6 11:10:01 2013
@@ -40,7 +40,6 @@
#include "svn_delta.h"
#include "svn_client.h"
#include "svn_repos.h"
-#undef _
#include "svn_private_config.h"
#ifdef __cplusplus
@@ -107,7 +106,7 @@ SV *svn_swig_pl_convert_array(const apr_
SV *svn_swig_pl_revnums_to_list(const apr_array_header_t *array);
-void svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source);
+svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source);
/* thunked log receiver function. */
svn_error_t * svn_swig_pl_thunk_log_receiver(void *py_receiver,
Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/3client.t
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/3client.t?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/3client.t (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/3client.t Wed Mar 6 11:10:01 2013
@@ -20,7 +20,7 @@
#
#
-use Test::More tests => 221;
+use Test::More tests => 223;
use strict;
# shut up about variables that are only used once.
@@ -388,6 +388,28 @@ is($ctx->log("$reposurl/dir1/new",$curre
'log returns undef');
# TEST
+my $opt_revision_head = SVN::_Core::new_svn_opt_revision_t();
+$opt_revision_head->kind($SVN::Core::opt_revision_head);
+is_deeply(get_log2($opt_revision_head), # got
+ get_log2("HEAD")); # expected
+# TEST
+my $opt_revision_number = SVN::_Core::new_svn_opt_revision_t();
+$opt_revision_number->kind($SVN::Core::opt_revision_number);
+$opt_revision_number->value->number($current_rev);
+is_deeply(get_log2($opt_revision_number), # got
+ get_log2($current_rev)); # expected
+
+sub get_log2 {
+ my ($rev) = @_;
+ my @log;
+ $ctx->log2($reposurl, $rev, $rev, 0, 0, 0, sub {
+ my (undef, $revision, $author, $date, $msg, undef) = @_;
+ push @log, [ $revision, $author, $date, $msg ];
+ });
+ return \@log;
+}
+
+# TEST
is($ctx->update($wcpath,'HEAD',1),$current_rev,
'Return from update is the current rev');
Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/9wc.t
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/9wc.t?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/9wc.t (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/9wc.t Wed Mar 6 11:10:01 2013
@@ -21,7 +21,8 @@
#
use strict;
-use Test::More tests => 13;
+use Test::More tests => 19;
+use Scalar::Util;
# shut up about variables that are only used once.
# these come from constants and variables used
@@ -33,9 +34,9 @@ use_ok('SVN::Core');
# TEST
use_ok('SVN::Wc');
-my $external_desc = <<END;
+my $external_desc = <<'END';
http://svn.example.com/repos/project1 project1
-^/repos/project2 "Project 2"
+-r6 ^/repos/project2@3 "Project 2"
END
# Run parse_externals_description3()
@@ -53,17 +54,13 @@ is($externals->[0]->target_dir(), 'proje
is($externals->[0]->url(), 'http://svn.example.com/repos/project1');
# TEST
isa_ok($externals->[0]->revision(), '_p_svn_opt_revision_t');
-# XTEST
-# This and the other similiarly commented out tests below are
-# not working right now. Need to figure out why but when you try
-# to access the fields in the _p_svn_opt_revision_t type it
-# gets corrupted.
-#is($externals->[0]->revision->kind, $SVN::Core::opt_revision_head);
+# TEST
+is($externals->[0]->revision->kind, $SVN::Core::opt_revision_head);
# TEST
isa_ok($externals->[0]->peg_revision(), '_p_svn_opt_revision_t');
-# XTEST
-#is($externals->[0]->peg_revision()->kind(),
-# $SVN::Core::opt_revision_head);
+# TEST
+is($externals->[0]->peg_revision()->kind(),
+ $SVN::Core::opt_revision_head);
# Check the second member
# TEST
@@ -74,11 +71,14 @@ is($externals->[1]->target_dir(), 'Proje
is($externals->[1]->url(), '^/repos/project2');
# TEST
isa_ok($externals->[1]->revision(), '_p_svn_opt_revision_t');
-# XTEST
-#is($externals->[1]->revision()->kind(), $SVN::Core::opt_revision_head);
+# TEST
+is($externals->[1]->revision()->kind(), $SVN::Core::opt_revision_number);
+# TEST
+is($externals->[1]->revision()->value()->number(), 6);
# TEST
isa_ok($externals->[1]->peg_revision(), '_p_svn_opt_revision_t');
-# XTEST
-#is($externals->[1]->peg_revision()->kind(),
-# $SVN::Core::opt_revision_head);
+# TEST
+is($externals->[1]->peg_revision()->kind(), $SVN::Core::opt_revision_number);
+# TEST
+is($externals->[1]->peg_revision()->value()->number(), 3);
Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/python/README
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/python/README?rev=1453290&r1=1453289&r2=1453290&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/python/README (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/python/README Wed Mar 6 11:10:01 2013
@@ -13,30 +13,51 @@ TRANSLATING PARAMETER LISTS
pointers with new data (you know, values that are returned to
the caller, but not as "return values") will return those
values directly in Python. So:
-
- error = foo (object **returned_obj, int blah);
-
+
+ object_t *returned_obj;
+ SVN_ERR(svn_client_foo(&returned_obj, blah));
+
+ becomes:
+
+ returned_obj = svn.client.foo(blah)
+
+ and:
+
+ err = svn_client_foo(&returned_obj, blah);
+ if (err && err->apr_err == SVN_ERR_...)
+ /* handle it */
+
becomes:
try:
- returned_obj = foo (blah)
+ returned_obj = svn.client.foo(blah)
except:
# handle it
- Callback function/baton pairs get reduced to just callback
functions, and the benefit you get from batons is gotten
- instead through Python default arguments:
-
- error = foo (callback_t function, void *baton);
-
+ instead through defining the callback function locally and
+ passing the 'baton' data in through Python default arguments. So:
+
+ struct baton_t { userdata1, ... };
+
+ svn_error_t *cb_func(cb_arg1, ..., void *baton)
+ {
+ baton_t *b = baton;
+ /* do stuff here with b->userdata1... etc. */
+ }
+
+ /* Now use it: */
+ {
+ baton_t *b = { whatever, ... };
+ error = svn_client_foo(cb_func, b);
+ }
+
becomes:
-
- try:
- def function(callback_arg1, ..., userdata1=whatever, ...):
- # do stuff here
- foo(function)
- except:
- # handle it
+
+ def cb_func(cb_arg1, ..., userdata1=whatever, ...):
+ # do stuff here with userdata1 etc.
+ svn.client.foo(cb_func)
RUNNING THE TESTS