svn commit: r1156527 - /subversion/trunk/configure.ac
Author: danielsh Date: Thu Aug 11 08:07:30 2011 New Revision: 1156527 URL: http://svn.apache.org/viewvc?rev=1156527view=rev Log: * configure.ac (--with-libmagic): Correctly handle '--without-libmagic'. Found by: michael_rytting{_AT_}agilent.com Tested by: none Modified: subversion/trunk/configure.ac Modified: subversion/trunk/configure.ac URL: http://svn.apache.org/viewvc/subversion/trunk/configure.ac?rev=1156527r1=1156526r2=1156527view=diff == --- subversion/trunk/configure.ac (original) +++ subversion/trunk/configure.ac Thu Aug 11 08:07:30 2011 @@ -737,7 +737,7 @@ AC_ARG_WITH(libmagic,AS_HELP_STRING([--w AC_CHECK_LIB(magic, magic_open, [libmagic_found=builtin]) ]) libmagic_prefix=the default locations - else + elif test $withval != no; then libmagic_prefix=$withval save_cppflags=$CPPFLAGS CPPFLAGS=$CPPFLAGS -I$libmagic_prefix/include
svn commit: r1156528 - /subversion/branches/1.7.x/STATUS
Author: danielsh Date: Thu Aug 11 08:08:57 2011 New Revision: 1156528 URL: http://svn.apache.org/viewvc?rev=1156528view=rev Log: * STATUS += r1156527 Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1156528r1=1156527r2=1156528view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Thu Aug 11 08:08:57 2011 @@ -187,6 +187,13 @@ Candidate changes: Votes: +1: philip, rhuijben + * r1156527 + Accept --without-libmagic. + Justification: + Impossible to disable libmagic otherwise. + Votes: + +0: danielsh + Veto-blocked changes: =
svn commit: r1156691 - /subversion/branches/1.7.x/STATUS
Author: stsp Date: Thu Aug 11 17:24:52 2011 New Revision: 1156691 URL: http://svn.apache.org/viewvc?rev=1156691view=rev Log: * STATUS: Vote for r1156527. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1156691r1=1156690r2=1156691view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Thu Aug 11 17:24:52 2011 @@ -193,6 +193,7 @@ Candidate changes: Impossible to disable libmagic otherwise. Votes: +0: danielsh + +1: stsp Veto-blocked changes: =
svn commit: r1156697 - in /subversion/branches/fs-py/subversion: libsvn_fs_py/fs_fs.c libsvn_fs_py/py_util.c libsvn_fs_py/py_util.h python/svn/fs.py python/svn/prop.py
Author: hwright Date: Thu Aug 11 17:39:40 2011 New Revision: 1156697 URL: http://svn.apache.org/viewvc?rev=1156697view=rev Log: On the fs-py branch: Move most of the create_fs implementation into Python. * subversion/python/svn/fs.py (): A few more constants. (FS.__write_revision_zero): New. (FS._create_fs): Create the directories and files required for a FSFS filesystem. (FS.__setup_paths): Add another path. * subversion/python/svn/prop.py: New. * subversion/libsvn_fs_py/fs_fs.c (write_revision_zero): Remove. (svn_fs_py__create): Largely gut, in favor of the Python version. * subversion/libsvn_fs_py/py_util.c (get_int_attr_baton, get_int_attr, svn_fs_py__get_int_attr): New. * subversion/libsvn_fs_py/py_util.h (svn_fs_py__get_int_attr): New. Added: subversion/branches/fs-py/subversion/python/svn/prop.py (with props) Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c subversion/branches/fs-py/subversion/libsvn_fs_py/py_util.c subversion/branches/fs-py/subversion/libsvn_fs_py/py_util.h subversion/branches/fs-py/subversion/python/svn/fs.py Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c?rev=1156697r1=1156696r2=1156697view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c Thu Aug 11 17:39:40 2011 @@ -6196,40 +6196,11 @@ svn_fs_py__reserve_copy_id(const char ** return SVN_NO_ERROR; } -/* Write out the zeroth revision for filesystem FS. */ -static svn_error_t * -write_revision_zero(svn_fs_t *fs) -{ - const char *path_revision_zero = path_rev(fs, 0, fs-pool); - apr_hash_t *proplist; - svn_string_t date; - - /* Write out a rev file for revision 0. */ - SVN_ERR(svn_io_file_create(path_revision_zero, - PLAIN\nEND\nENDREP\n - id: 0.0.r0/17\n - type: dir\n - count: 0\n - text: 0 0 4 4 - 2d2977d1c96f487abe4a1e202dd03b4e\n - cpath: /\n - \n\n17 107\n, fs-pool)); - SVN_ERR(svn_io_set_file_read_only(path_revision_zero, FALSE, fs-pool)); - - /* Set a date on revision 0. */ - date.data = svn_time_to_cstring(apr_time_now(), fs-pool); - date.len = strlen(date.data); - proplist = apr_hash_make(fs-pool); - apr_hash_set(proplist, SVN_PROP_REVISION_DATE, APR_HASH_KEY_STRING, date); - return set_revision_proplist(fs, 0, proplist, fs-pool); -} - svn_error_t * svn_fs_py__create(svn_fs_t *fs, const char *path, apr_pool_t *pool) { - int format = SVN_FS_FS__FORMAT_NUMBER; fs_fs_data_t *ffd = fs-fsap_data; fs-path = apr_pstrdup(pool, path); @@ -6240,75 +6211,17 @@ svn_fs_py__create(svn_fs_t *fs, apr_pool_cleanup_register(fs-pool, ffd-p_fs, svn_fs_py__destroy_py_object, apr_pool_cleanup_null); - /* See if compatibility with older versions was explicitly requested. */ - if (fs-config) -{ - if (apr_hash_get(fs-config, SVN_FS_CONFIG_PRE_1_4_COMPATIBLE, - APR_HASH_KEY_STRING)) -format = 1; - else if (apr_hash_get(fs-config, SVN_FS_CONFIG_PRE_1_5_COMPATIBLE, -APR_HASH_KEY_STRING)) -format = 2; - else if (apr_hash_get(fs-config, SVN_FS_CONFIG_PRE_1_6_COMPATIBLE, -APR_HASH_KEY_STRING)) -format = 3; -} - ffd-format = format; - - /* Override the default linear layout if this is a new-enough format. */ - if (format = SVN_FS_FS__MIN_LAYOUT_FORMAT_OPTION_FORMAT) -ffd-max_files_per_dir = SVN_FS_FS_DEFAULT_MAX_FILES_PER_DIR; - - /* Create the revision data directories. */ - if (ffd-max_files_per_dir) -SVN_ERR(svn_io_make_dir_recursively(path_rev_shard(fs, 0, pool), pool)); - else -SVN_ERR(svn_io_make_dir_recursively(svn_dirent_join(path, PATH_REVS_DIR, -pool), -pool)); - - /* Create the revprops directory. */ - if (ffd-max_files_per_dir) -SVN_ERR(svn_io_make_dir_recursively(path_revprops_shard(fs, 0, pool), -pool)); - else -SVN_ERR(svn_io_make_dir_recursively(svn_dirent_join(path, -PATH_REVPROPS_DIR, -pool), -pool)); - - /* Create the transaction directory. */ - SVN_ERR(svn_io_make_dir_recursively(svn_dirent_join(path, PATH_TXNS_DIR, - pool), -
svn commit: r1156713 - in /subversion/branches/fs-py/subversion/libsvn_fs_py: fs.h fs_fs.c rep-cache.c tree.c
Author: hwright Date: Thu Aug 11 18:20:54 2011 New Revision: 1156713 URL: http://svn.apache.org/viewvc?rev=1156713view=rev Log: On the fs-py branch: Use the Python format number as the canonical location. * subversion/libsvn_fs_py/tree.c, subversion/libsvn_fs_py/fs_fs.c, subversion/libsvn_fs_py/rep-cache.c: Fetch the format number throughout, rather than using a version in the FS object. * subversion/libsvn_fs_py/fs.h (fs_fs_data_t): Remove format number. Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c subversion/branches/fs-py/subversion/libsvn_fs_py/rep-cache.c subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h?rev=1156713r1=1156712r2=1156713view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h Thu Aug 11 18:20:54 2011 @@ -206,8 +206,6 @@ typedef struct fs_fs_shared_data_t /* Private (non-shared) FSFS-specific data for each svn_fs_t object. */ typedef struct fs_fs_data_t { - /* The format number of this FS. */ - int format; /* The maximum number of files to store per directory (for sharded layouts) or zero (for linear layouts). */ int max_files_per_dir; Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c?rev=1156713r1=1156712r2=1156713view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c Thu Aug 11 18:20:54 2011 @@ -260,8 +260,10 @@ svn_fs_py__path_rev_absolute(const char apr_pool_t *pool) { fs_fs_data_t *ffd = fs-fsap_data; + int format; - if (ffd-format SVN_FS_FS__MIN_PACKED_FORMAT + SVN_ERR(svn_fs_py__get_int_attr(format, ffd-p_fs, format)); + if (format SVN_FS_FS__MIN_PACKED_FORMAT || ! is_packed_rev(fs, rev)) { *path = path_rev(fs, rev, pool); @@ -341,7 +343,10 @@ static APR_INLINE const char * path_txn_proto_rev(svn_fs_t *fs, const char *txn_id, apr_pool_t *pool) { fs_fs_data_t *ffd = fs-fsap_data; - if (ffd-format = SVN_FS_FS__MIN_PROTOREVS_DIR_FORMAT) + int format; + + svn_error_clear(svn_fs_py__get_int_attr(format, ffd-p_fs, format)); + if (format = SVN_FS_FS__MIN_PROTOREVS_DIR_FORMAT) return svn_dirent_join_many(pool, fs-path, PATH_TXN_PROTOS_DIR, apr_pstrcat(pool, txn_id, PATH_EXT_REV, (char *)NULL), @@ -354,7 +359,10 @@ static APR_INLINE const char * path_txn_proto_rev_lock(svn_fs_t *fs, const char *txn_id, apr_pool_t *pool) { fs_fs_data_t *ffd = fs-fsap_data; - if (ffd-format = SVN_FS_FS__MIN_PROTOREVS_DIR_FORMAT) + int format; + + svn_error_clear(svn_fs_py__get_int_attr(format, ffd-p_fs, format)); + if (format = SVN_FS_FS__MIN_PROTOREVS_DIR_FORMAT) return svn_dirent_join_many(pool, fs-path, PATH_TXN_PROTOS_DIR, apr_pstrcat(pool, txn_id, PATH_EXT_REV_LOCK, (char *)NULL), @@ -589,7 +597,10 @@ with_some_lock(svn_fs_t *fs, if (!err) { fs_fs_data_t *ffd = fs-fsap_data; - if (ffd-format = SVN_FS_FS__MIN_PACKED_FORMAT) + int format; + + SVN_ERR(svn_fs_py__get_int_attr(format, ffd-p_fs, format)); + if (format = SVN_FS_FS__MIN_PACKED_FORMAT) SVN_ERR(update_min_unpacked_rev(fs, pool)); #if 0 /* Might be a good idea? */ SVN_ERR(get_youngest(ffd-youngest_rev_cache, fs-path, @@ -1090,7 +1101,10 @@ svn_boolean_t svn_fs_py__fs_supports_mergeinfo(svn_fs_t *fs) { fs_fs_data_t *ffd = fs-fsap_data; - return ffd-format = SVN_FS_FS__MIN_MERGEINFO_FORMAT; + int format; + + SVN_ERR(svn_fs_py__get_int_attr(format, ffd-p_fs, format)); + return format = SVN_FS_FS__MIN_MERGEINFO_FORMAT; } static svn_error_t * @@ -1098,13 +1112,15 @@ read_config(svn_fs_t *fs, apr_pool_t *pool) { fs_fs_data_t *ffd = fs-fsap_data; + int format; + SVN_ERR(svn_fs_py__get_int_attr(format, ffd-p_fs, format)); SVN_ERR(svn_config_read2(ffd-config, svn_dirent_join(fs-path, PATH_CONFIG, pool), FALSE, FALSE, fs-pool)); /* Initialize ffd-rep_sharing_allowed. */ - if (ffd-format = SVN_FS_FS__MIN_REP_SHARING_FORMAT) + if (format = SVN_FS_FS__MIN_REP_SHARING_FORMAT) SVN_ERR(svn_config_get_bool(ffd-config, ffd-rep_sharing_allowed, CONFIG_SECTION_REP_SHARING,
svn commit: r1156717 - /subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py
Author: pburba Date: Thu Aug 11 18:31:29 2011 New Revision: 1156717 URL: http://svn.apache.org/viewvc?rev=1156717view=rev Log: Update test for issue #3986 'svn_client_mergeinfo_log API broken with WC target which inherits mergeinfo from repos' to cover another failing use case. * subversion/tests/cmdline/mergeinfo_tests.py (wc_target_inherits_mergeinfo_from_repos): Cover the use case analogous to that markphip provided in a JavaHL test - see http://svn.haxx.se/dev/archive-2011-08/0101.shtml Modified: subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py Modified: subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py?rev=1156717r1=1156716r2=1156717view=diff == --- subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py (original) +++ subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py Thu Aug 11 18:31:29 2011 @@ -500,30 +500,33 @@ def wc_target_inherits_mergeinfo_from_re sbox.build() wc_dir = sbox.wc_dir - wc_disk, wc_status = set_up_branch(sbox) + wc_disk, wc_status = set_up_branch(sbox, nbr_of_branches=2) A_COPY_path = os.path.join(wc_dir, 'A_COPY') rho_COPY_path = os.path.join(wc_dir, 'A_COPY', 'D', 'G', 'rho') - - # Merge -c4 ^/A/D/G/rho A_COPY\D\G\rho - # Merge -c6 ^/A A_COPY - # Commit as r7 + gamma_2_path = os.path.join(wc_dir, 'A_COPY_2', 'D', 'gamma') + tau_path = os.path.join(wc_dir, 'A', 'D', 'G', 'tau') + D_COPY_path = os.path.join(wc_dir, 'A_COPY', 'D') + + # Merge -c5 ^/A/D/G/rho A_COPY\D\G\rho + # Merge -c7 ^/A A_COPY + # Commit as r8 # # This gives us some explicit mergeinfo on the branch root and # one of its subtrees: # # Properties on 'A_COPY\D\G\rho': # svn:mergeinfo - # /A/D/G/rho:4 + # /A/D/G/rho:5 # Properties on 'A_COPY': # svn:mergeinfo - # /A:6 + # /A:7 svntest.actions.run_and_verify_svn(None, None, [], 'merge', sbox.repo_url + '/A/D/G/rho', - rho_COPY_path, '-c4') + rho_COPY_path, '-c5') svntest.actions.run_and_verify_svn(None, None, [], 'merge', sbox.repo_url + '/A', - A_COPY_path, '-c6') + A_COPY_path, '-c7') svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m', 'Cherrypicks to branch subtree and root', wc_dir) @@ -540,46 +543,108 @@ def wc_target_inherits_mergeinfo_from_re # Eligible : Non-recursive svntest.actions.run_and_verify_mergeinfo( adjust_error_for_server_version(''), -['3','4'], sbox.repo_url + '/A/D', subtree_wc, +['4','5'], sbox.repo_url + '/A/D', subtree_wc, '--show-revs', 'eligible') # Eligible : Recursive svntest.actions.run_and_verify_mergeinfo( adjust_error_for_server_version(''), -['3',], sbox.repo_url + '/A/D', subtree_wc, +['4'], sbox.repo_url + '/A/D', subtree_wc, '--show-revs', 'eligible', '-R') # Merged : Non-recursive # - # Currently this fails because r6 is not shown as merged, despite the fact + # Currently this fails because r7 is not shown as merged, despite the fact # that the target inherits it from ^/A_COPY svntest.actions.run_and_verify_mergeinfo( adjust_error_for_server_version(''), -['6'], sbox.repo_url + '/A/D', subtree_wc, +['7'], sbox.repo_url + '/A/D', subtree_wc, '--show-revs', 'merged') # Merged : Recursive # - # Currently this fails because r6 is again missing. + # Currently this fails because r7 is again missing. svntest.actions.run_and_verify_mergeinfo( adjust_error_for_server_version(''), -['4','6'], sbox.repo_url + '/A/D', subtree_wc, +['5','7'], sbox.repo_url + '/A/D', subtree_wc, '--show-revs', 'merged', '-R') + # Test that intersecting revisions in the 'svn mergeinfo' target + # from one source don't show up as merged when asking about a different + # source. + # + # In r9 make a change that effects two branches: + svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir) + svntest.main.file_write(gamma_2_path, New content.\n) + svntest.main.file_write(tau_path, New content.\n) + svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m', + 'Make changes under both A and A_COPY_2', + wc_dir) + + # In r10 merge r9 from A_COPY_2 to A_COPY. + # + # This gives us this mergeinfo: + # + # Properties on 'A_COPY': + # svn:mergeinfo + # /A:7 + # /A_COPY_2:9 + # Properties on 'A_COPY\D\G\rho': + # svn:mergeinfo + # /A/D/G/rho:5 + svntest.actions.run_and_verify_svn(None,
svn commit: r1156721 - /subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py
Author: pburba Date: Thu Aug 11 18:34:59 2011 New Revision: 1156721 URL: http://svn.apache.org/viewvc?rev=1156721view=rev Log: Follow-up to r1156717, remove some development commenting from the issue #3986 test. Modified: subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py Modified: subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py?rev=1156721r1=1156720r2=1156721view=diff == --- subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py (original) +++ subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py Thu Aug 11 18:34:59 2011 @@ -637,14 +637,14 @@ def wc_target_inherits_mergeinfo_from_re # list all tests here, starting with None: test_list = [ None, - #no_mergeinfo, - #mergeinfo, - #explicit_mergeinfo_source, - #mergeinfo_non_source, - #mergeinfo_on_unknown_url, - #non_inheritable_mergeinfo, - #recursive_mergeinfo, - #mergeinfo_on_pegged_wc_path, + no_mergeinfo, + mergeinfo, + explicit_mergeinfo_source, + mergeinfo_non_source, + mergeinfo_on_unknown_url, + non_inheritable_mergeinfo, + recursive_mergeinfo, + mergeinfo_on_pegged_wc_path, wc_target_inherits_mergeinfo_from_repos, ]
svn commit: r1156734 - in /subversion/branches/fs-py/subversion/libsvn_fs_py: fs.h fs_fs.c
Author: hwright Date: Thu Aug 11 18:57:18 2011 New Revision: 1156734 URL: http://svn.apache.org/viewvc?rev=1156734view=rev Log: On the fs-py branch: Use the Python version of max_files_per_dir as the canonical version. * subversion/libsvn_fs_py/fs.h (fs_fs_data_t): Remove max_files_per_dir member. * subversion/libsvn_fs_py/fs_fs.c: Fetch the max_files_per_dir value from the Python object, rather than a C struct. Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h?rev=1156734r1=1156733r2=1156734view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h Thu Aug 11 18:57:18 2011 @@ -206,10 +206,6 @@ typedef struct fs_fs_shared_data_t /* Private (non-shared) FSFS-specific data for each svn_fs_t object. */ typedef struct fs_fs_data_t { - /* The maximum number of files to store per directory (for sharded - layouts) or zero (for linear layouts). */ - int max_files_per_dir; - /* The revision that was youngest, last time we checked. */ svn_revnum_t youngest_rev_cache; Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c?rev=1156734r1=1156733r2=1156734view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c Thu Aug 11 18:57:18 2011 @@ -213,13 +213,17 @@ path_rev_packed(svn_fs_t *fs, svn_revnum apr_pool_t *pool) { fs_fs_data_t *ffd = fs-fsap_data; + int max_files_per_dir; - assert(ffd-max_files_per_dir); + svn_error_clear(svn_fs_py__get_int_attr(max_files_per_dir, ffd-p_fs, + max_files_per_dir)); + + assert(max_files_per_dir); assert(is_packed_rev(fs, rev)); return svn_dirent_join_many(pool, fs-path, PATH_REVS_DIR, apr_psprintf(pool, %ld.pack, - rev / ffd-max_files_per_dir), + rev / max_files_per_dir), kind, NULL); } @@ -227,11 +231,15 @@ static const char * path_rev_shard(svn_fs_t *fs, svn_revnum_t rev, apr_pool_t *pool) { fs_fs_data_t *ffd = fs-fsap_data; + int max_files_per_dir; + + svn_error_clear(svn_fs_py__get_int_attr(max_files_per_dir, ffd-p_fs, + max_files_per_dir)); - assert(ffd-max_files_per_dir); + assert(max_files_per_dir); return svn_dirent_join_many(pool, fs-path, PATH_REVS_DIR, apr_psprintf(pool, %ld, - rev / ffd-max_files_per_dir), + rev / max_files_per_dir), NULL); } @@ -239,10 +247,14 @@ static const char * path_rev(svn_fs_t *fs, svn_revnum_t rev, apr_pool_t *pool) { fs_fs_data_t *ffd = fs-fsap_data; + int max_files_per_dir; + + svn_error_clear(svn_fs_py__get_int_attr(max_files_per_dir, ffd-p_fs, + max_files_per_dir)); assert(! is_packed_rev(fs, rev)); - if (ffd-max_files_per_dir) + if (max_files_per_dir) { return svn_dirent_join(path_rev_shard(fs, rev, pool), apr_psprintf(pool, %ld, rev), @@ -280,11 +292,15 @@ static const char * path_revprops_shard(svn_fs_t *fs, svn_revnum_t rev, apr_pool_t *pool) { fs_fs_data_t *ffd = fs-fsap_data; + int max_files_per_dir; + + svn_error_clear(svn_fs_py__get_int_attr(max_files_per_dir, ffd-p_fs, + max_files_per_dir)); - assert(ffd-max_files_per_dir); + assert(max_files_per_dir); return svn_dirent_join_many(pool, fs-path, PATH_REVPROPS_DIR, apr_psprintf(pool, %ld, - rev / ffd-max_files_per_dir), + rev / max_files_per_dir), NULL); } @@ -292,8 +308,12 @@ static const char * path_revprops(svn_fs_t *fs, svn_revnum_t rev, apr_pool_t *pool) { fs_fs_data_t *ffd = fs-fsap_data; + int max_files_per_dir; - if (ffd-max_files_per_dir) + svn_error_clear(svn_fs_py__get_int_attr(max_files_per_dir, ffd-p_fs, + max_files_per_dir)); + + if (max_files_per_dir) { return svn_dirent_join(path_revprops_shard(fs, rev, pool), apr_psprintf(pool, %ld, rev), @@ -1103,7 +1123,7 @@
svn commit: r1156750 - in /subversion/trunk/subversion: libsvn_client/mergeinfo.c libsvn_client/mergeinfo.h tests/cmdline/mergeinfo_tests.py
Author: pburba Date: Thu Aug 11 19:16:24 2011 New Revision: 1156750 URL: http://svn.apache.org/viewvc?rev=1156750view=rev Log: More fixes for issue #3986 'svn_client_mergeinfo_log API broken with WC target which inherits mergeinfo from repos'. Prior to this change svn_client__get_repos_mergeinfo_catalog promised a a mergeinfo catalog with a key relative to RA_SESSION's session URL for the target, but keys relative to the *root* of the repository for the subtrees. It actually only ever did the latter...which caused some obvious problems for one of its two callers, svn_client__get_wc_or_repos_mergeinfo_catalog, which might call either svn_client__get_wc_mergeinfo_catalog or svn_client__get_repos_mergeinfo_catalog and return a catalog keyed on either repos-root-relative paths or session-relative-paths. Ouch. Both of these functions are now consistent, returning a catalog keyed on root-relative paths. * subversion/libsvn_client/mergeinfo.c (svn_client__get_repos_mergeinfo_catalog): Make the mergeinfo catalog returned by this function consistent with svn_client__get_wc_mergeinfo_catalog; the keys to the catalog are now relative to the root of the repository, rather than relative to the root of the RA session passed in. (svn_client__get_wc_or_repos_mergeinfo_catalog): Account for change in mergeinfo catalog keys provided by svn_client__get_repos_mergeinfo_catalog. (get_mergeinfo): Stop changing mergeinfo catalog keys from relative to the session URL to relative to the root of the repository, svn_client__get_wc_or_repos_mergeinfo_catalog does this itself now. * subversion/libsvn_client/mergeinfo.h (svn_client__get_repos_mergeinfo_catalog): Update doc string. * subversion/tests/cmdline/mergeinfo_tests.py (wc_target_inherits_mergeinfo_from_repos): Remove XFail decorator and comments. Modified: subversion/trunk/subversion/libsvn_client/mergeinfo.c subversion/trunk/subversion/libsvn_client/mergeinfo.h subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py Modified: subversion/trunk/subversion/libsvn_client/mergeinfo.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/mergeinfo.c?rev=1156750r1=1156749r2=1156750view=diff == --- subversion/trunk/subversion/libsvn_client/mergeinfo.c (original) +++ subversion/trunk/subversion/libsvn_client/mergeinfo.c Thu Aug 11 19:16:24 2011 @@ -476,28 +476,66 @@ svn_client__get_repos_mergeinfo_catalog( apr_pool_t *scratch_pool) { svn_error_t *err; - svn_mergeinfo_t repos_mergeinfo; + svn_mergeinfo_t repos_mergeinfo_cat; apr_array_header_t *rel_paths = apr_array_make(scratch_pool, 1, sizeof(rel_path)); APR_ARRAY_PUSH(rel_paths, const char *) = rel_path; /* Fetch the mergeinfo. */ - err = svn_ra_get_mergeinfo2(ra_session, repos_mergeinfo, rel_paths, rev, - inherit, validate_inherited_mergeinfo, + err = svn_ra_get_mergeinfo2(ra_session, repos_mergeinfo_cat, rel_paths, + rev, inherit, validate_inherited_mergeinfo, include_descendants, result_pool); if (err) { if (squelch_incapable err-apr_err == SVN_ERR_UNSUPPORTED_FEATURE) { svn_error_clear(err); - repos_mergeinfo = NULL; + *mergeinfo_cat = NULL; } else return svn_error_trace(err); } - *mergeinfo_cat = repos_mergeinfo; + if (repos_mergeinfo_cat == NULL) +{ + *mergeinfo_cat = NULL; +} + else +{ + const char *repos_root; + const char *session_url; + + SVN_ERR(svn_ra_get_repos_root2(ra_session, repos_root, scratch_pool)); + SVN_ERR(svn_ra_get_session_url(ra_session, session_url, scratch_pool)); + + if (strcmp(repos_root, session_url) == 0) +{ + *mergeinfo_cat = repos_mergeinfo_cat; +} + else +{ + apr_hash_index_t *hi; + svn_mergeinfo_catalog_t rekeyed_mergeinfo_cat = +apr_hash_make(result_pool); + + for (hi = apr_hash_first(scratch_pool, repos_mergeinfo_cat); + hi; + hi = apr_hash_next(hi)) +{ + const char *path = +svn_path_url_add_component2(session_url, +svn__apr_hash_index_key(hi), +scratch_pool); + SVN_ERR(svn_ra_get_path_relative_to_root(ra_session, path, + path, + result_pool)); + apr_hash_set(rekeyed_mergeinfo_cat, path, APR_HASH_KEY_STRING, + svn__apr_hash_index_val(hi)); +} + *mergeinfo_cat = rekeyed_mergeinfo_cat; +} +} return SVN_NO_ERROR; } @@
svn commit: r1156826 - in /subversion/trunk/subversion/bindings/ctypes-python: csvn/repos.py test/remoterepos.py
Author: julianfoad Date: Thu Aug 11 20:56:26 2011 New Revision: 1156826 URL: http://svn.apache.org/viewvc?rev=1156826view=rev Log: In the ctypes-python bindings: fix two RemoteRepository methods to return the Python types they claim to return, and add tests for these and other methods that had no tests. This is an API change in the ctypes-python bindings. * subversion/bindings/ctypes-python/csvn/repos.py (RemoteRepository.list): Create and return a Python dictionary of svn_dirent_t objects instead of the Hash of pointer objects. (RemoteRepository.info): Dereference the pointer object and so return a svn_dirent_t object. * subversion/bindings/ctypes-python/test/remoterepos.py (RemoteRepositoryTestCase): Add tests for the list, info, proplist, propget and log methods. (The remaining untested method is 'cat', for which I have not yet been able to write a test that does not crash.) Modified: subversion/trunk/subversion/bindings/ctypes-python/csvn/repos.py subversion/trunk/subversion/bindings/ctypes-python/test/remoterepos.py Modified: subversion/trunk/subversion/bindings/ctypes-python/csvn/repos.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/ctypes-python/csvn/repos.py?rev=1156826r1=1156825r2=1156826view=diff == --- subversion/trunk/subversion/bindings/ctypes-python/csvn/repos.py (original) +++ subversion/trunk/subversion/bindings/ctypes-python/csvn/repos.py Thu Aug 11 20:56:26 2011 @@ -154,7 +154,12 @@ class RemoteRepository(object): svn_ra_get_dir2(self, dirents.byref(), NULL, NULL, path, rev, fields, dirents.pool) self.iterpool.clear() -return dirents +# Create a Python dict of svn_dirent_t objects from this Hash of +# pointers to svn_dirent_t. +result = {} +for path, dirent_p in dirents.items(): +result[path] = dirent_p[0] +return result def cat(self, buffer, path, rev = SVN_INVALID_REVNUM): Get PATH@REV and save it to BUFFER. BUFFER must be a Python file @@ -178,7 +183,7 @@ class RemoteRepository(object): rev = self.latest_revnum() svn_ra_stat(self, path, rev, byref(dirent), dirent.pool) self.iterpool.clear() -return dirent +return dirent[0] def proplist(self, path, rev = SVN_INVALID_REVNUM): Return a dictionary containing the properties on PATH@REV Modified: subversion/trunk/subversion/bindings/ctypes-python/test/remoterepos.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/ctypes-python/test/remoterepos.py?rev=1156826r1=1156825r2=1156826view=diff == --- subversion/trunk/subversion/bindings/ctypes-python/test/remoterepos.py (original) +++ subversion/trunk/subversion/bindings/ctypes-python/test/remoterepos.py Thu Aug 11 20:56:26 2011 @@ -27,6 +27,13 @@ from csvn.core import * from urllib import pathname2url from csvn.repos import LocalRepository, RemoteRepository from stat import * +from sys import version_info # For Python version check +if version_info[0] = 3: + # Python =3.0 + from io import StringIO +else: + # Python 3.0 + from StringIO import StringIO repos_location = os.path.join(tempfile.gettempdir(), svn_test_repos) repos_url = pathname2url(repos_location) @@ -64,6 +71,15 @@ class RemoteRepositoryTestCase(unittest. if os.path.exists(repos_location): svn_repos_delete(repos_location, Pool()) +def svn_dirent_t_assert_equal(self, a, b): +Assert that two svn_dirent_t's are equal, ignoring their 'time' + fields. +self.assertEqual(a.kind, b.kind) +self.assertEqual(a.size, b.size) +self.assertEqual(a.has_props, b.has_props) +self.assertEqual(a.created_rev, b.created_rev) +self.assertEqual(a.last_author, b.last_author) + def test_remote_latest_revnum(self): self.assertEqual(9, self.repos.latest_revnum()) @@ -77,6 +93,50 @@ class RemoteRepositoryTestCase(unittest. self.assertEqual(svn_node_none, self.repos.check_path(does_not_compute)) +def test_list(self): +expected = { +'README.txt': +svn_dirent_t(kind=svn_node_file, size=159, has_props=True, + created_rev=9, last_author=String('bruce')), +'ANOTHERREADME.txt': +svn_dirent_t(kind=svn_node_file, size=66, has_props=False, + created_rev=4, last_author=String('clark')) } +found = self.repos.list(trunk) +self.assertEqual(sorted(found.keys()), sorted(expected.keys())) +for path in found: +self.svn_dirent_t_assert_equal(found[path], expected[path]) + +def test_info(self): +e = svn_dirent_t(kind=svn_node_file, size=159, has_props=True, +
svn commit: r1156827 - in /subversion/trunk/subversion: libsvn_client/mergeinfo.c tests/cmdline/mergeinfo_tests.py
Author: pburba Date: Thu Aug 11 20:57:22 2011 New Revision: 1156827 URL: http://svn.apache.org/viewvc?rev=1156827view=rev Log: Final fix for issue #3986 'svn_client_mergeinfo_log API broken with WC target which inherits mergeinfo from repos'. * subversion/libsvn_client/mergeinfo.c (filter_log_entry_baton_t): Better document a couple members. (filter_log_entry_with_rangelist): Consider both the merge source *path* as well as the revision when determining if a rev was already merged or is eligible to merge. Previously we were only considering if the *revs* matched, but both must be considered to be accurate (and not do things like filtering unmerged revisions when asked for eligible revs). * subversion/tests/cmdline/mergeinfo_tests.py (which inherits mergeinfo from repos): Remove XFail decorator. Modified: subversion/trunk/subversion/libsvn_client/mergeinfo.c subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py Modified: subversion/trunk/subversion/libsvn_client/mergeinfo.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/mergeinfo.c?rev=1156827r1=1156826r2=1156827view=diff == --- subversion/trunk/subversion/libsvn_client/mergeinfo.c (original) +++ subversion/trunk/subversion/libsvn_client/mergeinfo.c Thu Aug 11 20:57:22 2011 @@ -1356,6 +1356,8 @@ find_nearest_ancestor(const apr_array_he svn_log_entry_receiver_t callback. */ struct filter_log_entry_baton_t { + /* Is TRUE if RANGELIST describes potentially merged revisions, is FALSE + if RANGELIST describes potentially eligible revisions. */ svn_boolean_t filtering_merged; /* Unsorted array of repository relative paths representing the merge @@ -1373,8 +1375,9 @@ struct filter_log_entry_baton_t TARGET_MERGEINFO_CATALOG. */ apr_array_header_t *depth_first_catalog_index; - /* A rangelist describing all the ranges merged to ABS_REPOS_TARGET_PATH - from the */ + /* A rangelist describing all the revisions potentially merged or + potentially eligible for merging (see FILTERING_MERGED) based on + the target's explicit or inherited mergeinfo. */ const apr_array_header_t *rangelist; /* The wrapped svn_log_entry_receiver_t callback and baton which @@ -1389,9 +1392,18 @@ struct filter_log_entry_baton_t `struct filter_log_entry_baton_t *'. Call the wrapped log receiver BATON-log_receiver (with - BATON-log_receiver_baton), only if the log entry falls within the - ranges in BATON-rangelist. - */ + BATON-log_receiver_baton) if: + + BATON-FILTERING_MERGED is FALSE and the changes represented by LOG_ENTRY + have been fully merged from BATON-MERGE_SOURCE_PATHS to the WC target + based on the mergeinfo for the WC contained in BATON-TARGET_MERGEINFO_CATALOG. + + Or + + BATON-FILTERING_MERGED is TRUE and the changes represented by LOG_ENTRY + have not been merged, or only partially merged, from + BATON-MERGE_SOURCE_PATHS to the WC target based on the mergeinfo for the + WC contained in BATON-TARGET_MERGEINFO_CATALOG. */ static svn_error_t * filter_log_entry_with_rangelist(void *baton, svn_log_entry_t *log_entry, @@ -1454,6 +1466,7 @@ filter_log_entry_with_rangelist(void *ba apr_hash_index_t *hi2; svn_boolean_t found_this_revision = FALSE; const char *merge_source_rel_target; + const char *merge_source_path; svn_pool_clear(iterpool); @@ -1461,8 +1474,8 @@ filter_log_entry_with_rangelist(void *ba merge sources. If not then ignore this path. */ for (i = 0; i fleb-merge_source_paths-nelts; i++) { - const char *merge_source_path -= APR_ARRAY_IDX(fleb-merge_source_paths, i, const char *); + merge_source_path = APR_ARRAY_IDX(fleb-merge_source_paths, +i, const char *); merge_source_rel_target = svn_fspath__skip_ancestor(merge_source_path, path); @@ -1496,20 +1509,33 @@ filter_log_entry_with_rangelist(void *ba hi2; hi2 = apr_hash_next(hi2)) { + const char *mergeinfo_path = svn__apr_hash_index_key(hi2); apr_array_header_t *rangelist = svn__apr_hash_index_val(hi2); - SVN_ERR(svn_rangelist_intersect(intersection, rangelist, - this_rev_rangelist, FALSE, - iterpool)); - if (intersection-nelts) + + /* Does the mergeinfo for PATH reflect if + LOG_ENTRY-REVISION was previously merged + from MERGE_SOURCE_PATH? */ + if (svn_fspath__is_ancestor(merge_source_path, +
svn propchange: r1156216 - svn:log
Author: pburba Revision: 1156216 Modified property: svn:log Modified: svn:log at Thu Aug 11 21:16:41 2011 -- --- svn:log (original) +++ svn:log Thu Aug 11 21:16:41 2011 @@ -1,5 +1,5 @@ -Add a test for issue #3986 'svn_client_mergeinfo_log API broken with WC -target which inherits mergeinfo from repos'. +Add a test for issue #3986 'svn_client_mergeinfo_log API is +broken'. * subversion/tests/cmdline/mergeinfo_tests.py
svn propchange: r1156312 - svn:log
Author: pburba Revision: 1156312 Modified property: svn:log Modified: svn:log at Thu Aug 11 21:17:07 2011 -- --- svn:log (original) +++ svn:log Thu Aug 11 21:17:07 2011 @@ -1,5 +1,4 @@ -Partial fix for issue #3986 'svn_client_mergeinfo_log API broken with WC -target which inherits mergeinfo from repos'. +Partial fix for issue #3986 'svn_client_mergeinfo_log API is broken'. * subversion/libsvn_client/mergeinfo.c
svn propchange: r1156717 - svn:log
Author: pburba Revision: 1156717 Modified property: svn:log Modified: svn:log at Thu Aug 11 21:17:47 2011 -- --- svn:log (original) +++ svn:log Thu Aug 11 21:17:47 2011 @@ -1,6 +1,5 @@ -Update test for issue #3986 'svn_client_mergeinfo_log API broken with WC -target which inherits mergeinfo from repos' to cover another failing use -case. +Update test for issue #3986 'svn_client_mergeinfo_log API is broken' to +cover another failing use case. * subversion/tests/cmdline/mergeinfo_tests.py (wc_target_inherits_mergeinfo_from_repos): Cover the use case analogous to
svn propchange: r1156750 - svn:log
Author: pburba Revision: 1156750 Modified property: svn:log Modified: svn:log at Thu Aug 11 21:18:18 2011 -- --- svn:log (original) +++ svn:log Thu Aug 11 21:18:18 2011 @@ -1,5 +1,4 @@ -More fixes for issue #3986 'svn_client_mergeinfo_log API broken with WC -target which inherits mergeinfo from repos'. +More fixes for issue #3986 'svn_client_mergeinfo_log API is broken'. Prior to this change svn_client__get_repos_mergeinfo_catalog promised a a mergeinfo catalog with a key relative to RA_SESSION's session URL for the
svn propchange: r1156827 - svn:log
Author: pburba Revision: 1156827 Modified property: svn:log Modified: svn:log at Thu Aug 11 21:18:29 2011 -- --- svn:log (original) +++ svn:log Thu Aug 11 21:18:29 2011 @@ -1,5 +1,4 @@ -Final fix for issue #3986 'svn_client_mergeinfo_log API broken -with WC target which inherits mergeinfo from repos'. +Final fix for issue #3986 'svn_client_mergeinfo_log API is broken'. * subversion/libsvn_client/mergeinfo.c
svn commit: r1156838 - /subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py
Author: pburba Date: Thu Aug 11 21:21:15 2011 New Revision: 1156838 URL: http://svn.apache.org/viewvc?rev=1156838view=rev Log: Update a comment for issue #3986 test. Modified: subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py Modified: subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py?rev=1156838r1=1156837r2=1156838view=diff == --- subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py (original) +++ subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py Thu Aug 11 21:21:15 2011 @@ -490,8 +490,7 @@ def mergeinfo_on_pegged_wc_path(sbox): ['4', '5'], A_path, A_COPY_path + '@PREV', '--show-revs', 'eligible') #-- -# A test for issue 3986 'svn_client_mergeinfo_log API broken with WC target -# which inherits mergeinfo from repos'. +# A test for issue 3986 'svn_client_mergeinfo_log API is broken'. @Issue(3986) @SkipUnless(server_has_mergeinfo) def wc_target_inherits_mergeinfo_from_repos(sbox):
svn commit: r1156844 - /subversion/branches/1.7.x/STATUS
Author: pburba Date: Thu Aug 11 21:54:11 2011 New Revision: 1156844 URL: http://svn.apache.org/viewvc?rev=1156844view=rev Log: * STATUS: Nominate issue #3986 fixes. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1156844r1=1156843r2=1156844view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Thu Aug 11 21:54:11 2011 @@ -195,6 +195,15 @@ Candidate changes: +0: danielsh +1: stsp + * r1156216, r1156312, r1156717, r1156721, r1156750, r1156827, r1156838 + Fix issue #3986 'svn_client_mergeinfo_log API is broken'. + Justification: + svn_client_mergeinfo_log gives the wrong answer in some basic use cases. + This is a regression from 1.6. Bugs in private APIs could lead to other + bugs. + Votes: + +1: pburba + Veto-blocked changes: =
RE: svn commit: r1156756 - /subversion/trunk/subversion/libsvn_client/patch.c
-Original Message- From: s...@apache.org [mailto:s...@apache.org] Sent: donderdag 11 augustus 2011 21:29 To: commits@subversion.apache.org Subject: svn commit: r1156756 - /subversion/trunk/subversion/libsvn_client/patch.c Author: stsp Date: Thu Aug 11 19:29:25 2011 New Revision: 1156756 URL: http://svn.apache.org/viewvc?rev=1156756view=rev Log: * subversion/libsvn_client/patch.c (resolve_target_path): Rename LOCAL_ABSPATH parameter to the more obvious WCROOT_ABSPATH. It is the absolute path of the working copy root. (choose_target_filename): Rename BASE_DIR parameter to WCROOT_ABSPATH for the same reason. Looking at the callers this argument is not necessary the real wcroot, but just the directory where the path is applied to. (svn_client_patch performs baton.abs_wc_path = wc_dir_abspath which is then used for wcroot_abspath for this function). As I don't think the working copy root is the only valid patch target, I think this argument should have a different name. Bert
svn commit: r1156925 - in /subversion/branches/fs-py/subversion: libsvn_fs_py/fs.h libsvn_fs_py/fs_fs.c libsvn_fs_py/py_util.c libsvn_fs_py/py_util.h libsvn_fs_py/rep-cache.c python/svn/fs.py
Author: hwright Date: Fri Aug 12 00:52:01 2011 New Revision: 1156925 URL: http://svn.apache.org/viewvc?rev=1156925view=rev Log: On the fs-py branch: Remove the youngest_rev_cache member from the FS data object, in favor of the Python value. * subversion/python/svn/fs.py (FS._ensure_revision_exists): Remove the translation of the error message. (FS._open_fs): Read the youngest rev. * subversion/libsvn_fs_py/fs.h (fs_fs_data_t): Remove youngest_rev_cache member. * subversion/libsvn_fs_py/fs_fs.c (svn_fs_py__open): Don't read the youngest rev (that's now done in Python). (svn_fs_py__youngest_rev): Don't set the youngest rev cache here. (commit_body): Set the Python youngest rev, not the C one. (svn_fs_py__create): Don't set the youngest rev. * subversion/libsvn_fs_py/rep-cache.c (rep_has_been_born): Fetch the youngest_cache rev from the Python object. * subversion/libsvn_fs_py/py_util.c (set_int_attr_baton, set_int_attr, svn_fs_py__set_int_attr): New. * subversion/libsvn_fs_py/py_util.h (svn_fs_py__set_int_attr): New. Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c subversion/branches/fs-py/subversion/libsvn_fs_py/py_util.c subversion/branches/fs-py/subversion/libsvn_fs_py/py_util.h subversion/branches/fs-py/subversion/libsvn_fs_py/rep-cache.c subversion/branches/fs-py/subversion/python/svn/fs.py Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h?rev=1156925r1=1156924r2=1156925view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/fs.h Fri Aug 12 00:52:01 2011 @@ -206,9 +206,6 @@ typedef struct fs_fs_shared_data_t /* Private (non-shared) FSFS-specific data for each svn_fs_t object. */ typedef struct fs_fs_data_t { - /* The revision that was youngest, last time we checked. */ - svn_revnum_t youngest_rev_cache; - /* The fsfs.conf file, parsed. Allocated in FS-pool. */ svn_config_t *config; Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c?rev=1156925r1=1156924r2=1156925view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c Fri Aug 12 00:52:01 2011 @@ -1265,7 +1265,7 @@ svn_fs_py__open(svn_fs_t *fs, const char /* Read the configuration file. */ SVN_ERR(read_config(fs, pool)); - return get_youngest((ffd-youngest_rev_cache), path, pool); + return SVN_NO_ERROR; } /* Wrapper around svn_io_file_create which ignores EEXIST. */ @@ -1743,8 +1743,6 @@ svn_fs_py__youngest_rev(svn_revnum_t *yo Py_DECREF(p_rev); - ffd-youngest_rev_cache = *youngest_p; - return SVN_NO_ERROR; } @@ -6156,7 +6154,7 @@ commit_body(void *baton, apr_pool_t *poo created. */ *cb-new_rev_p = new_rev; - ffd-youngest_rev_cache = new_rev; + SVN_ERR(svn_fs_py__set_int_attr(ffd-p_fs, __youngest_rev_cache, new_rev)); /* Remove this transaction directory. */ SVN_ERR(svn_fs_py__purge_txn(cb-fs, cb-txn-id, pool)); @@ -6306,7 +6304,6 @@ svn_fs_py__create(svn_fs_t *fs, SVN_ERR(write_format(path_format(fs, pool), format, max_files_per_dir, FALSE, pool)); - ffd-youngest_rev_cache = 0; return SVN_NO_ERROR; } Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/py_util.c URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/py_util.c?rev=1156925r1=1156924r2=1156925view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/py_util.c (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/py_util.c Fri Aug 12 00:52:01 2011 @@ -347,6 +347,42 @@ svn_fs_py__get_int_attr(int *result, } +struct set_int_attr_baton +{ + PyObject *p_obj; + const char *name; + long int val; +}; + + +static void +set_int_attr(void *baton, + va_list argp) +{ + struct set_int_attr_baton *siab = baton; + PyObject *p_int; + + p_int = PyInt_FromLong(siab-val); + if (PyErr_Occurred()) +return; + + PyObject_SetAttrString(siab-p_obj, siab-name, p_int); + Py_DECREF(p_int); + + return; +} + + +svn_error_t * +svn_fs_py__set_int_attr(PyObject *p_obj, +const char *name, +long int val) +{ + struct set_int_attr_baton siab = { p_obj, name, val }; + return svn_error_trace(catch_py_exception(set_int_attr, siab, NULL)); +} + + struct call_method_baton { PyObject **p_result; Modified:
svn commit: r1156946 - /subversion/site/publish/download/download.html
Author: hwright Date: Fri Aug 12 03:16:25 2011 New Revision: 1156946 URL: http://svn.apache.org/viewvc?rev=1156946view=rev Log: Post the 1.7.0-beta3 to the website for download. * publish/download/download.html (pre-release): Update links and sha1s for 1.7.0-beta3. Modified: subversion/site/publish/download/download.html Modified: subversion/site/publish/download/download.html URL: http://svn.apache.org/viewvc/subversion/site/publish/download/download.html?rev=1156946r1=1156945r2=1156946view=diff == --- subversion/site/publish/download/download.html (original) +++ subversion/site/publish/download/download.html Fri Aug 12 03:16:25 2011 @@ -169,7 +169,7 @@ Other mirrors: /div !-- .notice -- -p style=font-size: 150%; text-align: center;Subversion 1.7.0-beta2/p +p style=font-size: 150%; text-align: center;Subversion 1.7.0-beta3/p table class=centered tr thFile/th @@ -177,19 +177,19 @@ Other mirrors: thSignatures/th /tr tr - tda href=[preferred]subversion/subversion-1.7.0-beta2.tar.gzsubversion-1.7.0-beta2.tar.gz/a/td - td class=checksum0d6c5605eb369156aaa0329a2c7e8e92bffc79bf/td - td[a href=http://www.apache.org/dist/subversion/subversion-1.7.0-beta2.tar.gz.asc;PGP/a]/td + tda href=[preferred]subversion/subversion-1.7.0-beta3.tar.gzsubversion-1.7.0-beta2.tar.gz/a/td + td class=checksumfdd22605c83ad601810e9cd980116ebcde45ef20/td + td[a href=http://www.apache.org/dist/subversion/subversion-1.7.0-beta3.tar.gz.asc;PGP/a]/td /tr tr - tda href=[preferred]subversion/subversion-1.7.0-beta2.tar.bz2subversion-1.7.0-beta2.tar.bz2/a/td - td class=checksum96d9a3ca607dda3e7889061d8276822f92b2b078/td - td[a href=http://www.apache.org/dist/subversion/subversion-1.7.0-beta2.tar.bz2.asc;PGP/a]/td + tda href=[preferred]subversion/subversion-1.7.0-beta3.tar.bz2subversion-1.7.0-beta2.tar.bz2/a/td + td class=checksum65c2d68522e3aac8870a81d942d9962bb5399ed3/td + td[a href=http://www.apache.org/dist/subversion/subversion-1.7.0-beta3.tar.bz2.asc;PGP/a]/td /tr tr - tda href=[preferred]subversion/subversion-1.7.0-beta2.zipsubversion-1.7.0-beta2.zip/a/td - td class=checksum02ee27ce1158f987fd6507839d96775c63b94ff2/td - td[a href=http://www.apache.org/dist/subversion/subversion-1.7.0-beta2.zip.asc;PGP/a]/td + tda href=[preferred]subversion/subversion-1.7.0-beta3.zipsubversion-1.7.0-beta2.zip/a/td + td class=checksume4a9b4c97db74cb2931466a14311db10a6220039/td + td[a href=http://www.apache.org/dist/subversion/subversion-1.7.0-beta3.zip.asc;PGP/a]/td /tr /table
svn commit: r1156948 - /subversion/site/publish/download/download.html
Author: hwright Date: Fri Aug 12 03:19:52 2011 New Revision: 1156948 URL: http://svn.apache.org/viewvc?rev=1156948view=rev Log: * download/download.html (pre-releases): Followup to r1156946: actually change the link names, too. Modified: subversion/site/publish/download/download.html Modified: subversion/site/publish/download/download.html URL: http://svn.apache.org/viewvc/subversion/site/publish/download/download.html?rev=1156948r1=1156947r2=1156948view=diff == --- subversion/site/publish/download/download.html (original) +++ subversion/site/publish/download/download.html Fri Aug 12 03:19:52 2011 @@ -177,17 +177,17 @@ Other mirrors: thSignatures/th /tr tr - tda href=[preferred]subversion/subversion-1.7.0-beta3.tar.gzsubversion-1.7.0-beta2.tar.gz/a/td + tda href=[preferred]subversion/subversion-1.7.0-beta3.tar.gzsubversion-1.7.0-beta3.tar.gz/a/td td class=checksumfdd22605c83ad601810e9cd980116ebcde45ef20/td td[a href=http://www.apache.org/dist/subversion/subversion-1.7.0-beta3.tar.gz.asc;PGP/a]/td /tr tr - tda href=[preferred]subversion/subversion-1.7.0-beta3.tar.bz2subversion-1.7.0-beta2.tar.bz2/a/td + tda href=[preferred]subversion/subversion-1.7.0-beta3.tar.bz2subversion-1.7.0-beta3.tar.bz2/a/td td class=checksum65c2d68522e3aac8870a81d942d9962bb5399ed3/td td[a href=http://www.apache.org/dist/subversion/subversion-1.7.0-beta3.tar.bz2.asc;PGP/a]/td /tr tr - tda href=[preferred]subversion/subversion-1.7.0-beta3.zipsubversion-1.7.0-beta2.zip/a/td + tda href=[preferred]subversion/subversion-1.7.0-beta3.zipsubversion-1.7.0-beta3.zip/a/td td class=checksume4a9b4c97db74cb2931466a14311db10a6220039/td td[a href=http://www.apache.org/dist/subversion/subversion-1.7.0-beta3.zip.asc;PGP/a]/td /tr
svn commit: r1156952 - in /subversion/branches/fs-py/subversion: libsvn_fs_py/fs_fs.c python/svn/__init__.py python/svn/_cache.py python/svn/err.py python/svn/fs.py
Author: hwright Date: Fri Aug 12 03:32:50 2011 New Revision: 1156952 URL: http://svn.apache.org/viewvc?rev=1156952view=rev Log: On the fs-py branch: Write the skeleton configuration file when creating a filesystem in Python. Also tweak some error handling. * subversion/python/svn/err.py: New. * subversion/python/svn/__init__.py (SubversionException.__init__): Switch order of arguments, since that's how we were calling them. * subversion/python/svn/_cache.py: New. * subversion/python/svn/fs.py (): More constants and imports. (FS._write_config): New. (FS._ensure_revision_exists): Remove i18n wrapper from error message. (FS.__setup_paths): Add a path for the config file. * subversion/libsvn_fs_py/fs_fs.c (svn_fs_py__create): Remove the call to create the config. Added: subversion/branches/fs-py/subversion/python/svn/_cache.py (with props) subversion/branches/fs-py/subversion/python/svn/err.py (with props) Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c subversion/branches/fs-py/subversion/python/svn/__init__.py subversion/branches/fs-py/subversion/python/svn/fs.py Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c?rev=1156952r1=1156951r2=1156952view=diff == --- subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c (original) +++ subversion/branches/fs-py/subversion/libsvn_fs_py/fs_fs.c Fri Aug 12 03:32:50 2011 @@ -6286,8 +6286,6 @@ svn_fs_py__create(svn_fs_t *fs, SVN_ERR(svn_fs_py__get_int_attr(max_files_per_dir, ffd-p_fs, max_files_per_dir)); - SVN_ERR(write_config(fs, pool)); - SVN_ERR(read_config(fs, pool)); /* Create the txn-current file if the repository supports Modified: subversion/branches/fs-py/subversion/python/svn/__init__.py URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/python/svn/__init__.py?rev=1156952r1=1156951r2=1156952view=diff == --- subversion/branches/fs-py/subversion/python/svn/__init__.py (original) +++ subversion/branches/fs-py/subversion/python/svn/__init__.py Fri Aug 12 03:32:50 2011 @@ -20,7 +20,7 @@ class SubversionException(Exception): -def __init__(self, msg, code = 0): +def __init__(self, code, msg): self.message = msg self.code = code Added: subversion/branches/fs-py/subversion/python/svn/_cache.py URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/python/svn/_cache.py?rev=1156952view=auto == --- subversion/branches/fs-py/subversion/python/svn/_cache.py (added) +++ subversion/branches/fs-py/subversion/python/svn/_cache.py Fri Aug 12 03:32:50 2011 @@ -0,0 +1,21 @@ +#!/usr/bin/env python +# +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# License); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +CONFIG_CATEGORY_MEMCACHED_SERVERS = memcached-servers Propchange: subversion/branches/fs-py/subversion/python/svn/_cache.py -- svn:eol-style = native Added: subversion/branches/fs-py/subversion/python/svn/err.py URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/python/svn/err.py?rev=1156952view=auto == --- subversion/branches/fs-py/subversion/python/svn/err.py (added) +++ subversion/branches/fs-py/subversion/python/svn/err.py Fri Aug 12 03:32:50 2011 @@ -0,0 +1,279 @@ +#!/usr/bin/env python +### This file automatically generated by tools/dev/gen-py-error.py, +### which see for more information +### +### It is versioned for convenience. + +APMOD_ACTIVITY_NOT_FOUND = 190002 +APMOD_BAD_BASELINE = 190003 +APMOD_CONNECTION_ABORTED = 190004 +APMOD_MALFORMED_URI = 190001 +APMOD_MISSING_PATH_TO_FS = 19 +ASSERTION_FAIL = 235000 +ASSERTION_ONLY_TRACING_LINKS = 235001 +ATOMIC_INIT_FAILURE = 200029 +AUTHN_CREDS_NOT_SAVED = 215003 +AUTHN_CREDS_UNAVAILABLE = 215000 +AUTHN_FAILED = 215004
svn commit: r1156953 - /subversion/trunk/tools/dist/release.py
Author: hwright Date: Fri Aug 12 03:34:53 2011 New Revision: 1156953 URL: http://svn.apache.org/viewvc?rev=1156953view=rev Log: * tools/dist/release.py (move_to_dist): Copy, not move, the tarballs and sigs to the dist directory. Modified: subversion/trunk/tools/dist/release.py Modified: subversion/trunk/tools/dist/release.py URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/release.py?rev=1156953r1=1156952r2=1156953view=diff == --- subversion/trunk/tools/dist/release.py (original) +++ subversion/trunk/tools/dist/release.py Fri Aug 12 03:34:53 2011 @@ -538,7 +538,7 @@ def move_to_dist(args): filenames = glob.glob(os.path.join(target, 'subversion-%s.*' % str(args.version))) for filename in filenames: -shutil.move(filename, args.dist_dir) +shutil.copy(filename, args.dist_dir) #--
svn commit: r1156954 - in /subversion/site/publish: index.html news.html
Author: hwright Date: Fri Aug 12 03:43:48 2011 New Revision: 1156954 URL: http://svn.apache.org/viewvc?rev=1156954view=rev Log: Publish 1.7.0-beta3 to the website. * publish/news.html (news-20110812): New. * publish/index.html (news-20110812): New. (news-20110623): Remove. Modified: subversion/site/publish/index.html subversion/site/publish/news.html Modified: subversion/site/publish/index.html URL: http://svn.apache.org/viewvc/subversion/site/publish/index.html?rev=1156954r1=1156953r2=1156954view=diff == --- subversion/site/publish/index.html (original) +++ subversion/site/publish/index.html Fri Aug 12 03:43:48 2011 @@ -64,6 +64,28 @@ !-- In general, we'll keep only the most recent 3 or 4 news items here. -- +div class=h3 id=news-20110812 +h32011-08-12 mdash; Apache Subversion 1.7.0-beta3 Released + a class=sectionlink href=#news-20110812 + title=Link to this sectionpara;/a +/h3 + +pWe are pleased to announce to release of Apache Subversion 1.7.0-beta3. This + release is not intended for production use, but is provided as a milestone + to encourage wider testing and feedback from intrepid users and maintainers. + Please see the + a href=http://svn.haxx.se/dev/archive-2011-08/0219.shtml;release + announcement/a for more information about this release, and the + a href=/docs/release-notes/1.7.htmlrelease notes/a and + a href=http://svn.apache.org/repos/asf/subversion/tags/1.7.0-beta3/CHANGES; + change log/a for information about what will eventually be + in the 1.7.0 release./p + +pTo get this release from the nearest mirror, please visit our + a href=/download/#pre-releasesdownload page/a./p + +/div !-- #news-20110812 -- + div class=h3 id=news-20110724 h32011-07-24 mdash; Apache Subversion 1.7.0-beta2 Released a class=sectionlink href=#news-20110724 @@ -112,29 +134,6 @@ /div !-- #news-20110711 -- -div class=h3 id=news-20110623 -h32011-06-23 mdash; Apache Subversion 1.7.0-alpha2 Released - a class=sectionlink href=#news-20110623 - title=Link to this sectionpara;/a -/h3 - -pWe are please to announce the next Subversion 1.7.0 prerelease: - Apache Subversion 1.7.0-alpha2. This - release is not intended for production use, but is provided as a milestone - to encourage wider testing and feedback from intrepid users and maintainers. - Please see the - a href=http://svn.haxx.se/dev/archive-2011-06/0764.shtml;release - announcement/a for more information about this release, and the - a href=/docs/release-notes/1.7.htmlrelease notes/a and - a href=http://svn.apache.org/repos/asf/subversion/tags/1.7.0-alpha2/CHANGES; - change log/a for information about what will eventually be - in the 1.7.0 release./p - -pTo get this release from the nearest mirror, please visit our - a href=/download/#pre-releasesdownload page/a./p - -/div !-- #news-20110623 -- - p style=font-style: italic; text-align: right;[Click a href=/news.htmlhere/a to see all News Modified: subversion/site/publish/news.html URL: http://svn.apache.org/viewvc/subversion/site/publish/news.html?rev=1156954r1=1156953r2=1156954view=diff == --- subversion/site/publish/news.html (original) +++ subversion/site/publish/news.html Fri Aug 12 03:43:48 2011 @@ -22,6 +22,28 @@ !-- Maybe we could insert H2's to split up the news items by -- !-- calendar year if we felt the need to do so. -- +div class=h3 id=news-20110812 +h32011-08-12 mdash; Apache Subversion 1.7.0-beta3 Released + a class=sectionlink href=#news-20110812 + title=Link to this sectionpara;/a +/h3 + +pWe are pleased to announce to release of Apache Subversion 1.7.0-beta3. This + release is not intended for production use, but is provided as a milestone + to encourage wider testing and feedback from intrepid users and maintainers. + Please see the + a href=http://svn.haxx.se/dev/archive-2011-08/0219.shtml;release + announcement/a for more information about this release, and the + a href=/docs/release-notes/1.7.htmlrelease notes/a and + a href=http://svn.apache.org/repos/asf/subversion/tags/1.7.0-beta3/CHANGES; + change log/a for information about what will eventually be + in the 1.7.0 release./p + +pTo get this release from the nearest mirror, please visit our + a href=/download/#pre-releasesdownload page/a./p + +/div !-- #news-20110812 -- + div class=h3 id=news-20110724 h32011-07-24 mdash; Apache Subversion 1.7.0-beta2 Released a class=sectionlink href=#news-20110724