subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hwri...@apache.org
Subject svn commit: r1449262 [1/25] - in /subversion/branches/ev2-export: ./ build/ build/ac-macros/ build/generator/ build/generator/swig/ build/generator/templates/ build/win32/ contrib/server-side/fsfsfixer/fixer/ contrib/server-side/svncutter/ notes/ notes...
Date Sat, 23 Feb 2013 01:25:44 GMT
Author: hwright
Date: Sat Feb 23 01:25:38 2013
New Revision: 1449262

URL: http://svn.apache.org/r1449262
Log:
On the ev2-export branch:
Bring up-to-date with trunk.

Added:
    subversion/branches/ev2-export/build/generator/templates/build-outputs.mk.ezt
      - copied unchanged from r1449260, subversion/trunk/build/generator/templates/build-outputs.mk.ezt
    subversion/branches/ev2-export/subversion/bindings/swig/perl/native/t/9wc.t
      - copied unchanged from r1449260, subversion/trunk/subversion/bindings/swig/perl/native/t/9wc.t
    subversion/branches/ev2-export/subversion/include/private/svn_diff_tree.h
      - copied unchanged from r1449260, subversion/trunk/subversion/include/private/svn_diff_tree.h
    subversion/branches/ev2-export/subversion/libsvn_client/copy_foreign.c
      - copied unchanged from r1449260, subversion/trunk/subversion/libsvn_client/copy_foreign.c
    subversion/branches/ev2-export/subversion/libsvn_client/upgrade.c
      - copied unchanged from r1449260, subversion/trunk/subversion/libsvn_client/upgrade.c
    subversion/branches/ev2-export/subversion/libsvn_diff/diff_tree.c
      - copied unchanged from r1449260, subversion/trunk/subversion/libsvn_diff/diff_tree.c
    subversion/branches/ev2-export/subversion/libsvn_subr/auth.h
      - copied unchanged from r1449260, subversion/trunk/subversion/libsvn_subr/auth.h
    subversion/branches/ev2-export/subversion/libsvn_wc/diff.h
      - copied unchanged from r1449260, subversion/trunk/subversion/libsvn_wc/diff.h
    subversion/branches/ev2-export/subversion/tests/cmdline/move_tests.py
      - copied unchanged from r1449260, subversion/trunk/subversion/tests/cmdline/move_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svnauthz_tests.py
      - copied unchanged from r1449260, subversion/trunk/subversion/tests/cmdline/svnauthz_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/deeptrees.py
      - copied unchanged from r1449260, subversion/trunk/subversion/tests/cmdline/svntest/deeptrees.py
    subversion/branches/ev2-export/subversion/tests/cmdline/upgrade_tests_data/upgrade_from_1_7_wc.tar.bz2
      - copied unchanged from r1449260, subversion/trunk/subversion/tests/cmdline/upgrade_tests_data/upgrade_from_1_7_wc.tar.bz2
Removed:
    subversion/branches/ev2-export/build/ac-macros/gssapi.m4
    subversion/branches/ev2-export/build/generator/templates/makefile.ezt
    subversion/branches/ev2-export/packages/
Modified:
    subversion/branches/ev2-export/   (props changed)
    subversion/branches/ev2-export/CHANGES
    subversion/branches/ev2-export/COMMITTERS
    subversion/branches/ev2-export/INSTALL
    subversion/branches/ev2-export/Makefile.in
    subversion/branches/ev2-export/build.conf
    subversion/branches/ev2-export/build/generator/gen_base.py
    subversion/branches/ev2-export/build/generator/gen_make.py
    subversion/branches/ev2-export/build/generator/gen_win.py
    subversion/branches/ev2-export/build/generator/swig/header_wrappers.py
    subversion/branches/ev2-export/build/generator/templates/vcnet_vcproj.ezt
    subversion/branches/ev2-export/build/generator/templates/vcnet_vcxproj.ezt
    subversion/branches/ev2-export/build/transform_sql.py
    subversion/branches/ev2-export/build/win32/make_dist.py
    subversion/branches/ev2-export/configure.ac
    subversion/branches/ev2-export/contrib/server-side/fsfsfixer/fixer/find_good_id.py
    subversion/branches/ev2-export/contrib/server-side/fsfsfixer/fixer/fix-rev.py
    subversion/branches/ev2-export/contrib/server-side/svncutter/svncutter
    subversion/branches/ev2-export/get-deps.sh
    subversion/branches/ev2-export/notes/api-errata/1.7/ra001.txt
    subversion/branches/ev2-export/notes/dump-load-format.txt
    subversion/branches/ev2-export/subversion/bindings/swig/INSTALL
    subversion/branches/ev2-export/subversion/bindings/swig/include/svn_containers.swg
    subversion/branches/ev2-export/subversion/bindings/swig/include/svn_types.swg
    subversion/branches/ev2-export/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
    subversion/branches/ev2-export/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
    subversion/branches/ev2-export/subversion/bindings/swig/perl/native/Core.pm
    subversion/branches/ev2-export/subversion/bindings/swig/perl/native/Ra.pm
    subversion/branches/ev2-export/subversion/bindings/swig/perl/native/Wc.pm
    subversion/branches/ev2-export/subversion/bindings/swig/perl/native/t/3client.t
    subversion/branches/ev2-export/subversion/bindings/swig/python/README
    subversion/branches/ev2-export/subversion/bindings/swig/ruby/test/test_wc.rb
    subversion/branches/ev2-export/subversion/include/private/svn_client_private.h
    subversion/branches/ev2-export/subversion/include/private/svn_fs_util.h
    subversion/branches/ev2-export/subversion/include/private/svn_sqlite.h
    subversion/branches/ev2-export/subversion/include/private/svn_temp_serializer.h
    subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h
    subversion/branches/ev2-export/subversion/include/svn_auth.h
    subversion/branches/ev2-export/subversion/include/svn_client.h
    subversion/branches/ev2-export/subversion/include/svn_cmdline.h
    subversion/branches/ev2-export/subversion/include/svn_config.h
    subversion/branches/ev2-export/subversion/include/svn_dav.h
    subversion/branches/ev2-export/subversion/include/svn_fs.h
    subversion/branches/ev2-export/subversion/include/svn_hash.h
    subversion/branches/ev2-export/subversion/include/svn_props.h
    subversion/branches/ev2-export/subversion/include/svn_ra.h
    subversion/branches/ev2-export/subversion/include/svn_ra_svn.h
    subversion/branches/ev2-export/subversion/include/svn_repos.h
    subversion/branches/ev2-export/subversion/include/svn_sorts.h
    subversion/branches/ev2-export/subversion/include/svn_wc.h
    subversion/branches/ev2-export/subversion/libsvn_client/blame.c
    subversion/branches/ev2-export/subversion/libsvn_client/cleanup.c
    subversion/branches/ev2-export/subversion/libsvn_client/client.h
    subversion/branches/ev2-export/subversion/libsvn_client/commit.c
    subversion/branches/ev2-export/subversion/libsvn_client/commit_util.c
    subversion/branches/ev2-export/subversion/libsvn_client/copy.c
    subversion/branches/ev2-export/subversion/libsvn_client/delete.c
    subversion/branches/ev2-export/subversion/libsvn_client/deprecated.c
    subversion/branches/ev2-export/subversion/libsvn_client/diff.c
    subversion/branches/ev2-export/subversion/libsvn_client/diff_local.c
    subversion/branches/ev2-export/subversion/libsvn_client/diff_summarize.c
    subversion/branches/ev2-export/subversion/libsvn_client/externals.c
    subversion/branches/ev2-export/subversion/libsvn_client/import.c
    subversion/branches/ev2-export/subversion/libsvn_client/list.c
    subversion/branches/ev2-export/subversion/libsvn_client/locking_commands.c
    subversion/branches/ev2-export/subversion/libsvn_client/merge.c
    subversion/branches/ev2-export/subversion/libsvn_client/mergeinfo.c
    subversion/branches/ev2-export/subversion/libsvn_client/patch.c
    subversion/branches/ev2-export/subversion/libsvn_client/ra.c
    subversion/branches/ev2-export/subversion/libsvn_client/repos_diff.c
    subversion/branches/ev2-export/subversion/libsvn_client/resolved.c
    subversion/branches/ev2-export/subversion/libsvn_client/status.c
    subversion/branches/ev2-export/subversion/libsvn_client/switch.c
    subversion/branches/ev2-export/subversion/libsvn_client/update.c
    subversion/branches/ev2-export/subversion/libsvn_client/util.c
    subversion/branches/ev2-export/subversion/libsvn_delta/svndiff.c
    subversion/branches/ev2-export/subversion/libsvn_diff/diff_file.c
    subversion/branches/ev2-export/subversion/libsvn_diff/diff_memory.c
    subversion/branches/ev2-export/subversion/libsvn_fs/fs-loader.c
    subversion/branches/ev2-export/subversion/libsvn_fs/fs-loader.h
    subversion/branches/ev2-export/subversion/libsvn_fs_base/bdb/locks-table.c
    subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c
    subversion/branches/ev2-export/subversion/libsvn_fs_base/reps-strings.c
    subversion/branches/ev2-export/subversion/libsvn_fs_base/tree.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/dag.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.h
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/rep-cache-db.sql
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/rep-cache.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/rep-cache.h
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/temp_serializer.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/tree.c
    subversion/branches/ev2-export/subversion/libsvn_fs_util/fs-util.c
    subversion/branches/ev2-export/subversion/libsvn_ra_local/ra_plugin.c
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/commit.c
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/options.c
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/property.c
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c
    subversion/branches/ev2-export/subversion/libsvn_ra_svn/client.c
    subversion/branches/ev2-export/subversion/libsvn_repos/authz.c
    subversion/branches/ev2-export/subversion/libsvn_repos/deprecated.c
    subversion/branches/ev2-export/subversion/libsvn_repos/dump.c
    subversion/branches/ev2-export/subversion/libsvn_repos/reporter.c
    subversion/branches/ev2-export/subversion/libsvn_repos/repos.c
    subversion/branches/ev2-export/subversion/libsvn_repos/repos.h
    subversion/branches/ev2-export/subversion/libsvn_repos/rev_hunt.c
    subversion/branches/ev2-export/subversion/libsvn_subr/auth.c
    subversion/branches/ev2-export/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/ev2-export/subversion/libsvn_subr/config_auth.c
    subversion/branches/ev2-export/subversion/libsvn_subr/config_file.c
    subversion/branches/ev2-export/subversion/libsvn_subr/mergeinfo.c
    subversion/branches/ev2-export/subversion/libsvn_subr/prompt.c
    subversion/branches/ev2-export/subversion/libsvn_subr/simple_providers.c
    subversion/branches/ev2-export/subversion/libsvn_subr/sorts.c
    subversion/branches/ev2-export/subversion/libsvn_subr/sqlite.c
    subversion/branches/ev2-export/subversion/libsvn_wc/adm_crawler.c
    subversion/branches/ev2-export/subversion/libsvn_wc/adm_files.c
    subversion/branches/ev2-export/subversion/libsvn_wc/adm_ops.c
    subversion/branches/ev2-export/subversion/libsvn_wc/conflicts.c
    subversion/branches/ev2-export/subversion/libsvn_wc/conflicts.h
    subversion/branches/ev2-export/subversion/libsvn_wc/copy.c
    subversion/branches/ev2-export/subversion/libsvn_wc/delete.c
    subversion/branches/ev2-export/subversion/libsvn_wc/deprecated.c
    subversion/branches/ev2-export/subversion/libsvn_wc/diff_editor.c
    subversion/branches/ev2-export/subversion/libsvn_wc/diff_local.c
    subversion/branches/ev2-export/subversion/libsvn_wc/externals.c
    subversion/branches/ev2-export/subversion/libsvn_wc/info.c
    subversion/branches/ev2-export/subversion/libsvn_wc/merge.c
    subversion/branches/ev2-export/subversion/libsvn_wc/node.c
    subversion/branches/ev2-export/subversion/libsvn_wc/old-and-busted.c
    subversion/branches/ev2-export/subversion/libsvn_wc/props.c
    subversion/branches/ev2-export/subversion/libsvn_wc/props.h
    subversion/branches/ev2-export/subversion/libsvn_wc/revert.c
    subversion/branches/ev2-export/subversion/libsvn_wc/status.c
    subversion/branches/ev2-export/subversion/libsvn_wc/tree_conflicts.c
    subversion/branches/ev2-export/subversion/libsvn_wc/update_editor.c
    subversion/branches/ev2-export/subversion/libsvn_wc/upgrade.c
    subversion/branches/ev2-export/subversion/libsvn_wc/wc-queries.sql
    subversion/branches/ev2-export/subversion/libsvn_wc/wc.h
    subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.c
    subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.h
    subversion/branches/ev2-export/subversion/libsvn_wc/wc_db_private.h
    subversion/branches/ev2-export/subversion/libsvn_wc/wc_db_update_move.c
    subversion/branches/ev2-export/subversion/libsvn_wc/wc_db_wcroot.c
    subversion/branches/ev2-export/subversion/libsvn_wc/workqueue.c
    subversion/branches/ev2-export/subversion/mod_authz_svn/INSTALL
    subversion/branches/ev2-export/subversion/mod_authz_svn/mod_authz_svn.c
    subversion/branches/ev2-export/subversion/mod_dav_svn/deadprops.c
    subversion/branches/ev2-export/subversion/mod_dav_svn/version.c
    subversion/branches/ev2-export/subversion/po/de.po
    subversion/branches/ev2-export/subversion/svn/blame-cmd.c
    subversion/branches/ev2-export/subversion/svn/cl.h
    subversion/branches/ev2-export/subversion/svn/conflict-callbacks.c
    subversion/branches/ev2-export/subversion/svn/diff-cmd.c
    subversion/branches/ev2-export/subversion/svn/info-cmd.c
    subversion/branches/ev2-export/subversion/svn/merge-cmd.c
    subversion/branches/ev2-export/subversion/svn/mergeinfo-cmd.c
    subversion/branches/ev2-export/subversion/svn/notify.c
    subversion/branches/ev2-export/subversion/svn/patch-cmd.c
    subversion/branches/ev2-export/subversion/svn/propedit-cmd.c
    subversion/branches/ev2-export/subversion/svn/propset-cmd.c
    subversion/branches/ev2-export/subversion/svn/resolve-cmd.c
    subversion/branches/ev2-export/subversion/svn/resolved-cmd.c
    subversion/branches/ev2-export/subversion/svn/svn.c
    subversion/branches/ev2-export/subversion/svn/switch-cmd.c
    subversion/branches/ev2-export/subversion/svn/update-cmd.c
    subversion/branches/ev2-export/subversion/svn/util.c
    subversion/branches/ev2-export/subversion/svnadmin/svnadmin.c
    subversion/branches/ev2-export/subversion/svnserve/serve.c
    subversion/branches/ev2-export/subversion/tests/cmdline/authz_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/blame_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/changelist_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/copy_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/depth_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/entries-dump.c
    subversion/branches/ev2-export/subversion/tests/cmdline/externals_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/info_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/input_validation_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/merge_authz_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/merge_automatic_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/merge_reintegrate_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/merge_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/merge_tree_conflict_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/patch_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/prop_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/resolve_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/revert_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svnlook_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svnrdump_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/actions.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/main.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/sandbox.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/tree.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/verify.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/wc.py
    subversion/branches/ev2-export/subversion/tests/cmdline/switch_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/tree_conflict_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/update_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/upgrade_tests.py
    subversion/branches/ev2-export/subversion/tests/libsvn_client/client-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_delta/range-index-test.h
    subversion/branches/ev2-export/subversion/tests/libsvn_diff/diff-diff3-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_fs_fs/fs-pack-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_ra/ra-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_repos/repos-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_subr/auth-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_subr/dirent_uri-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_subr/subst_translate-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_wc/conflict-data-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_wc/db-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_wc/entries-compat.c
    subversion/branches/ev2-export/subversion/tests/libsvn_wc/op-depth-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_wc/pristine-store-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_wc/utils.c
    subversion/branches/ev2-export/subversion/tests/libsvn_wc/utils.h
    subversion/branches/ev2-export/subversion/tests/libsvn_wc/wc-queries-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_wc/wc-test.c
    subversion/branches/ev2-export/subversion/tests/svn_test_fs.c
    subversion/branches/ev2-export/tools/client-side/bash_completion
    subversion/branches/ev2-export/tools/dev/gen-py-errors.py
    subversion/branches/ev2-export/tools/dev/unix-build/Makefile.svn
    subversion/branches/ev2-export/tools/hook-scripts/mailer/mailer.conf.example
    subversion/branches/ev2-export/tools/hook-scripts/mailer/mailer.py
    subversion/branches/ev2-export/tools/server-side/   (props changed)
    subversion/branches/ev2-export/tools/server-side/svnauthz.c
    subversion/branches/ev2-export/win-tests.py

Propchange: subversion/branches/ev2-export/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1436887-1449260

Modified: subversion/branches/ev2-export/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/CHANGES?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/CHANGES (original)
+++ subversion/branches/ev2-export/CHANGES Sat Feb 23 01:25:38 2013
@@ -37,6 +37,7 @@ http://svn.apache.org/repos/asf/subversi
     * 'svn merge' now uses reintegrate mode automatically when needed
     * 'svn' is now non-interactive when not run in a terminal device (r1424037)
     * 'svn propset' checks spelling of reserved property names.
+    * improve working copy performance on network disks (issue #4176) 
 
   - Client-side bugfixes:
     * 
@@ -714,7 +715,7 @@ http://svn.apache.org/repos/asf/subversi
    * improve some swig parameter mapping (r984565, r1035745)
    * improve test accuracy over dav (r991534, r877814)
    * create fails.log for test runs (r964349)
-   * improve detection of 'svnversion' when buildling (r877219, et al)
+   * improve detection of 'svnversion' when building (r877219, et al)
    * don't violate API layering in dumpstream logic (issue #3733)
    * don't report working copy installs as switched (r1033921)
 

Modified: subversion/branches/ev2-export/COMMITTERS
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/COMMITTERS?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/COMMITTERS [UTF-8] (original)
+++ subversion/branches/ev2-export/COMMITTERS [UTF-8] Sat Feb 23 01:25:38 2013
@@ -157,6 +157,7 @@ Commit access for specific areas:
       artagnon   Ramkumar Ramachandra <artagnon@gmail.com>   (svnrdump, svntest)
          arwin   Arwin Arni <arwin@collab.net>               (svn-bisect)
           joes   Joe Schaefer <joe_schaefer@yahoo.com>       (svnpubsub)
+      prabhugs   Prabhu Gnana Sundar <prabhugs@collab.net>   (verify-keep-going)
 
 
   Translation of message files:

Modified: subversion/branches/ev2-export/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/INSTALL?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/INSTALL (original)
+++ subversion/branches/ev2-export/INSTALL Sat Feb 23 01:25:38 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/ev2-export/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/Makefile.in?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/Makefile.in (original)
+++ subversion/branches/ev2-export/Makefile.in Sat Feb 23 01:25:38 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,5 +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); \
-  ln -sf svnauthz$(EXEEXT) $(DESTDIR)$(toolsdir)/svnauthz-validate$(EXEEXT)
+  if test "$(DESTDIR)$(bindir)" != "$(DESTDIR)$(toolsdir)"; then \
+    ln -sf $(DESTDIR)$(bindir)/svnmucc$(EXEEXT) $(DESTDIR)$(toolsdir)/svnmucc$(EXEEXT); \
+  fi

Modified: subversion/branches/ev2-export/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build.conf?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/build.conf (original)
+++ subversion/branches/ev2-export/build.conf Sat Feb 23 01:25:38 2013
@@ -230,7 +230,7 @@ type = lib
 path = subversion/libsvn_diff
 libs = libsvn_subr apriconv apr zlib
 install = lib
-msvc-export = svn_diff.h private\svn_diff_private.h
+msvc-export = svn_diff.h private/svn_diff_private.h private/svn_diff_tree.h
 
 # The repository filesystem library
 [libsvn_fs]
@@ -747,7 +747,7 @@ type = exe
 path = subversion/tests/libsvn_subr
 sources = auth-test.c
 install = test
-libs = libsvn_test libsvn_subr
+libs = libsvn_test libsvn_subr apr
 
 [cache-test]
 description = Test in-memory cache
@@ -1204,7 +1204,7 @@ path = build/win32
 libs = svn svnadmin svndumpfilter svnlook svnmucc svnserve svnrdump svnsync
        svnversion
        mod_authz_svn mod_dav_svn mod_dontdothat
-       svnauthz svnraisetreeconflict
+       svnauthz svnauthz-validate svnraisetreeconflict
 
 [__ALL_TESTS__]
 type = project
@@ -1224,12 +1224,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__]
@@ -1330,6 +1335,19 @@ sources = svnauthz.c
 install = tools
 libs = libsvn_repos libsvn_fs libsvn_subr apr
 
+# svnauthz-validate is the compat mode of the new svnauthz tool.  It is
+# exactly the same code as svnauthz.  This duplicated target is needed
+# in order to easily test both commands as part of the build since libtool
+# does not provide a way to set argv[0] different from the commands actual
+# name in the wrapper script.
+[svnauthz-validate]
+description = Authz config file validator
+type = exe
+path = tools/server-side
+sources = svnauthz.c
+install = tools
+libs = libsvn_repos libsvn_fs libsvn_subr apr
+
 [svn-populate-node-origins-index]
 type = exe
 path = tools/server-side

Modified: subversion/branches/ev2-export/build/generator/gen_base.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/generator/gen_base.py?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/generator/gen_base.py (original)
+++ subversion/branches/ev2-export/build/generator/gen_base.py Sat Feb 23 01:25:38 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/ev2-export/build/generator/gen_make.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/generator/gen_make.py?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/generator/gen_make.py (original)
+++ subversion/branches/ev2-export/build/generator/gen_make.py Sat Feb 23 01:25:38 2013
@@ -396,6 +396,8 @@ class Generator(gen_base.GeneratorBase):
         ezt_area.uppervar = upper_var
 
         # ### TODO: This is a hack.  See discussion here:
+        # ### email to dev@, 2012-03-16, from Daniel Shahaf, subject
+        # ### "[1.7.x] build.conf += install-tools of an apache-mod",
         # ### http://mid.gmane.org/20120316191639.GA28451@daniel3.local
         apache_files = [gen_base.FileInfo(t.filename, t.when)
                         for t in inst_targets
@@ -467,7 +469,7 @@ class Generator(gen_base.GeneratorBase):
       dep.generated = ezt.boolean(getattr(objname, 'source_generated', 0))
 
     template = ezt.Template(os.path.join('build', 'generator', 'templates',
-                                         'makefile.ezt'),
+                                         'build-outputs.mk.ezt'),
                             compress_whitespace=False)
     template.generate(open('build-outputs.mk', 'w'), data)
 
@@ -479,7 +481,9 @@ class Generator(gen_base.GeneratorBase):
     """Write autogen-standalone.mk"""
 
     standalone = open("autogen-standalone.mk", "w")
-    standalone.write('# DO NOT EDIT -- AUTOMATICALLY GENERATED\n')
+    standalone.write('# DO NOT EDIT -- AUTOMATICALLY GENERATED '
+                     'BY build/generator/gen_make.py\n')
+    standalone.write('# FROM build-outputs.mk\n')
     standalone.write('abs_srcdir = %s\n' % os.getcwd())
     standalone.write('abs_builddir = %s\n' % os.getcwd())
     standalone.write('top_srcdir = .\n')
@@ -495,7 +499,7 @@ class Generator(gen_base.GeneratorBase):
     script = 'build/transform_libtool_scripts.sh'
     fd = open(script, 'w')
     fd.write('''#!/bin/sh
-# DO NOT EDIT -- AUTOMATICALLY GENERATED
+# DO NOT EDIT -- AUTOMATICALLY GENERATED BY build/generator/gen_make.py
 
 transform()
 {

Modified: subversion/branches/ev2-export/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/generator/gen_win.py?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/generator/gen_win.py (original)
+++ subversion/branches/ev2-export/build/generator/gen_win.py Sat Feb 23 01:25:38 2013
@@ -462,7 +462,10 @@ class WinGeneratorBase(GeneratorBase):
       # Link everything except tests against the dll. Tests need to be linked
       # against the static libraries because they sometimes access internal
       # library functions.
-      if dep in deps[key] and key.find("test") == -1:
+
+      # ### The magic behavior for 'test' in a name and 'entries-dump' should
+      # ### move to another option in build.conf
+      if dep in deps[key] and key.find("test") == -1 and key != 'entries-dump':
         deps[key].remove(dep)
         deps[key].append(target)
 

Modified: subversion/branches/ev2-export/build/generator/swig/header_wrappers.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/generator/swig/header_wrappers.py?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/generator/swig/header_wrappers.py (original)
+++ subversion/branches/ev2-export/build/generator/swig/header_wrappers.py Sat Feb 23 01:25:38 2013
@@ -267,7 +267,8 @@ class Generator(generator.swig.Generator
     # Open a temporary output file
     self.ofile = tempfile.TemporaryFile(dir=self.proxy_dir)
     self.ofile.write('/* Proxy classes for %s\n' % base_fname)
-    self.ofile.write(' * DO NOT EDIT -- AUTOMATICALLY GENERATED */\n')
+    self.ofile.write(' * DO NOT EDIT -- AUTOMATICALLY GENERATED\n')
+    self.ofile.write(' * BY build/generator/swig/header_wrappers.py */\n')
 
     # Write list of structs for which we shouldn't define constructors
     # by default

Modified: subversion/branches/ev2-export/build/generator/templates/vcnet_vcproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/generator/templates/vcnet_vcproj.ezt?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/generator/templates/vcnet_vcproj.ezt (original)
+++ subversion/branches/ev2-export/build/generator/templates/vcnet_vcproj.ezt Sat Feb 23 01:25:38 2013
@@ -56,10 +56,10 @@
 				RuntimeLibrary="2"
 				BufferSecurityCheck="FALSE"
 [end]				WarningLevel="4"
-				DisableSpecificWarnings="4100;4127;4204;4206;4701;4706"
+				DisableSpecificWarnings="4100;4127;4206;4701;4706"
 				Detect64BitPortabilityProblems="FALSE"
 				AdditionalOptions="
-				/we4002 /we4003 /we4013 /we4020 /we4022 /we4024 /we4028 /we4029 /we4030 /we4031 /we4033 /we4047 /we4089 /we4113 /we4115 /we4715"
+				/we4002 /we4003 /we4013 /we4020 /we4022 /we4024 /we4028 /we4029 /we4030 /we4031 /we4033 /we4047 /we4089 /we4113 /we4115 /we4204 /we4715"
 				DebugInformationFormat="3"
 				ProgramDataBaseFileName="$(IntDir)\[target.output_pdb]"
 				CompileAsManaged="0"

Modified: subversion/branches/ev2-export/build/generator/templates/vcnet_vcxproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/generator/templates/vcnet_vcxproj.ezt?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/generator/templates/vcnet_vcxproj.ezt (original)
+++ subversion/branches/ev2-export/build/generator/templates/vcnet_vcxproj.ezt Sat Feb 23 01:25:38 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>
@@ -63,8 +63,8 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <BrowseInformation>true</BrowseInformation>
       <ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
-      <DisableSpecificWarnings>4100;4127;4204;4206;4701;4706;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-      <TreatSpecificWarningsAsErrors>4002;4003;4013;4020;4022;4024;4028;4029;4030;4031;4033;4047;4089;4113;4115;4715;%(TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors>
+      <DisableSpecificWarnings>4100;4127;4206;4701;4706;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <TreatSpecificWarningsAsErrors>4002;4003;4013;4020;4022;4024;4028;4029;4030;4031;4033;4047;4089;4113;4115;4204;4715;%(TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors>
     </ClCompile>
 [is config_type "Application"]    <Link>
       <AdditionalDependencies>[for configs.libs][configs.libs];[end]%(AdditionalDependencies)</AdditionalDependencies>

Modified: subversion/branches/ev2-export/build/transform_sql.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/transform_sql.py?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/transform_sql.py (original)
+++ subversion/branches/ev2-export/build/transform_sql.py Sat Feb 23 01:25:38 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/ev2-export/build/win32/make_dist.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/win32/make_dist.py?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/win32/make_dist.py (original)
+++ subversion/branches/ev2-export/build/win32/make_dist.py Sat Feb 23 01:25:38 2013
@@ -217,6 +217,8 @@ _disttree = {'': OptFile('%(readme)s', '
                      File('%(blddir)s/../contrib/client-side/svn-push/svn-push.pdb'),
                      File('%(blddir)s/../tools/server-side/svnauthz.exe'),
                      File('%(blddir)s/../tools/server-side/svnauthz.pdb'),
+                     File('%(blddir)s/../tools/server-side/svnauthz-validate.exe'),
+                     File('%(blddir)s/../tools/server-side/svnauthz-validate.pdb'),
                      File('%(blddir)s/../tools/server-side/svn-populate-node-origins-index.exe'),
                      File('%(blddir)s/../tools/server-side/svn-populate-node-origins-index.pdb'),
                      File('%(blddir)s/../tools/dev/svnraisetreeconflict/svnraisetreeconflict.exe'),

Modified: subversion/branches/ev2-export/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/configure.ac?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/configure.ac (original)
+++ subversion/branches/ev2-export/configure.ac Sat Feb 23 01:25:38 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
 
@@ -883,21 +875,14 @@ AC_CHECK_FUNCS(symlink readlink)
 dnl check for uname
 AC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], [])
 
-dnl Process some configuration options ----------
+dnl check for termios
+AC_CHECK_HEADER(termios.h,[
+  AC_CHECK_FUNCS(tcgetattr tcsetattr,[
+    AC_DEFINE(HAVE_TERMIOS_H,1,[Defined if we have a usable termios library.])
+  ])
+])
 
-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.)]),
-[])
+dnl Process some configuration options ----------
 
 AC_ARG_WITH(openssl,
 AS_HELP_STRING([--with-openssl],
@@ -1095,9 +1080,12 @@ if test "$enable_optimization" = "yes"; 
         SVN_CFLAGS_ADD_IFELSE([-O])])
     else
       AC_MSG_NOTICE([Enabling optimizations for C])
-      SVN_CFLAGS_ADD_IFELSE([-O2],[],[
-        SVN_CFLAGS_ADD_IFELSE([-O1],[],[
-          SVN_CFLAGS_ADD_IFELSE([-O])])])
+      SVN_CFLAGS_ADD_IFELSE([-O3],[],[
+        SVN_CFLAGS_ADD_IFELSE([-O2],[],[
+          SVN_CFLAGS_ADD_IFELSE([-O1],[],[
+            SVN_CFLAGS_ADD_IFELSE([-O])])])])
+      SVN_CFLAGS_ADD_IFELSE([-flto -Wno-clobbered])
+      SVN_CFLAGS_ADD_IFELSE([-fwhole-program])
     fi
   fi
   if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
@@ -1108,9 +1096,12 @@ if test "$enable_optimization" = "yes"; 
         SVN_CXXFLAGS_ADD_IFELSE([-O])])
     else
       AC_MSG_NOTICE([Enabling optimizations for C++])
-      SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
-        SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
-          SVN_CXXFLAGS_ADD_IFELSE([-O])])])
+      SVN_CXXFLAGS_ADD_IFELSE([-O3],[],[
+        SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
+          SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
+            SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
+      SVN_CXXFLAGS_ADD_IFELSE([-flto -Wno-clobbered])
+      SVN_CXXFLAGS_ADD_IFELSE([-fwhole-program])
     fi
   fi
 elif test "$enable_optimization" = "no"; then

Modified: subversion/branches/ev2-export/contrib/server-side/fsfsfixer/fixer/find_good_id.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/contrib/server-side/fsfsfixer/fixer/find_good_id.py?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/contrib/server-side/fsfsfixer/fixer/find_good_id.py (original)
+++ subversion/branches/ev2-export/contrib/server-side/fsfsfixer/fixer/find_good_id.py Sat Feb 23 01:25:38 2013
@@ -1,5 +1,12 @@
 #!/usr/bin/env python
 
+# PER-REPOSITORY CONFIGURATION
+#
+# The number of revs per shard of the repository being accessed, or None if
+# it is not sharded.
+# TODO: Read this from the db/format file.
+REVS_PER_SHARD=None
+
 usage = """
 Print the correct FSFS node-rev id, given one that is correct except for
 its byte-offset part.
@@ -28,8 +35,15 @@ def parse_id(id):
   return noderev, rev, offset
 
 def rev_file_path(repo_dir, rev):
-  # TODO: support shards
-  return os.path.join(repo_dir, 'db', 'revs', rev)
+  """Return the path to the revision file in the repository at REPO_DIR
+     (a path string) for revision number REV (int or string).
+     """
+  if REVS_PER_SHARD:
+    shard = int(rev) / REVS_PER_SHARD
+    path = os.path.join(repo_dir, 'db', 'revs', str(shard), str(rev))
+  else:
+    path = os.path.join(repo_dir, 'db', 'revs', str(rev))
+  return path
 
 def rev_file_indexes(repo_dir, rev):
   """Return (ids, texts), where IDS is a dictionary of all node-rev ids

Modified: subversion/branches/ev2-export/contrib/server-side/fsfsfixer/fixer/fix-rev.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/contrib/server-side/fsfsfixer/fixer/fix-rev.py?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/contrib/server-side/fsfsfixer/fixer/fix-rev.py (original)
+++ subversion/branches/ev2-export/contrib/server-side/fsfsfixer/fixer/fix-rev.py Sat Feb 23 01:25:38 2013
@@ -55,18 +55,21 @@ def run_cmd(cmd, *args):
   return run_cmd_quiet(cmd, *args)
 
 def replace_in_file(filename, old, new):
-  """Replace the string OLD with the string NEW in file FILE.
-     Replace all occurrences.  Raise an error if nothing changes."""
+  """Replace all occurrences of the string OLD with the string NEW in the
+     file at path FILENAME.  Raise an error if nothing changes."""
 
   verbose_print("Replacing '" + old + "' in file '" + filename + "'\n" +
                 "    with  '" + new + "'")
   # Note: we can't use '/' as a delimiter in the substitution command.
   run_cmd('perl', '-pi.bak', '-e', "s," + old + "," + new + ",", filename)
-  if run_cmd_quiet('cmp', '--quiet', filename, filename + '.bak') == 0:
-    raise FixError("'" + filename + "' is unchanged after sed substitution.")
+  if run_cmd_quiet('cmp', '--quiet', filename, filename + '.bak') != 1:
+    raise FixError("failed to substitute '" + old + "' with '" + new + "' in file '" + filename + "'.")
   os.remove(filename + '.bak')
 
 def replace_in_rev_file(repo_dir, rev, old, new):
+  """Replace all occurrences of the string OLD with the string NEW in the
+     revision file for revision REV in the repository at REPO_DIR.  Raise an
+     error if nothing changes."""
   rev_file = rev_file_path(repo_dir, rev)
   replace_in_file(rev_file, old, new)
 

Modified: subversion/branches/ev2-export/contrib/server-side/svncutter/svncutter
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/contrib/server-side/svncutter/svncutter?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/contrib/server-side/svncutter/svncutter (original)
+++ subversion/branches/ev2-export/contrib/server-side/svncutter/svncutter Sat Feb 23 01:25:38 2013
@@ -30,7 +30,8 @@ Available subcommands:
    log
    setlog
    skeleton
-   branchdel
+   expunge
+   renumber
 """
 
 oneliners = {
@@ -41,8 +42,9 @@ oneliners = {
     "proprename": "Renaming revision properties",
     "log":        "Extracting log entries",
     "setlog":     "Mutating log entries",
-    "skeleton":   "Strip content, leave only headers",
-    "branchdel":  "Delete a specified branch",
+    "skeleton":   "Replace content with unique cookies, preserving structure",
+    "expunge":    "Expunge operations by Node-path header",
+    "renumber":   "Renumber revisions so they're contiguous",
     }
 
 helpdict = {
@@ -63,7 +65,7 @@ unconditionally removed.  The tool will 
 excised remove is part of a clique eligible for squashing.  Note that
 svncutter does not perform any checks on whether the repository
 history is afterwards valid; if you delete a node using this option,
-you won't find out you have a problem intil you attempt to load the
+you won't find out you have a problem until you attempt to load the
 resulting dumpfile.
 
 svncutter attempts to fix up references to Subversion revisions in log
@@ -92,25 +94,23 @@ that range to pass to standard output.  
 includes the dumpfile header.
 """,
     "propdel": """\
-propdel: usage: svncutter ---revprop PROPNAME [-r SELECTION] propdel
+propdel: usage: svncutter [-r SELECTION] propdel PROPNAME...
+
+Delete the property PROPNAME. May be restricted by a revision
+selection. You may specify multiple properties to be deleted.
 
-Delete the unversioned revision property PROPNAME. May
-be restricted by a revision selection. You may specify multiple
-prperties to be deleted.
 """,
     "propset": """\
-propset: usage: svncutter ---revprop PROPNAME=PROPVAL [-r SELECTION] propset
+propset: usage: svncutter [-r SELECTION] propset PROPNAME=PROPVAL...
 
-Set the unversioned revision property PROPNAME to PROPVAL. May
-be restricted by a revision selection. You may specify multiple
-prperties to be deleted.
+Set the property PROPNAME to PROPVAL. May be restricted by a revision
+selection. You may specify multiple property settings.
 """,
     "proprename": """\
-proprename: usage: svncutter ---revprop OLDNAME->NEWNAME [-r SELECTION] proprename
+proprename: usage: svncutter [-r SELECTION] proprename OLDNAME->NEWNAME...
 
-Rename the unversioned revision property OLDNAME to NEWNAME. May
-be restricted by a revision selection. You may specify multiple
-prperties to be renamed.
+Rename the property OLDNAME to NEWNAME. May be restricted by a
+revision selection. You may specify multiple properties to be renamed.
 """,
     "log": """\
 log: usage: svncutter [-r SELECTION] log
@@ -128,13 +128,21 @@ Replacements may be restricted to a spec
     "skeleton": """\
 skeleton: usage: svncutter [-r SELECTION] skeleton
 
-Strip out all content.  Does not produce a valid dumpfile, but may be useful
+Replace content with unique generated cookies.  Useful
 when you need to examine a particularly complex node structure.
 """,
-    "branchdel": """\
-branchdelete: usage: svncutter [-r SELECTION ] branchdel BRANCHNAME
+    "expunge": """\
+expunge: usage: svncutter [-r SELECTION ] expunge PATTERN...
+
+Delete all operations with Node-path headers matching the specified
+Python regular expressions.  Any revision left with no Node records
+after this filtering has its Revision record removed as well
+""",
+    "renumber": """\
+renumber: usage: svncutter renumber
 
-Delete all operations on the specified branch.
+Renumber all revisions, patching Node-copyfrom headers as required.
+Any selection option is ignored. Takes no arguments.
 """,
     }
 
@@ -220,45 +228,60 @@ class LineBufferedSource:
     def has_line_buffered(self):
         return self.linebuffer is not None
 
+class Properties:
+    def __init__(self, source):
+        self.properties = {}
+        self.propkeys = []
+        while not source.peek().startswith("PROPS-END"):
+            source.require("K")
+            keyhd = source.readline()
+            key = keyhd.strip()
+            valhd = source.require("V")
+            vlen = int(valhd.split()[1])
+            value = source.read(vlen)
+            source.require(os.linesep)
+            self.properties[key] = value
+            self.propkeys.append(key)
+        source.flush()
+    def __str__(self):
+        st = ""
+        for key in self.propkeys:
+            if key in self.properties:
+                st += "K %d%s" % (len(key), os.linesep) 
+                st += "%s%s" % (key, os.linesep) 
+                st += "V %d%s" % (len(self.properties[key]), os.linesep) 
+                st += "%s%s" % (self.properties[key], os.linesep) 
+        st += "PROPS-END\n"
+        return st
+
 class DumpfileSource(LineBufferedSource):
     "This class knows about dumpfile format."
     def __init__(self, infile, baton=None):
         LineBufferedSource.__init__(self, infile)
         self.baton = baton
+        self.revision = None
+    @staticmethod
+    def set_length(header, line, val):
+        return re.sub("(?<=" + header + "-length: )[0-9]+", str(val), line)
     def read_revision_header(self, property_hook=None):
         "Read a revision header, parsing its properties."
-        properties = {}
-        propkeys = []
         stash = self.require("Revision-number:")
-        revision = int(stash.split()[1])
+        self.revision = int(stash.split()[1])
         stash += self.require("Prop-content-length:")
         stash += self.require("Content-length:")
         stash += self.require(os.linesep)
-        while not self.peek().startswith("PROPS-END"):
-            self.require("K")
-            keyhd = self.readline()
-            key = keyhd.strip()
-            valhd = self.require("V")
-            vlen = int(valhd.split()[1])
-            value = self.read(vlen)
-            self.require(os.linesep)
-            properties[key] = value
-            propkeys.append(key)
+        props = Properties(self)
         if property_hook:
-            (propkeys, properties) = property_hook(propkeys, properties, revision)
-        for key in propkeys:
-            if key in properties:
-                stash += "K %d%s" % (len(key), os.linesep) 
-                stash += "%s%s" % (key, os.linesep) 
-                stash += "V %d%s" % (len(properties[key]), os.linesep) 
-                stash += "%s%s" % (properties[key], os.linesep) 
-        stash += self.flush()
+            (props.propkeys, props.properties) = property_hook(props.propkeys, props.properties)
+            stash = DumpfileSource.set_length("Prop-content", stash, len(str(props)))
+            stash = DumpfileSource.set_length("Content", stash, len(str(props)))
+        stash += str(props)
         while self.peek() == '\n':
             stash += self.readline()
         if self.baton:
             self.baton.twirl()
-        return (revision, stash, properties)
-    def read_node(self):
+        return (stash, props.properties)
+    def read_node(self, property_hook=None):
         "Read a node header and body."
         #print "READ NODE BEGINS"
         header = self.require("Node-path:")
@@ -273,15 +296,10 @@ class DumpfileSource(LineBufferedSource)
                 break
         properties = ""
         if "Prop-content-length" in header:
-            while True:
-                line = self.readline()
-                #print "I see property line", repr(line)
-                if not line:
-                    sys.stderr.write('unexpected EOF in node properties' + os.linesep)
-                    sys.exit(1)
-                properties += line
-                if line == 'PROPS-END\n':
-                    break
+            props = Properties(self)
+            if property_hook:
+                (props.propkeys, props.properties) = property_hook(props.propkeys, props.properties)
+            properties = str(props)
         content = ""
         if "Text-content-length" in header:
             while True:
@@ -294,6 +312,11 @@ class DumpfileSource(LineBufferedSource)
                     break
                 content += line
         #print "READ NODE ENDS"
+        if property_hook:
+            header = DumpfileSource.set_length("Prop-content", header,
+                                               len(properties))
+            header = DumpfileSource.set_length("Content", header,
+                                               len(properties) + len(content))
         return (header, properties, content)
     def read_until_next(self, prefix, revmap=None):
         "Accumulate lines until the next matches a specified prefix."
@@ -315,20 +338,49 @@ class DumpfileSource(LineBufferedSource)
                     oldrev = line.split()[1]
                     line = line.replace(oldrev, `revmap[int(oldrev)]`) 
                 stash += line
-    def apply_property_hook(self, selection, hook):
-        "Apply a property transformation on a specified range."
-        def innerhook(keyprops, propdict, revision):
-            if revision in selection:
-                return hook(keyprops, propdict, revision)
-            else:
-                return (keyprops, propdict)
+    def report(self, selection, nodehook, prophook=None):
+        "Report a filtered portion of content."
+        emit = 0 in selection
+        stash = self.read_until_next("Revision-number:")
+        if emit:
+            sys.stdout.write(stash)
+        if not self.has_line_buffered():    
+            return
         while True:
-            sys.stdout.write(self.read_until_next("Revision-number:"))
-            if not self.has_line_buffered():    
+            nodecount = 0
+            (stash, properties) = self.read_revision_header(prophook)
+            if self.revision in selection:
+                pass
+            elif self.revision == selection.upperbound()+1:
                 return
             else:
-                (revision,stash,properties) = self.read_revision_header(innerhook)
-                sys.stdout.write(stash)
+                self.read_until_next("Revision-number:")
+                continue
+            while True:
+                line = self.readline()
+                if not line:
+                    return
+                elif line == '\n':
+                    sys.stdout.write(line)
+                    continue
+                elif line.startswith("Revision-number:"):
+                    self.push(line)
+                    if stash and nodecount == 0:
+                        sys.stdout.write(stash)
+                    break
+                elif line.startswith("Node-path:"):
+                    nodecount += 1
+                    self.push(line)
+                    (header, properties, content) = self.read_node(prophook)
+                    emit = nodehook(header, properties, content)
+                    if emit and stash:
+                        emit = stash + emit
+                        stash = ""
+                    sys.stdout.write(emit)
+                    continue
+                else:
+                    sys.stderr.write("svncutter: parse at %s doesn't look right (%s), aborting!\n" % (self.revision, repr(line)))
+                    sys.exit(1)
 
     def __del__(self):
         if self.baton:
@@ -353,7 +405,9 @@ class SubversionRange:
             if lower == "HEAD":
                 sys.stderr.write("svncutter: can't accept HEAD as lower bound of a range.\n")
                 sys.exit(1)
-            elif upper == "HEAD" or rev in range(lower, upper+1):
+            elif upper == "HEAD":
+                upper = sys.maxint-1
+            if rev >= lower and rev <= upper:
                 return True
         return False
     def upperbound(self):
@@ -440,50 +494,6 @@ def reference_mapper(value, mutator, fla
                 value = value[:m.start(1)] + new + value[m.end(1):]
     return value
 
-def report(source, selection, hook):
-    "Apply hook to a portion of the dump file defined by a revision selection."
-    emit = 0 in selection
-    stash = source.read_until_next("Revision-number:")
-    if emit:
-        sys.stdout.write(stash)
-    if not source.has_line_buffered():    
-        return
-    while True:
-        nodecount = 0
-        (revision,stash,properties) = source.read_revision_header()
-        if revision in selection:
-            pass
-        elif revision == selection.upperbound()+1:
-            return
-        else:
-            source.read_until_next("Revision-number:")
-            continue
-        while True:
-            line = source.readline()
-            if not line:
-                return
-            elif line == '\n':
-                sys.stdout.write(line)
-                continue
-            elif line.startswith("Revision-number:"):
-                source.push(line)
-                if stash and nodecount == 0:
-                    sys.stdout.write(stash)
-                break
-            elif line.startswith("Node-path:"):
-                nodecount += 1
-                source.push(line)
-                (header, properties, content) = source.read_node()
-                emit = hook(header, properties, content)
-                if emit and stash:
-                    emit = stash + emit
-                    stash = ""
-                sys.stdout.write(emit)
-                continue
-            else:
-                sys.stderr.write("svncutter: parse at %s doesn't look right (%s), aborting!\n" % (revision, repr(line)))
-                sys.exit(1)
-
 # Generic machinery ends here, actual command implementations begin
 
 def squash(source, timefuzz,
@@ -516,30 +526,30 @@ def squash(source, timefuzz,
                 outmap.append((numbered-1, dupes))
             break
         else:
-            (revision, stash, properties) = source.read_revision_header(hacklog)
+            (stash, properties) = source.read_revision_header(hacklog)
             # We have all properties of this revision.
             # Compute whether to merge it with the previous one.
             skip = "svn:log" in properties and "svn:author" in properties \
                    and properties["svn:log"] == prevprops.get("svn:log") \
                    and properties["svn:author"] == prevprops.get("svn:author") \
-                   and (selection is None or revision in selection) \
+                   and (selection is None or source.revision in selection) \
                    and abs(isotime(properties["svn:date"]) - isotime(prevprops.get("svn:date"))) < timefuzz
             # Did user request an unconditional omission?
-            omit = excise is not None and revision in excise
+            omit = excise is not None and source.revision in excise
             if skip and omit:
                 sys.stderr.write("squash: can't omit a revision about to be squashed.\n")
                 sys.exit(1)
             # Treat spans of omitted commits as cliques for reporting
-            if omit and excise is not None and revision-1 in excise:
+            if omit and excise is not None and source.revision-1 in excise:
                 skip = True
             # The magic moment
             if skip:
                 skipcount += 1
-                clique_map[revision] = clique_base
+                clique_map[source.revision] = clique_base
             else:
-                clique_base = revision
+                clique_base = source.revision
                 clique_map[clique_base] = clique_base
-                squash_map[clique_base] = revision - skipcount
+                squash_map[clique_base] = source.revision - skipcount
                 if excise is not None and dupes and dupes[0] in excise:
                     outmap.append((None, dupes))
                 elif numbered >= 1:
@@ -551,11 +561,11 @@ def squash(source, timefuzz,
                     sys.stdout.write(stash)
                     prevprops = properties
                     numbered += 1
-            dupes.append(revision)
+            dupes.append(source.revision)
         # Go back around to copying to the next revision header.
     if mapto:
         mapto.write(("%% %d out of %d original revisions squashed, leaving %d" \
-                     % (skipcount, revision, numbered-1)) + os.linesep)
+                     % (skipcount, source.revision, numbered-1)) + os.linesep)
         if not compressmap:
             for (numbered, dupes) in outmap:
                 if numbered is None:
@@ -636,43 +646,50 @@ def select(source, selection):
             return
         else:
             revision = int(source.linebuffer.split()[1])
-            if revision in selection:
+            emit = revision in selection
+            if emit:
                 sys.stdout.write(source.flush())
-                emit = True
             elif revision == selection.upperbound()+1:
                 return
             else:
                 source.flush()
 
 def propdel(source, properties, selection):
-    "Delete unversioned revision properties."
-    def delhook(propkeys, propdict, revision):
+    "Delete properties."
+    def __revhook(propkeys, propdict):
         for propname in properties:
             if propname in propdict:
                 del propdict[propname]
         return (propkeys, propdict)
-    source.apply_property_hook(selection, delhook)
+    def __nodehook(header, properties, content):
+        return header + properties + content
+    source.report(selection, __nodehook, __revhook)
 
 def propset(source, properties, selection):
-    "Set unversioned revision properties."
-    def sethook(propkeys, propdict, revision):
+    "Set properties."
+    def __revhook(propkeys, propdict):
         for prop in properties:
             (propname, propval) = prop.split("=")
             if propname in propdict:
                 propdict[propname] = propval
         return (propkeys, propdict)
-    source.apply_property_hook(selection, sethook)
+    def __nodehook(header, properties, content):
+        return header + properties + content
+    source.report(selection, __nodehook, __revhook)
 
 def proprename(source, properties, selection):
-    "Rename unversioned revision properties."
-    def renamehook(propkeys, propdict, revision):
+    "Rename properties."
+    def __revhook(propkeys, propdict):
         for prop in properties:
             (oldname, newname) = prop.split("->")
             if oldname in propdict:
                 propdict[newname] = propdict[oldname]
                 del propdict[oldname]
+                propkeys[propkeys.index(oldname)] = newname
         return (propkeys, propdict)
-    source.apply_property_hook(selection, renamehook)
+    def __nodehook(header, properties, content):
+        return header + properties + content
+    source.report(selection, __nodehook, __revhook)
 
 def log(source, selection):
     "Extract log entries."
@@ -681,7 +698,7 @@ def log(source, selection):
         if not source.has_line_buffered():    
             return
         else:
-            (revision, stash, props) = source.read_revision_header()
+            (stash, props) = source.read_revision_header()
             logentry = props.get("svn:log")
             if logentry:
                 print "-" * 72
@@ -689,7 +706,7 @@ def log(source, selection):
                 date = props["svn:date"].split(".")[0]
                 date = time.strptime(date, "%Y-%m-%dT%H:%M:%S")
                 date = time.strftime("%Y-%m-%d %H:%M:%S +0000 (%a, %d %b %Y)", date)
-                print "r%s | %s | %s | %d lines" % (revision,
+                print "r%s | %s | %s | %d lines" % (self.revision,
                                                     author,
                                                     date,
                                                     logentry.count(os.linesep))
@@ -698,11 +715,11 @@ def log(source, selection):
 def setlog(source, logpatch, selection):
     "Mutate log entries."
     logpatch = Logfile(file(logpatch), selection)
-    def loghook(propkeys, propdict, revision):
+    def loghook(propkeys, propdict):
         if "svn:log" in propkeys and revision in logpatch:
-            (author, date, logentry) = logpatch[revision]
+            (author, date, logentry) = logpatch[source.revision]
             if author != propdict.get("svn:author", "(no author)"):
-                sys.stderr.write("svncutter: author of revision %s doesn't look right, aborting!\n" % revision)
+                sys.stderr.write("svncutter: author of revision %s doesn't look right, aborting!\n" % source.revision)
                 sys.exit(1)
             propdict["svn:log"] = logentry
         return (propkeys, propdict)
@@ -710,23 +727,66 @@ def setlog(source, logpatch, selection):
 
 def skeletonize(source, selection):
     "Skeletonize a portion of the dump file defined by a revision selection."
-    report(source, selection, lambda h, p, c: h + p)
-
-def branchdel(source, selection, branchname):
-    "Strip out ops defined by a revision selection and a branch name."
-    def __branchdel(header, properties, content):
-        if re.search("Node-path: " + branchname, header):
-            return ""
+    def __skeletonize(header, properties, content):
+        def get_header(hd, name):
+            m = re.search(name + ": (.*)", hd)
+            return m and m.group(1)
+        def set_length(hd, name, val):
+            return re.sub("(?<=%s: )[0-9]+" % name, str(val), hd)
+        if content:
+            tell = "Revision is %s, file path is %s.\n\n\n" % \
+                      (source.revision, get_header(header, "Node-path"),)
+            # Avoid replacing symlinks, a reposurgeon sanity check barfs.
+            if content.startswith("link "):
+                content = content + tell
+            else:
+                content = tell
+            header = set_length(header,
+                                "Text-content-length", len(content)-2)
+            header = set_length(header,
+                                "Content-length", len(properties)+len(content)-2)
+        header = re.sub("Text-content-md5:.*\n", "", header)
+        header = re.sub("Text-content-sha1:.*\n", "", header)
+        header = re.sub("Text-copy-source-md5:.*\n", "", header)
+        header = re.sub("Text-copy-source-sha1:.*\n", "", header)
+        return header + properties + content
+    source.report(selection, __skeletonize)
+
+def expunge(source, selection, patterns):
+    "Strip out ops defined by a revision selection and a path regexp."
+    def __expunge(header, properties, content):
+        for pattern in patterns:
+            if re.search("Node-path: " + pattern, header):
+                return ""
         else:
             return header + properties + content
-    report(source, selection, __branchdel)
+    source.report(selection, __expunge)
+
+def renumber(source):
+    "Renumber all revisions."
+    renumbering = {}
+    counter = 0
+    while True:
+        line = source.readline()
+        if not line:
+            break
+        elif line.startswith("Revision-number: "):
+            oldrev = line.split(":")[1].strip()
+            sys.stdout.write("Revision-number: %d\n" % counter)
+            renumbering[oldrev] = counter
+            counter += 1
+        elif line.startswith("Node-copyfrom-rev:"):
+            oldrev = line.split(":")[1].strip()
+            sys.stdout.write("Node-copyfrom-rev: %s\n" % renumbering[oldrev])
+        else:
+            sys.stdout.write(line)
 
 if __name__ == '__main__':
     try:
         (options, arguments) = getopt.getopt(sys.argv[1:], "ce:fl:m:p:qr:s",
                                              ["excise", "flagrefs", "revprop=",
                                               "logpatch=", "map=",
-                                              "quiet", "range=", "skeleton"])
+                                              "quiet", "range="])
         selection = SubversionRange("0:HEAD")
         timefuzz = 300	# 5 minute fuzz
         compressmap = False
@@ -766,21 +826,11 @@ if __name__ == '__main__':
             squash(DumpfileSource(sys.stdin, baton),
                    timefuzz, mapto, selection, excise, flagrefs, compressmap)
         elif arguments[0] == "propdel":
-            if not revprops:
-                sys.stderr.write("svncutter: propdel requires one or more --revprop options.\n")
-            if progress:
-                baton = Baton("", "done")
-            else:
-                baton = None
-            propdel(DumpfileSource(sys.stdin, baton), revprops, selection)
+            propdel(DumpfileSource(sys.stdin, baton), revprops + arguments[1:], selection)
         elif arguments[0] == "propset":
-            if not revprops:
-                sys.stderr.write("svncutter: propset requires one or move --revprop options.\n")
-            propset(DumpfileSource(sys.stdin, baton), revprops, selection)
+            propset(DumpfileSource(sys.stdin, baton), revprops + arguments[1:], selection)
         elif arguments[0] == "proprename":
-            if not revprops:
-                sys.stderr.write("svncutter: proprename requires one or move --revprop options.\n")
-            propset(DumpfileSource(sys.stdin, baton), revprops, selection)
+            proprename(DumpfileSource(sys.stdin, baton), revprops + arguments[1:], selection)
         elif arguments[0] == "select":
             select(DumpfileSource(sys.stdin, baton), selection)
         elif arguments[0] == "log":
@@ -791,8 +841,10 @@ if __name__ == '__main__':
             setlog(DumpfileSource(sys.stdin, baton), logpatch, selection)
         elif arguments[0] == "skeleton":
             skeletonize(DumpfileSource(sys.stdin, baton), selection)
-        elif arguments[0] == "branchdel":
-            branchdel(DumpfileSource(sys.stdin, baton), selection, arguments[1])
+        elif arguments[0] == "expunge":
+            expunge(DumpfileSource(sys.stdin, baton), selection, arguments)
+        elif arguments[0] == "renumber":
+            renumber(DumpfileSource(sys.stdin, baton))
         elif arguments[0] == "help":
             if len(arguments) == 1:
                 sys.stdout.write(__doc__)

Modified: subversion/branches/ev2-export/get-deps.sh
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/get-deps.sh?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/get-deps.sh (original)
+++ subversion/branches/ev2-export/get-deps.sh Sat Feb 23 01:25:38 2013
@@ -25,7 +25,7 @@
 
 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'))
@@ -40,9 +40,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.

Modified: subversion/branches/ev2-export/notes/api-errata/1.7/ra001.txt
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/notes/api-errata/1.7/ra001.txt?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/notes/api-errata/1.7/ra001.txt (original)
+++ subversion/branches/ev2-export/notes/api-errata/1.7/ra001.txt Sat Feb 23 01:25:38 2013
@@ -19,7 +19,7 @@ accordance with the constraints of that 
 == Details of New Behavior ==
 
 The ra_serf client-side HTTP/DAV layer (introduced in Subversion 1.4, and
-made the default DAV layer in Subversion 1.7) does not respect all the
+made the only DAV layer in Subversion 1.8) does not respect all the
 ordering constraints of the delta editor API: it may open two sibling
 directores at the same time, which the delta editor API does not permit.
 

Modified: subversion/branches/ev2-export/notes/dump-load-format.txt
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/notes/dump-load-format.txt?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/notes/dump-load-format.txt (original)
+++ subversion/branches/ev2-export/notes/dump-load-format.txt Sat Feb 23 01:25:38 2013
@@ -1,6 +1,6 @@
 = How to interpret Subversion dumpfiles =
 
-Version 1.0, 2012-01-18
+Version 1.1, 2013-02-02
 
 == Introduction ==
 
@@ -13,13 +13,16 @@ a versioned filesystem-like store, such 
 system.  It derives from and incorporates some incomplete notes from 
 before r39883.
 
+=== Unresolved questions ===
+
 1. In interpreting a Node record which has both a copyfrom source and
 a property section, it is possible that the copy source node itself
 has a property section.  How are they to be combined?
 
-Also note that the section on the semantics of kinds of operations 
-documents a minor bug at r39883 in the behavior of "add", which 
-should be fixed.
+2. The section on the semantics of kinds of operations documents a
+minor bug at r39883 in the behavior of "add".  Has this been fixed?
+
+Portions of text relevant to these questions are tagged with FIXME.
 
 == Syntax ==
 
@@ -131,7 +134,9 @@ Node-action: {change | add | delete | re
 [Node-copyfrom-rev: <rev>]
 [Node-copyfrom-path: <path> ]
 [Text-copy-source-md5: <blob>]
+[Text-copy-source-sha1: <blob>]
 [Text-content-md5: <blob>]
+[Text-content-sha1: <blob>]
 [Text-content-length: <T>]
 [Prop-content-length: <P>]
 [Content-length: Y]
@@ -161,10 +166,11 @@ present, or neither will be.  They pair 
 the node. Copy-source semantics will be described in detail later in
 this document.
 
-The Text-content-md5 and Text-copy-source-md5 lines are hash integrity
-checks and will be present only if Text-content-length and the copfyrom
-pair (respectively) are also present. A decoder may use them to verify
-that the source content they refer to has not been corrupted.
+The Text-content-{md5,sha1} and Text-copy-source-{md5,sha1} lines are
+hash integrity checks and will be present only if Text-content-length
+and the copfyrom pair (respectively) are also present. A decoder may
+use them to verify that the source content they refer to has not been
+corrupted.
 
 Text-content-length will be present only when there is a text section.
 Zero is a legal value for this length, indicating an empty file.
@@ -177,7 +183,7 @@ a delete operation cannot have either.  
 copyfrom sources may also not have either.
 
 Again, the '!' stands in for a mandatory empty line following the
-RFC822-style headers. A body may follow
+RFC822-style headers. A body may follow.
 
 == Semantics ==
 
@@ -236,7 +242,7 @@ about this issue will help if you read t
 |Fails on non-existent path |    no    |  yes   |   yes    |   yes    |   
 |======================================================================
 
-* As of December 2011 there is a minor bug: Adding a file with history
+FIXME: As of December 2011 there is a minor bug: Adding a file with history
 twice _in two different revisions_ succeeds silently.
 
 .Directory operations
@@ -352,6 +358,16 @@ simply issue a node with an empty proper
 is different from an *absent* properties section, which will change
 no properties and will be associated with a change to content!
 
+=== Representation of symbolic links ===
+
+When the Subversion client sends a content blob representing a
+symbolic link (that is, with the svn:special property) the contents of
+the blob is not just the link's target path. It will have the prefix
+"link ".  The client likewise interprets this prefix at checkout time.
+
+In the future, other special blob formats with other prefix keywords may
+be defined.  None such yet exist as of revision 1441992 (February 2013).
+
 === Implementation pragmatics ===
 
 Because directory operations with copyfroms don't specify all the file

Modified: subversion/branches/ev2-export/subversion/bindings/swig/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/swig/INSTALL?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/swig/INSTALL (original)
+++ subversion/branches/ev2-export/subversion/bindings/swig/INSTALL Sat Feb 23 01:25:38 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/ev2-export/subversion/bindings/swig/include/svn_containers.swg
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/swig/include/svn_containers.swg?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/swig/include/svn_containers.swg (original)
+++ subversion/branches/ev2-export/subversion/bindings/swig/include/svn_containers.swg Sat Feb 23 01:25:38 2013
@@ -492,6 +492,12 @@
   }
 }
 #endif
+#ifdef SWIGPERL
+%typemap(argout) apr_array_header_t **externals_p {
+  %append_output
+    (svn_swig_pl_convert_array(*$1, $descriptor(svn_wc_external_item2_t *)));
+}
+#endif
 #ifdef SWIGRUBY
 %typemap(argout) apr_array_header_t **externals_p {
   %append_output(svn_swig_rb_apr_array_to_array_external_item2(*$1));

Modified: subversion/branches/ev2-export/subversion/bindings/swig/include/svn_types.swg
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/swig/include/svn_types.swg?rev=1449262&r1=1449261&r2=1449262&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/swig/include/svn_types.swg (original)
+++ subversion/branches/ev2-export/subversion/bindings/swig/include/svn_types.swg Sat Feb 23 01:25:38 2013
@@ -1169,53 +1169,7 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
 */
 #ifdef SWIGPERL
 %typemap(in) svn_opt_revision_t * (svn_opt_revision_t rev) {
-    $1 = &rev;
-    if ($input == NULL || $input == &PL_sv_undef || !SvOK($input)) {
-        rev.kind = svn_opt_revision_unspecified;
-    }
-    else if (sv_isobject($input) && sv_derived_from($input, "_p_svn_opt_revision_t")) {
-        SWIG_ConvertPtr($input, (void **)&$1, $1_descriptor, 0);
-    }
-    else if (looks_like_number($input)) {
-        rev.kind = svn_opt_revision_number;
-        rev.value.number = SvIV($input);
-    }
-    else if (SvPOK($input)) {
-        char *input = SvPV_nolen($input);
-        if (svn_cstring_casecmp(input, "BASE") == 0)
-            rev.kind = svn_opt_revision_base;
-        else if (svn_cstring_casecmp(input, "HEAD") == 0)
-            rev.kind = svn_opt_revision_head;
-        else if (svn_cstring_casecmp(input, "WORKING") == 0)
-            rev.kind = svn_opt_revision_working;
-        else if (svn_cstring_casecmp(input, "COMMITTED") == 0)
-            rev.kind = svn_opt_revision_committed;
-        else if (svn_cstring_casecmp(input, "PREV") == 0)
-            rev.kind = svn_opt_revision_previous;
-        else if (*input == '{') {
-            svn_boolean_t matched;
-            apr_time_t tm;
-            svn_error_t *err;
-
-            char *end = strchr(input,'}');
-            if (!end)
-                SWIG_croak("unknown opt_revision_t type");
-            *end = '\0';
-            err = svn_parse_date (&matched, &tm, input + 1, apr_time_now(),
-                                  svn_swig_pl_make_pool ((SV *)NULL));
-            if (err) {
-                svn_error_clear (err);
-                SWIG_croak("unknown opt_revision_t type");
-            }
-            if (!matched)
-                SWIG_croak("unknown opt_revision_t type");
-
-            rev.kind = svn_opt_revision_date;
-            rev.value.date = tm;
-        } else
-            SWIG_croak("unknown opt_revision_t type");
-    } else
-        SWIG_croak("unknown opt_revision_t type");
+    $1 = svn_swig_pl_set_revision(&rev, $input);
 }
 #endif
 



Mime
View raw message