You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2013/01/12 21:24:15 UTC
svn commit: r1432504 [1/6] - in /subversion/branches/ev2-export: ./
contrib/client-side/emacs/ notes/http-and-webdav/
subversion/bindings/javahl/native/ subversion/include/
subversion/include/private/ subversion/libsvn_client/
subversion/libsvn_delta/ ...
Author: hwright
Date: Sat Jan 12 20:24:12 2013
New Revision: 1432504
URL: http://svn.apache.org/viewvc?rev=1432504&view=rev
Log:
On the ev2-export branch:
Bring up-to-date with trunk.
Added:
subversion/branches/ev2-export/subversion/svn/cl-conflicts.c
- copied unchanged from r1432501, subversion/trunk/subversion/svn/cl-conflicts.c
subversion/branches/ev2-export/subversion/svn/cl-conflicts.h
- copied unchanged from r1432501, subversion/trunk/subversion/svn/cl-conflicts.h
subversion/branches/ev2-export/tools/dev/fsfs-reorg.c
- copied unchanged from r1432501, subversion/trunk/tools/dev/fsfs-reorg.c
Removed:
subversion/branches/ev2-export/subversion/svn/tree-conflicts.c
subversion/branches/ev2-export/subversion/svn/tree-conflicts.h
subversion/branches/ev2-export/tools/server-side/fsfs-reorg.c
Modified:
subversion/branches/ev2-export/ (props changed)
subversion/branches/ev2-export/CHANGES
subversion/branches/ev2-export/build.conf
subversion/branches/ev2-export/contrib/client-side/emacs/dsvn.el
subversion/branches/ev2-export/notes/http-and-webdav/webdav-protocol
subversion/branches/ev2-export/subversion/bindings/javahl/native/JNIUtil.cpp
subversion/branches/ev2-export/subversion/bindings/javahl/native/RevpropTable.cpp
subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.cpp
subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h
subversion/branches/ev2-export/subversion/include/svn_client.h
subversion/branches/ev2-export/subversion/include/svn_dav.h
subversion/branches/ev2-export/subversion/include/svn_ra.h
subversion/branches/ev2-export/subversion/include/svn_types.h
subversion/branches/ev2-export/subversion/libsvn_client/client.h
subversion/branches/ev2-export/subversion/libsvn_client/copy.c
subversion/branches/ev2-export/subversion/libsvn_client/externals.c
subversion/branches/ev2-export/subversion/libsvn_client/iprops.c
subversion/branches/ev2-export/subversion/libsvn_client/merge.c
subversion/branches/ev2-export/subversion/libsvn_client/mergeinfo.h
subversion/branches/ev2-export/subversion/libsvn_client/prop_commands.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_delta/svndiff.c
subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c
subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c
subversion/branches/ev2-export/subversion/libsvn_ra/compat.c
subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.c
subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.h
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/locks.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/ra_serf.h
subversion/branches/ev2-export/subversion/libsvn_ra_serf/replay.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/fs-wrap.c
subversion/branches/ev2-export/subversion/libsvn_repos/repos.c
subversion/branches/ev2-export/subversion/libsvn_subr/cmdline.c
subversion/branches/ev2-export/subversion/libsvn_subr/config.c
subversion/branches/ev2-export/subversion/libsvn_subr/deprecated.c
subversion/branches/ev2-export/subversion/libsvn_subr/named_atomic.c
subversion/branches/ev2-export/subversion/libsvn_subr/opt.c
subversion/branches/ev2-export/subversion/libsvn_subr/stream.c
subversion/branches/ev2-export/subversion/libsvn_subr/subst.c
subversion/branches/ev2-export/subversion/libsvn_subr/win32_crashrpt.c
subversion/branches/ev2-export/subversion/libsvn_wc/adm_crawler.c
subversion/branches/ev2-export/subversion/libsvn_wc/cleanup.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/entries.c
subversion/branches/ev2-export/subversion/libsvn_wc/externals.c
subversion/branches/ev2-export/subversion/libsvn_wc/merge.c
subversion/branches/ev2-export/subversion/libsvn_wc/props.c
subversion/branches/ev2-export/subversion/libsvn_wc/status.c
subversion/branches/ev2-export/subversion/libsvn_wc/update_editor.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_pristine.c
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_util.c
subversion/branches/ev2-export/subversion/mod_dav_svn/deadprops.c
subversion/branches/ev2-export/subversion/mod_dav_svn/reports/replay.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/conflict-callbacks.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/status.c
subversion/branches/ev2-export/subversion/svn/svn.c
subversion/branches/ev2-export/subversion/svnadmin/svnadmin.c
subversion/branches/ev2-export/subversion/svnlook/svnlook.c
subversion/branches/ev2-export/subversion/svnsync/svnsync.c
subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/copy_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/getopt_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/import_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/merge_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/patch_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/revert_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/svnadmin_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/svndumpfilter_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/svnlook_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/tree.py
subversion/branches/ev2-export/subversion/tests/cmdline/svntest/wc.py
subversion/branches/ev2-export/subversion/tests/cmdline/update_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/wc_tests.py
subversion/branches/ev2-export/subversion/tests/libsvn_subr/mergeinfo-test.c
subversion/branches/ev2-export/subversion/tests/libsvn_subr/stream-test.c
subversion/branches/ev2-export/subversion/tests/libsvn_subr/string-test.c
subversion/branches/ev2-export/subversion/tests/libsvn_subr/subst_translate-test.c
subversion/branches/ev2-export/subversion/tests/libsvn_wc/db-test.c
subversion/branches/ev2-export/subversion/tests/libsvn_wc/op-depth-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/tools/client-side/svn-bench/svn-bench.c
subversion/branches/ev2-export/tools/dev/ (props changed)
subversion/branches/ev2-export/tools/dev/fsfs-access-map.c
subversion/branches/ev2-export/tools/server-side/ (props changed)
subversion/branches/ev2-export/tools/server-side/fsfs-stats.c
Propchange: subversion/branches/ev2-export/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1430568-1432501
Modified: subversion/branches/ev2-export/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/CHANGES?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/CHANGES (original)
+++ subversion/branches/ev2-export/CHANGES Sat Jan 12 20:24:12 2013
@@ -35,6 +35,7 @@ http://svn.apache.org/repos/asf/subversi
* client version info now reported to commit hooks (issue #4124)
* 'svn merge' now uses reintegrate mode automatically when needed
* 'svn' is now non-interactive when not run in a terminal device (r1424037)
+ * 'svn propset' checks spelling of reserved property names.
- Client-side bugfixes:
*
Modified: subversion/branches/ev2-export/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build.conf?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/build.conf (original)
+++ subversion/branches/ev2-export/build.conf Sat Jan 12 20:24:12 2013
@@ -1275,7 +1275,7 @@ libs = __JAVAHL__ javahl-tests javahl-co
[fsfs-reorg]
type = exe
-path = tools/server-side
+path = tools/dev
sources = fsfs-reorg.c
install = tools
libs = libsvn_delta libsvn_subr apr
Modified: subversion/branches/ev2-export/contrib/client-side/emacs/dsvn.el
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/contrib/client-side/emacs/dsvn.el?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/contrib/client-side/emacs/dsvn.el (original)
+++ subversion/branches/ev2-export/contrib/client-side/emacs/dsvn.el Sat Jan 12 20:24:12 2013
@@ -1864,8 +1864,8 @@ argument."
(interactive)
(let ((files (svn-action-files
(lambda (pos)
- (or (= (svn-file-status pos) ?C)
- (= (svn-prop-status pos) ?C)
+ (or (memq (svn-file-status pos) '(?C ?!))
+ (memq (svn-prop-status pos) '(?C ?!))
(error "%s has no conflicts"
(svn-getprop pos 'file)))))))
(make-local-variable 'svn-resolved-files)
Modified: subversion/branches/ev2-export/notes/http-and-webdav/webdav-protocol
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/notes/http-and-webdav/webdav-protocol?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/notes/http-and-webdav/webdav-protocol (original)
+++ subversion/branches/ev2-export/notes/http-and-webdav/webdav-protocol Sat Jan 12 20:24:12 2013
@@ -384,7 +384,7 @@ mergeinfo-report
----------------
Purpose: Retrieve the merge history for a portion of the repository
-(e.g. a set of paths) at a particular revision.
+ (e.g. a set of paths) at a particular revision.
Target URL: URL of item we're getting merge info for.
@@ -415,3 +415,41 @@ Response:
<S:mergeinfo-info>/A/B/E:1,3-4</S:mergeinfo-info>
</S:mergeinfo-item>
</S:mergeinfo-report>
+
+replay-report
+-------------
+
+Purpose: Retrieve a record of the changes made in a given revision,
+ possibly limited to only those changes which affect a
+ specific subtree of the repository.
+
+Target URL: Prior to Subversion 1.8, the target URL was the public
+ resource URL of the aforementioned subtree. Per issue #4287
+ (http://subversion.tigris.org/issues/show_bug.cgi?id=4287),
+ it was discovered that this was an incorrect approach, so
+ in Subversion 1.8, mod_dav_svn allowed clients to submit
+ this report (with a slightly different Request syntax)
+ against baselined version resources.
+
+Request:
+
+ Original syntax, used against a regular resource URL:
+
+ <S:replay-report xmlns:S=\"svn:\">
+ <S:revision>REVISION</S:revision>
+ <S:low-water-mark>LOW_WATER_MARK_REV</S:low-water-mark>
+ <S:send-deltas>0</S:send-deltas> (... or non-zero if sending deltas)
+ </S:replay-report>
+
+ New (in Subversion 1.8) syntax, used against a baselined version
+ resource URL:
+
+ <S:replay-report xmlns:S=\"svn:\">
+ <S:include-path>/trunk/subversion/tests</S:include-path>
+ <S:low-water-mark>LOW_WATER_MARK_REV</S:low-water-mark>
+ <S:send-deltas>0</S:send-deltas> (... or non-zero if sending deltas)
+ </S:replay-report>
+
+Response:
+
+ ### TODO ###
\ No newline at end of file
Modified: subversion/branches/ev2-export/subversion/bindings/javahl/native/JNIUtil.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/javahl/native/JNIUtil.cpp?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/javahl/native/JNIUtil.cpp (original)
+++ subversion/branches/ev2-export/subversion/bindings/javahl/native/JNIUtil.cpp Sat Jan 12 20:24:12 2013
@@ -396,7 +396,7 @@ JNIUtil::putErrorsInTrace(svn_error_t *e
char *tmp_path;
char *path = svn_dirent_dirname(err->file, err->pool);
- while (tmp_path = strchr(path, '/'))
+ while ((tmp_path = strchr(path, '/')))
*tmp_path = '.';
jstring jmethodName = makeJString(path);
Modified: subversion/branches/ev2-export/subversion/bindings/javahl/native/RevpropTable.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/javahl/native/RevpropTable.cpp?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/javahl/native/RevpropTable.cpp (original)
+++ subversion/branches/ev2-export/subversion/bindings/javahl/native/RevpropTable.cpp Sat Jan 12 20:24:12 2013
@@ -77,7 +77,7 @@ RevpropTable::RevpropTable(jobject jrevp
if (jrevpropTable != NULL)
{
- static jmethodID keySet = 0, toArray = 0, get = 0;
+ static jmethodID keySet = 0, get = 0;
JNIEnv *env = JNIUtil::getEnv();
jclass mapClazz = env->FindClass("java/util/Map");
Modified: subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.cpp?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.cpp Sat Jan 12 20:24:12 2013
@@ -71,7 +71,7 @@
SVNClient::SVNClient(jobject jthis_in)
- : context(jthis_in, pool), m_lastPath("", pool)
+ : m_lastPath("", pool), context(jthis_in, pool)
{
}
Modified: subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h Sat Jan 12 20:24:12 2013
@@ -863,6 +863,11 @@ svn_wc__prop_list_recursive(svn_wc_conte
* required), up to and including the root of the working copy and
* any cached inherited properties inherited by the root.
*
+ * The #svn_prop_inherited_item_t->path_or_url members of the
+ * #svn_prop_inherited_item_t * structures in @a *inherited_props are
+ * paths relative to the repository root URL for cached inherited
+ * properties and absolute working copy paths otherwise.
+ *
* Allocate @a *inherited_props in @a result_pool. Use @a scratch_pool
* for temporary allocations.
*/
Modified: subversion/branches/ev2-export/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_client.h?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_client.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_client.h Sat Jan 12 20:24:12 2013
@@ -365,6 +365,14 @@ typedef struct svn_client_proplist_item_
* properties inherited by @a path. Use @a scratch_pool for all temporary
* allocations.
*
+ * The #svn_prop_inherited_item_t->path_or_url members of the
+ * #svn_prop_inherited_item_t * structures in @a inherited_props are
+ * URLs if @a path is a URL or if @path is a working copy path but the
+ * property represented by the structure is above the working copy root (i.e.
+ * the inherited property is from the cache). In all other cases the
+ * #svn_prop_inherited_item_t->path_or_url members are absolute working copy
+ * paths.
+ *
* @since New in 1.8.
*/
typedef svn_error_t *(*svn_proplist_receiver2_t)(
@@ -4922,6 +4930,14 @@ svn_client_revprop_set(const char *propn
* is not @c NULL and no inheritable properties are found, then set
* @a *inherited_props to an empty array.
*
+ * The #svn_prop_inherited_item_t->path_or_url members of the
+ * #svn_prop_inherited_item_t * structures in @a *inherited_props are
+ * URLs if @a target is a URL or if @target is a working copy path but the
+ * property represented by the structure is above the working copy root (i.e.
+ * the inherited property is from the cache). In all other cases the
+ * #svn_prop_inherited_item_t->path_or_url members are absolute working copy
+ * paths.
+ *
* Allocate @a *props, its keys, and its values in @a pool, use
* @a scratch_pool for temporary allocations.
*
Modified: subversion/branches/ev2-export/subversion/include/svn_dav.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_dav.h?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_dav.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_dav.h Sat Jan 12 20:24:12 2013
@@ -323,6 +323,13 @@ extern "C" {
#define SVN_DAV_NS_DAV_SVN_INLINE_PROPS\
SVN_DAV_PROP_NS_DAV "svn/inline-props"
+/** Presence of this in a DAV header in an OPTIONS response indicates
+ * that the transmitter (in this case, the server) knows how to handle
+ * a replay of a revision resource. Transmitters must be
+ * HTTP-v2-enabled to support this feature. */
+#define SVN_DAV_NS_DAV_SVN_REPLAY_REV_RESOURCE\
+ SVN_DAV_PROP_NS_DAV "svn/replay-rev-resource"
+
/** @} */
Modified: subversion/branches/ev2-export/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_ra.h?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_ra.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_ra.h Sat Jan 12 20:24:12 2013
@@ -1930,11 +1930,10 @@ svn_ra_get_deleted_rev(svn_ra_session_t
* inheritable properties are found, then set @a *inherited_props to
* an empty array.
*
- * If @a use_relpath_keys is true, then the
- * #svn_prop_inherited_item_t->path_or_url members of the
+ * The #svn_prop_inherited_item_t->path_or_url members of the
* #svn_prop_inherited_item_t * structures in @a *inherited_props are
* paths relative to the repository root URL (of the repository which
- * @a ra_session is associated). Otherwise these members are URLs.
+ * @a ra_session is associated).
*
* Allocated @a *inherited_props in @a result_pool, use @a scratch_pool
* for temporary allocations.
@@ -1946,7 +1945,6 @@ svn_ra_get_inherited_props(svn_ra_sessio
apr_array_header_t **inherited_props,
const char *path,
svn_revnum_t revision,
- svn_boolean_t use_relpath_keys,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
Modified: subversion/branches/ev2-export/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_types.h?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_types.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_types.h Sat Jan 12 20:24:12 2013
@@ -550,8 +550,7 @@ svn_depth_from_word(const char *word);
* non-recursive (which in turn usually translates to #svn_depth_files).
*/
#define SVN_DEPTH_IS_RECURSIVE(depth) \
- (((depth) == svn_depth_infinity || (depth) == svn_depth_unknown) \
- ? TRUE : FALSE)
+ ((depth) == svn_depth_infinity || (depth) == svn_depth_unknown)
@@ -1212,7 +1211,7 @@ svn_merge_range_contains_rev(const svn_m
* @{ */
/**
- * A representation of a segment of a object's version history with an
+ * A representation of a segment of an object's version history with an
* emphasis on the object's location in the repository as of various
* revisions.
*
@@ -1221,7 +1220,7 @@ svn_merge_range_contains_rev(const svn_m
typedef struct svn_location_segment_t
{
/** The beginning (oldest) and ending (youngest) revisions for this
- segment. */
+ segment, both inclusive. */
svn_revnum_t range_start;
svn_revnum_t range_end;
Modified: subversion/branches/ev2-export/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/client.h?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/client.h (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/client.h Sat Jan 12 20:24:12 2013
@@ -650,14 +650,25 @@ svn_client__list_internal(const char *pa
/*** Inheritable Properties ***/
+/* Convert any svn_prop_inherited_item_t elements in INHERITED_PROPS which
+ have repository root relative path PATH_OR_URL structure members to URLs
+ using REPOS_ROOT_URL. Changes to the contents of INHERITED_PROPS are
+ allocated in RESULT_POOL. SCRATCH_POOL is used for temporary
+ allocations. */
+svn_error_t *
+svn_client__iprop_relpaths_to_urls(apr_array_header_t *inherited_props,
+ const char *repos_root_url,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
/* Fetch the inherited properties for the base of LOCAL_ABSPATH as well
as any WC roots under LOCAL_ABSPATH (as limited by DEPTH) using
RA_SESSION. Store the results in *WCROOT_IPROPS, a hash mapping
const char * absolute working copy paths to depth-first ordered arrays
- of svn_prop_inherited_item_t * structures. If WANT_RELPATH_KEYS is true,
- then any svn_prop_inherited_item_t->path_or_url members returned in
- *WCROOT_IPROPS are repository relative paths, otherwise these members are
- URLs.
+ of svn_prop_inherited_item_t * structures.
+
+ Any svn_prop_inherited_item_t->path_or_url members returned in
+ *WCROOT_IPROPS are repository relative paths.
If LOCAL_ABSPATH has no base then do nothing.
@@ -672,7 +683,6 @@ svn_client__get_inheritable_props(apr_ha
const char *local_abspath,
svn_revnum_t revision,
svn_depth_t depth,
- svn_boolean_t use_relpath_keys,
svn_ra_session_t *ra_session,
svn_client_ctx_t *ctx,
apr_pool_t *result_pool,
Modified: subversion/branches/ev2-export/subversion/libsvn_client/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/copy.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/copy.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/copy.c Sat Jan 12 20:24:12 2013
@@ -2075,8 +2075,7 @@ try_copy(const apr_array_header_t *sourc
else
{
/* We ignore these values, so assert the default value */
- SVN_ERR_ASSERT(allow_mixed_revisions == TRUE
- && metadata_only == FALSE);
+ SVN_ERR_ASSERT(allow_mixed_revisions && !metadata_only);
return svn_error_trace(do_wc_to_wc_copies(copy_pairs, ctx, pool));
}
}
Modified: subversion/branches/ev2-export/subversion/libsvn_client/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/externals.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/externals.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/externals.c Sat Jan 12 20:24:12 2013
@@ -484,8 +484,7 @@ switch_file_external(const char *local_a
ctx, subpool));
/* Get the external file's iprops. */
SVN_ERR(svn_ra_get_inherited_props(ra_session, &inherited_props, "",
- switch_loc->rev, TRUE,
- subpool, subpool));
+ switch_loc->rev, subpool, subpool));
SVN_ERR(svn_ra_reparent(ra_session, svn_uri_dirname(url, subpool),
subpool));
Modified: subversion/branches/ev2-export/subversion/libsvn_client/iprops.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/iprops.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/iprops.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/iprops.c Sat Jan 12 20:24:12 2013
@@ -31,6 +31,8 @@
#include "svn_pools.h"
#include "svn_wc.h"
#include "svn_ra.h"
+#include "svn_props.h"
+#include "svn_path.h"
#include "client.h"
#include "svn_private_config.h"
@@ -97,11 +99,35 @@ need_to_cache_iprops(svn_boolean_t *need
}
svn_error_t *
+svn_client__iprop_relpaths_to_urls(apr_array_header_t *inherited_props,
+ const char *repos_root_url,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ int i;
+
+ for (i = 0; i < inherited_props->nelts; i++)
+ {
+ svn_prop_inherited_item_t *elt =
+ APR_ARRAY_IDX(inherited_props, i, svn_prop_inherited_item_t *);
+
+ /* Convert repos root relpaths to full URLs. */
+ if (! (svn_path_is_url(elt->path_or_url)
+ || svn_dirent_is_absolute(elt->path_or_url)))
+ {
+ elt->path_or_url = svn_path_url_add_component2(repos_root_url,
+ elt->path_or_url,
+ result_pool);
+ }
+ }
+ return SVN_NO_ERROR;
+}
+
+svn_error_t *
svn_client__get_inheritable_props(apr_hash_t **wcroot_iprops,
const char *local_abspath,
svn_revnum_t revision,
svn_depth_t depth,
- svn_boolean_t use_relpath_keys,
svn_ra_session_t *ra_session,
svn_client_ctx_t *ctx,
apr_pool_t *result_pool,
@@ -184,7 +210,7 @@ svn_client__get_inheritable_props(apr_ha
}
SVN_ERR(svn_ra_get_inherited_props(ra_session, &inherited_props,
- "", revision, use_relpath_keys,
+ "", revision,
result_pool, iterpool));
apr_hash_set(*wcroot_iprops,
apr_pstrdup(result_pool, child_abspath),
Modified: subversion/branches/ev2-export/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/merge.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/merge.c Sat Jan 12 20:24:12 2013
@@ -9602,7 +9602,7 @@ ensure_wc_is_suitable_merge_target(const
if (min_rev != max_rev)
return svn_error_createf(SVN_ERR_CLIENT_MERGE_UPDATE_REQUIRED, NULL,
_("Cannot merge into mixed-revision working "
- "copy [%lu:%lu]; try updating first"),
+ "copy [%ld:%ld]; try updating first"),
min_rev, max_rev);
}
Modified: subversion/branches/ev2-export/subversion/libsvn_client/mergeinfo.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/mergeinfo.h?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/mergeinfo.h (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/mergeinfo.h Sat Jan 12 20:24:12 2013
@@ -292,9 +292,10 @@ svn_client__get_wc_or_repos_mergeinfo_ca
/* Set *MERGEINFO_P to a mergeinfo constructed solely from the
natural history of PATHREV.
- If RANGE_YOUNGEST and RANGE_OLDEST are valid, use them to bound the
- revision ranges of returned mergeinfo. They are governed by the same
- rules as the PEG_REVISION, START_REV, and END_REV parameters of
+ If RANGE_YOUNGEST and RANGE_OLDEST are valid, use them as inclusive
+ bounds on the revision ranges of returned mergeinfo. PATHREV->rev,
+ RANGE_YOUNGEST and RANGE_OLDEST are governed by the same rules as the
+ PEG_REVISION, START_REV, and END_REV parameters (respectively) of
svn_ra_get_location_segments().
If HAS_REV_ZERO_HISTORY is not NULL, then set *HAS_REV_ZERO_HISTORY to
Modified: subversion/branches/ev2-export/subversion/libsvn_client/prop_commands.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/prop_commands.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/prop_commands.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/prop_commands.c Sat Jan 12 20:24:12 2013
@@ -617,11 +617,19 @@ remote_propget(apr_hash_t *props,
if (inherited_props)
{
+ const char *repos_root_url;
+
/* We will filter out all but PROPNAME later, making a final copy
- in RESULT_POOL, so pass SCRATCH_POOL for both pools. */
+ in RESULT_POOL, so pass SCRATCH_POOL for all pools. */
SVN_ERR(svn_ra_get_inherited_props(ra_session, inherited_props,
- target_relative, revnum, FALSE,
+ target_relative, revnum,
scratch_pool, scratch_pool));
+ SVN_ERR(svn_ra_get_repos_root2(ra_session, &repos_root_url,
+ scratch_pool));
+ SVN_ERR(svn_client__iprop_relpaths_to_urls(*inherited_props,
+ repos_root_url,
+ scratch_pool,
+ scratch_pool));
}
/* Make a copy of any inherited PROPNAME properties in RESULT_POOL. */
@@ -871,9 +879,20 @@ svn_client_propget5(apr_hash_t **props,
return svn_error_trace(err);
if (inherited_props && local_iprops)
- SVN_ERR(svn_wc__get_iprops(inherited_props, ctx->wc_ctx,
- target, propname,
- result_pool, scratch_pool));
+ {
+ const char *repos_root_url;
+
+ SVN_ERR(svn_wc__get_iprops(inherited_props, ctx->wc_ctx,
+ target, propname,
+ result_pool, scratch_pool));
+ SVN_ERR(svn_client_get_repos_root(&repos_root_url, NULL,
+ target, ctx, scratch_pool,
+ scratch_pool));
+ SVN_ERR(svn_client__iprop_relpaths_to_urls(*inherited_props,
+ repos_root_url,
+ result_pool,
+ scratch_pool));
+ }
SVN_ERR(get_prop_from_wc(props, propname, target,
pristine, kind,
@@ -1105,11 +1124,23 @@ remote_proplist(const char *target_prefi
}
if (get_target_inherited_props)
- SVN_ERR(svn_ra_get_inherited_props(ra_session, &inherited_props,
- target_relative, revnum, FALSE,
- result_pool, scratch_pool));
+ {
+ const char *repos_root_url;
+
+ SVN_ERR(svn_ra_get_inherited_props(ra_session, &inherited_props,
+ target_relative, revnum,
+ result_pool, scratch_pool));
+ SVN_ERR(svn_ra_get_repos_root2(ra_session, &repos_root_url,
+ scratch_pool));
+ SVN_ERR(svn_client__iprop_relpaths_to_urls(inherited_props,
+ repos_root_url,
+ result_pool,
+ scratch_pool));
+ }
else
- inherited_props = NULL;
+ {
+ inherited_props = NULL;
+ }
if (get_explicit_props)
{
@@ -1389,9 +1420,15 @@ get_local_props(const char *path_or_url,
if (get_target_inherited_props)
{
apr_array_header_t *iprops;
+ const char *repos_root_url;
SVN_ERR(svn_wc__get_iprops(&iprops, ctx->wc_ctx, local_abspath,
NULL, scratch_pool, scratch_pool));
+ SVN_ERR(svn_client_get_repos_root(&repos_root_url, NULL, local_abspath,
+ ctx, scratch_pool, scratch_pool));
+ SVN_ERR(svn_client__iprop_relpaths_to_urls(iprops, repos_root_url,
+ scratch_pool,
+ scratch_pool));
SVN_ERR(call_receiver(path_or_url, NULL, iprops, receiver,
receiver_baton, scratch_pool));
}
Modified: subversion/branches/ev2-export/subversion/libsvn_client/switch.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/switch.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/switch.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/switch.c Sat Jan 12 20:24:12 2013
@@ -267,7 +267,7 @@ switch_internal(svn_revnum_t *result_rev
if (needs_iprop_cache)
{
SVN_ERR(svn_ra_get_inherited_props(ra_session, &inherited_props,
- "", switch_loc->rev, TRUE, pool,
+ "", switch_loc->rev, pool,
pool));
apr_hash_set(wcroot_iprops, local_abspath, APR_HASH_KEY_STRING,
inherited_props);
Modified: subversion/branches/ev2-export/subversion/libsvn_client/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/update.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/update.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/update.c Sat Jan 12 20:24:12 2013
@@ -377,7 +377,7 @@ update_internal(svn_revnum_t *result_rev
dfb.anchor_url = anchor_loc->url;
err = svn_client__get_inheritable_props(&wcroot_iprops, local_abspath,
- revnum, depth, TRUE, ra_session,
+ revnum, depth, ra_session,
ctx, pool, pool);
/* We might be trying to update to a non-existant path-rev. */
Modified: subversion/branches/ev2-export/subversion/libsvn_delta/svndiff.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_delta/svndiff.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_delta/svndiff.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_delta/svndiff.c Sat Jan 12 20:24:12 2013
@@ -203,7 +203,7 @@ send_simple_insertion_window(svn_txdelta
assert(window->ops[0].offset == 0);
/* write stream header if necessary */
- if (eb->header_done == FALSE)
+ if (!eb->header_done)
{
eb->header_done = TRUE;
headers[0] = 'S';
@@ -269,7 +269,7 @@ window_handler(svn_txdelta_window_t *win
return svn_error_trace(send_simple_insertion_window(window, eb));
/* Make sure we write the header. */
- if (eb->header_done == FALSE)
+ if (!eb->header_done)
{
char svnver[4] = {'S','V','N','\0'};
len = 4;
Modified: subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c Sat Jan 12 20:24:12 2013
@@ -1016,7 +1016,7 @@ svn_fs_base__clean_logs(const char *live
sub_pool));
/* If log files do not match, go to the next log file. */
- if (files_match == FALSE)
+ if (!files_match)
continue;
}
Modified: subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c Sat Jan 12 20:24:12 2013
@@ -2527,7 +2527,7 @@ representation_string(representation_t *
return "-1";
#define DISPLAY_MAYBE_NULL_CHECKSUM(checksum) \
- ((may_be_corrupt == FALSE || (checksum) != NULL) \
+ ((!may_be_corrupt || (checksum) != NULL) \
? svn_checksum_to_cstring_display((checksum), pool) \
: "(null)")
@@ -4431,7 +4431,7 @@ create_rep_state_body(struct rep_state *
*rep_state = rs;
*rep_args = ra;
- if (ra->is_delta == FALSE)
+ if (!ra->is_delta)
/* This is a plaintext, so just return the current rep_state. */
return SVN_NO_ERROR;
@@ -4784,7 +4784,7 @@ build_rep_list(apr_array_header_t **list
return SVN_NO_ERROR;
}
- if (rep_args->is_delta == FALSE)
+ if (!rep_args->is_delta)
{
/* This is a plaintext, so just return the current rep_state. */
*src_state = rs;
Modified: subversion/branches/ev2-export/subversion/libsvn_ra/compat.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra/compat.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra/compat.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra/compat.c Sat Jan 12 20:24:12 2013
@@ -935,7 +935,9 @@ svn_ra__get_inherited_props_walk(svn_ra_
{
svn_prop_inherited_item_t *new_iprop =
apr_palloc(result_pool, sizeof(*new_iprop));
- new_iprop->path_or_url = apr_pstrdup(result_pool, parent_url);
+ new_iprop->path_or_url = svn_uri_skip_ancestor(repos_root_url,
+ parent_url,
+ result_pool);
new_iprop->prop_hash = final_hash;
svn_sort__array_insert(&new_iprop, *inherited_props, 0);
}
Modified: subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.c Sat Jan 12 20:24:12 2013
@@ -1299,7 +1299,6 @@ svn_ra_get_inherited_props(svn_ra_sessio
apr_array_header_t **iprops,
const char *path,
svn_revnum_t revision,
- svn_boolean_t use_relpath_keys,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
@@ -1325,23 +1324,6 @@ svn_ra_get_inherited_props(svn_ra_sessio
result_pool, scratch_pool));
}
- if (use_relpath_keys && (*iprops)->nelts)
- {
- const char *repos_root_url;
- int i;
-
- SVN_ERR(svn_ra_get_repos_root2(session, &repos_root_url, scratch_pool));
- for (i = 0; i < (*iprops)->nelts; i++)
- {
- svn_prop_inherited_item_t *elt =
- APR_ARRAY_IDX(*iprops, i, svn_prop_inherited_item_t *);
- elt->path_or_url =
- svn_dirent_skip_ancestor(repos_root_url, elt->path_or_url);
- elt->path_or_url = svn_path_uri_decode(elt->path_or_url,
- result_pool);
- }
- }
-
return SVN_NO_ERROR;
}
Modified: subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.h?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.h (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.h Sat Jan 12 20:24:12 2013
@@ -496,11 +496,11 @@ svn_ra__get_deleted_rev_from_log(svn_ra_
/**
- * Fallback logic for svn_ra_get_fileX and svn_ra_get_dirX when those APIs
+ * Fallback logic for svn_ra_get_inherited_props() when that API
* need to find PATH's inherited properties on a legacy server that
* doesn't have the SVN_RA_CAPABILITY_INHERITED_PROPS capability.
*
- * All arguments are as per the two aforementioned APIs.
+ * All arguments are as per svn_ra_get_inherited_props().
*/
svn_error_t *
svn_ra__get_inherited_props_walk(svn_ra_session_t *session,
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_local/ra_plugin.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_local/ra_plugin.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_local/ra_plugin.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_local/ra_plugin.c Sat Jan 12 20:24:12 2013
@@ -1058,22 +1058,12 @@ get_node_props(apr_hash_t **props,
SVN_ERR(svn_fs_node_proplist(props, root, path, result_pool));
}
- /* Turn FS-path keys into URLs. */
+ /* Get inherited properties if requested. */
if (inherited_props)
{
- int i;
-
SVN_ERR(svn_repos_fs_get_inherited_props(inherited_props, root, path,
NULL, NULL, NULL,
result_pool, scratch_pool));
-
- for (i = 0; i < (*inherited_props)->nelts; i++)
- {
- svn_prop_inherited_item_t *i_props =
- APR_ARRAY_IDX(*inherited_props, i, svn_prop_inherited_item_t *);
- i_props->path_or_url = svn_path_url_add_component2(
- sess->repos_url, i_props->path_or_url, result_pool);
- }
}
/* Now add some non-tweakable metadata to the hash as well... */
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/commit.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/commit.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/commit.c Sat Jan 12 20:24:12 2013
@@ -1294,9 +1294,9 @@ open_root(void *edit_baton,
{
post_response_ctx_t *prc;
const char *rel_path;
- svn_boolean_t post_with_revprops =
- apr_hash_get(ctx->session->supported_posts, "create-txn-with-props",
- APR_HASH_KEY_STRING) ? TRUE : FALSE;
+ svn_boolean_t post_with_revprops
+ = (apr_hash_get(ctx->session->supported_posts, "create-txn-with-props",
+ APR_HASH_KEY_STRING) != NULL);
/* Create our activity URL now on the server. */
handler = apr_pcalloc(ctx->pool, sizeof(*handler));
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/locks.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/locks.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/locks.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/locks.c Sat Jan 12 20:24:12 2013
@@ -261,7 +261,7 @@ handle_lock(serf_request_t *request,
request, response, ctx->handler, pool));
}
- if (ctx->read_headers == FALSE)
+ if (!ctx->read_headers)
{
serf_bucket_t *headers;
const char *val;
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/options.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/options.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/options.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/options.c Sat Jan 12 20:24:12 2013
@@ -211,11 +211,14 @@ capabilities_headers_iterator_callback(v
SVN_RA_CAPABILITY_EPHEMERAL_TXNPROPS, APR_HASH_KEY_STRING,
capability_yes);
}
-
if (svn_cstring_match_list(SVN_DAV_NS_DAV_SVN_INLINE_PROPS, vals))
{
session->supports_inline_props = TRUE;
}
+ if (svn_cstring_match_list(SVN_DAV_NS_DAV_SVN_REPLAY_REV_RESOURCE, vals))
+ {
+ session->supports_rev_rsrc_replay = TRUE;
+ }
}
/* SVN-specific headers -- if present, server supports HTTP protocol v2 */
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/property.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/property.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/property.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/property.c Sat Jan 12 20:24:12 2013
@@ -526,7 +526,7 @@ create_propfind_body(serf_bucket_t **bkt
}
/* If we're not doing an allprop, add <prop> tags. */
- if (requested_allprop == FALSE)
+ if (!requested_allprop)
{
tmp = SERF_BUCKET_SIMPLE_STRING_LEN("<prop>",
sizeof("<prop>")-1,
@@ -540,7 +540,7 @@ create_propfind_body(serf_bucket_t **bkt
serf_bucket_aggregate_prepend(body_bkt, tmp);
- if (requested_allprop == FALSE)
+ if (!requested_allprop)
{
tmp = SERF_BUCKET_SIMPLE_STRING_LEN("</prop>",
sizeof("</prop>")-1,
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h Sat Jan 12 20:24:12 2013
@@ -243,6 +243,10 @@ struct svn_ra_serf__session_t {
/* Indicates if the server supports sending inlined props in update editor
* in skelta mode (send-all == 'false'). */
svn_boolean_t supports_inline_props;
+
+ /* Indicates whether the server supports issuing replay REPORTs
+ against rev resources (children of `rev_stub', elsestruct). */
+ svn_boolean_t supports_rev_rsrc_replay;
};
#define SVN_RA_SERF__HAVE_HTTPV2_SUPPORT(sess) ((sess)->me_resource != NULL)
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/replay.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/replay.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/replay.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/replay.c Sat Jan 12 20:24:12 2013
@@ -107,16 +107,17 @@ typedef struct replay_context_t {
const svn_delta_editor_t *editor;
void *editor_baton;
- /* current revision */
+ /* Path and revision used to filter replayed changes. If
+ INCLUDE_PATH is non-NULL, REVISION is unnecessary and will not be
+ included in the replay REPORT. (Because the REPORT is being
+ aimed an HTTP v2 revision resource.) */
+ const char *include_path;
svn_revnum_t revision;
/* Information needed to create the replay report body */
svn_revnum_t low_water_mark;
svn_boolean_t send_deltas;
- /* Cached report target url */
- const char *report_target;
-
/* Target and revision to fetch revision properties on */
const char *revprop_target;
svn_revnum_t revprop_rev;
@@ -128,8 +129,9 @@ typedef struct replay_context_t {
/* Keep a reference to the XML parser ctx to report any errors. */
svn_ra_serf__xml_parser_t *parser_ctx;
- /* The propfind for the revision properties of the current revision */
+ /* Handlers for the PROPFIND and REPORT for the current revision. */
svn_ra_serf__handler_t *propfind_handler;
+ svn_ra_serf__handler_t *report_handler;
} replay_context_t;
@@ -602,10 +604,22 @@ create_replay_body(serf_bucket_t **bkt,
"xmlns:S", SVN_XML_NAMESPACE,
NULL);
- svn_ra_serf__add_tag_buckets(body_bkt,
- "S:revision",
- apr_ltoa(ctx->src_rev_pool, ctx->revision),
- alloc);
+ /* If we have a non-NULL include path, we add it to the body and
+ omit the revision; otherwise, the reverse. */
+ if (ctx->include_path)
+ {
+ svn_ra_serf__add_tag_buckets(body_bkt,
+ "S:include-path",
+ ctx->include_path,
+ alloc);
+ }
+ else
+ {
+ svn_ra_serf__add_tag_buckets(body_bkt,
+ "S:revision",
+ apr_ltoa(ctx->src_rev_pool, ctx->revision),
+ alloc);
+ }
svn_ra_serf__add_tag_buckets(body_bkt,
"S:low-water-mark",
apr_ltoa(ctx->src_rev_pool, ctx->low_water_mark),
@@ -648,7 +662,6 @@ svn_ra_serf__replay(svn_ra_session_t *ra
replay_ctx->revision = revision;
replay_ctx->low_water_mark = low_water_mark;
replay_ctx->send_deltas = send_deltas;
- replay_ctx->report_target = report_target;
replay_ctx->revs_props = apr_hash_make(replay_ctx->src_rev_pool);
handler = apr_pcalloc(pool, sizeof(*handler));
@@ -676,12 +689,17 @@ svn_ra_serf__replay(svn_ra_session_t *ra
/* This is only needed to handle errors during XML parsing. */
replay_ctx->parser_ctx = parser_ctx;
+ replay_ctx->report_handler = handler; /* unused */
svn_ra_serf__request_create(handler);
err = svn_ra_serf__context_run_wait(&replay_ctx->done, session, pool);
- SVN_ERR(err);
+ SVN_ERR(svn_error_compose_create(
+ svn_ra_serf__error_on_status(handler->sline.code,
+ handler->path,
+ handler->location),
+ err));
return SVN_NO_ERROR;
}
@@ -732,9 +750,39 @@ svn_ra_serf__replay_range(svn_ra_session
svn_revnum_t rev = start_revision;
const char *report_target;
int active_reports = 0;
+ const char *include_path;
SVN_ERR(svn_ra_serf__report_resource(&report_target, session, NULL, pool));
+ /* Prior to 1.8, mod_dav_svn expect to get replay REPORT requests
+ aimed at the session URL. But that's incorrect -- these reports
+ aren't about specific resources -- they are above revisions. The
+ path-based filtering offered by this API is just that: a filter
+ applied to the full set of changes made in the revision. As
+ such, the correct target for these REPORT requests is the "me
+ resource" (or, pre-http-v2, the default VCC).
+
+ Our server should have told us if it supported this protocol
+ correction. If so, we aimed our report at the correct resource
+ and include the filtering path as metadata within the report
+ body. Otherwise, we fall back to the pre-1.8 behavior and just
+ wish for the best.
+
+ See issue #4287:
+ http://subversion.tigris.org/issues/show_bug.cgi?id=4287
+ */
+ if (session->supports_rev_rsrc_replay)
+ {
+ SVN_ERR(svn_ra_serf__get_relative_path(&include_path,
+ session->session_url.path,
+ session, session->conns[0],
+ pool));
+ }
+ else
+ {
+ include_path = NULL;
+ }
+
while (active_reports || rev <= end_revision)
{
svn_ra_serf__list_t *done_list;
@@ -751,6 +799,7 @@ svn_ra_serf__replay_range(svn_ra_session
svn_ra_serf__handler_t *handler;
svn_ra_serf__xml_parser_t *parser_ctx;
apr_pool_t *ctx_pool = svn_pool_create(pool);
+ const char *replay_target;
replay_ctx = apr_pcalloc(ctx_pool, sizeof(*replay_ctx));
replay_ctx->src_rev_pool = ctx_pool;
@@ -758,19 +807,20 @@ svn_ra_serf__replay_range(svn_ra_session
replay_ctx->revfinish_func = revfinish_func;
replay_ctx->replay_baton = replay_baton;
replay_ctx->done = FALSE;
+ replay_ctx->include_path = include_path;
replay_ctx->revision = rev;
replay_ctx->low_water_mark = low_water_mark;
replay_ctx->send_deltas = send_deltas;
replay_ctx->done_item.data = replay_ctx;
+
/* Request all properties of a certain revision. */
- replay_ctx->report_target = report_target;
replay_ctx->revs_props = apr_hash_make(replay_ctx->src_rev_pool);
if (SVN_RA_SERF__HAVE_HTTPV2_SUPPORT(session))
- {
- replay_ctx->revprop_target = apr_psprintf(pool, "%s/%ld",
- session->rev_stub, rev);
- replay_ctx->revprop_rev = SVN_INVALID_REVNUM;
+ {
+ replay_ctx->revprop_target = apr_psprintf(pool, "%s/%ld",
+ session->rev_stub, rev);
+ replay_ctx->revprop_rev = SVN_INVALID_REVNUM;
}
else
{
@@ -790,12 +840,22 @@ svn_ra_serf__replay_range(svn_ra_session
/* Spin up the serf request for the PROPFIND. */
svn_ra_serf__request_create(replay_ctx->propfind_handler);
- /* Send the replay report request. */
+ /* Send the replay REPORT request. */
+ if (session->supports_rev_rsrc_replay)
+ {
+ replay_target = apr_psprintf(pool, "%s/%ld",
+ session->rev_stub, rev);
+ }
+ else
+ {
+ replay_target = session->session_url.path;
+ }
+
handler = apr_pcalloc(replay_ctx->src_rev_pool, sizeof(*handler));
handler->handler_pool = replay_ctx->src_rev_pool;
handler->method = "REPORT";
- handler->path = session->session_url.path;
+ handler->path = replay_target;
handler->body_delegate = create_replay_body;
handler->body_delegate_baton = replay_ctx;
handler->conn = session->conns[0];
@@ -821,6 +881,7 @@ svn_ra_serf__replay_range(svn_ra_session
parser_ctx->done_item = &replay_ctx->done_item;
handler->response_handler = svn_ra_serf__handle_xml_parser;
handler->response_baton = parser_ctx;
+ replay_ctx->report_handler = handler;
/* This is only needed to handle errors during XML parsing. */
replay_ctx->parser_ctx = parser_ctx;
@@ -841,8 +902,12 @@ svn_ra_serf__replay_range(svn_ra_session
while (done_list)
{
replay_context_t *ctx = (replay_context_t *)done_list->data;
+ svn_ra_serf__handler_t *done_handler = ctx->report_handler;
done_list = done_list->next;
+ SVN_ERR(svn_ra_serf__error_on_status(done_handler->sline.code,
+ done_handler->path,
+ done_handler->location));
svn_pool_destroy(ctx->src_rev_pool);
active_reports--;
}
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c Sat Jan 12 20:24:12 2013
@@ -935,7 +935,7 @@ cancel_fetch(serf_request_t *request,
*/
if (fetch_ctx->read_headers)
{
- if (fetch_ctx->aborted_read == FALSE && fetch_ctx->read_size)
+ if (!fetch_ctx->aborted_read && fetch_ctx->read_size)
{
fetch_ctx->aborted_read = TRUE;
fetch_ctx->aborted_read_size = fetch_ctx->read_size;
@@ -1089,7 +1089,7 @@ handle_fetch(serf_request_t *request,
/* ### new field. make sure we didn't miss some initialization. */
SVN_ERR_ASSERT(fetch_ctx->handler != NULL);
- if (fetch_ctx->read_headers == FALSE)
+ if (!fetch_ctx->read_headers)
{
serf_bucket_t *hdrs;
const char *val;
@@ -2252,7 +2252,7 @@ end_report(svn_ra_serf__xml_parser_t *pa
info->lock_token = apr_hash_get(ctx->lock_path_tokens, info->name,
APR_HASH_KEY_STRING);
- if (info->lock_token && info->fetch_props == FALSE)
+ if (info->lock_token && !info->fetch_props)
info->fetch_props = TRUE;
/* If possible, we'd like to fetch only a delta against a
@@ -3066,7 +3066,7 @@ finish_report(void *report_baton,
{
/* Ensure that we opened and closed our root dir and that we closed
* all of our children. */
- if (report->closed_root == FALSE && report->root_dir != NULL)
+ if (!report->closed_root && report->root_dir != NULL)
{
SVN_ERR(close_all_dirs(report->root_dir));
}
@@ -3197,8 +3197,19 @@ make_update_reporter(svn_ra_session_t *r
}
else
{
- /* Pre-1.8 server didn't send the bulk_updates header. Do
- whatever is the default or what the user defined in the config. */
+ /* Pre-1.8 server didn't send the bulk_updates header. Check if server
+ supports inlining properties in update editor report. */
+ if (sess->supports_inline_props)
+ {
+ /* Inline props supported: do not use bulk updates. */
+ sess->bulk_updates = FALSE;
+ }
+ else
+ {
+ /* Inline props are noot supported: use bulk updates to avoid
+ * PROPFINDs for every added node. */
+ sess->bulk_updates = TRUE;
+ }
}
if (sess->bulk_updates)
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c Sat Jan 12 20:24:12 2013
@@ -1559,7 +1559,7 @@ svn_ra_serf__handle_xml_parser(serf_requ
}
/* Woo-hoo. Nothing here to see. */
- if (sl.code == 404 && ctx->ignore_errors == FALSE)
+ if (sl.code == 404 && !ctx->ignore_errors)
{
err = handle_server_error(request, response, pool);
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_svn/client.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_svn/client.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_svn/client.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_svn/client.c Sat Jan 12 20:24:12 2013
@@ -1304,7 +1304,7 @@ static svn_error_t *ra_svn_get_dir(svn_r
static svn_tristate_t
optbool_to_tristate(apr_uint64_t v)
{
- if (v == TRUE)
+ if (v == TRUE) /* not just non-zero but exactly equal to 'TRUE' */
return svn_tristate_true;
if (v == FALSE)
return svn_tristate_false;
Modified: subversion/branches/ev2-export/subversion/libsvn_repos/authz.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_repos/authz.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_repos/authz.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_repos/authz.c Sat Jan 12 20:24:12 2013
@@ -304,10 +304,8 @@ authz_parse_section(const char *section_
svn_boolean_t conclusive;
/* Does the section apply to us? */
- if (is_applicable_section(b->qualified_repos_path,
- section_name) == FALSE
- && is_applicable_section(b->repos_path,
- section_name) == FALSE)
+ if (!is_applicable_section(b->qualified_repos_path, section_name)
+ && !is_applicable_section(b->repos_path, section_name))
return TRUE;
/* Work out what this section grants. */
Modified: subversion/branches/ev2-export/subversion/libsvn_repos/fs-wrap.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_repos/fs-wrap.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_repos/fs-wrap.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_repos/fs-wrap.c Sat Jan 12 20:24:12 2013
@@ -178,7 +178,7 @@ svn_repos__validate_prop(const char *nam
* LF line endings. */
if (svn_prop_needs_translation(name))
{
- if (svn_utf__is_valid(value->data, value->len) == FALSE)
+ if (!svn_utf__is_valid(value->data, value->len))
{
return svn_error_createf
(SVN_ERR_BAD_PROPERTY_VALUE, NULL,
Modified: subversion/branches/ev2-export/subversion/libsvn_repos/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_repos/repos.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_repos/repos.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_repos/repos.c Sat Jan 12 20:24:12 2013
@@ -1539,6 +1539,23 @@ get_repos(svn_repos_t **repos_p,
if (open_fs)
SVN_ERR(svn_fs_open(&repos->fs, repos->db_path, fs_config, pool));
+#ifdef SVN_DEBUG_CRASH_AT_REPOS_OPEN
+ /* If $PATH/config/debug-abort exists, crash the server here.
+ This debugging feature can be used to test client recovery
+ when the server crashes.
+
+ See: Issue #4274 */
+ {
+ svn_node_kind_t kind;
+ svn_error_t *err = svn_io_check_path(
+ svn_dirent_join(repos->conf_path, "debug-abort", pool),
+ &kind, pool);
+ svn_error_clear(err);
+ if (!err && kind == svn_node_file)
+ SVN_ERR_MALFUNCTION_NO_RETURN();
+ }
+#endif /* SVN_DEBUG_CRASH_AT_REPOS_OPEN */
+
*repos_p = repos;
return SVN_NO_ERROR;
}
Modified: subversion/branches/ev2-export/subversion/libsvn_subr/cmdline.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/cmdline.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/cmdline.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/cmdline.c Sat Jan 12 20:24:12 2013
@@ -485,7 +485,7 @@ svn_cmdline_create_auth_baton(svn_auth_b
pb->config_dir = config_dir;
}
- if (non_interactive == FALSE)
+ if (!non_interactive)
{
/* This provider doesn't prompt the user in order to get creds;
it prompts the user regarding the caching of creds. */
@@ -516,7 +516,7 @@ svn_cmdline_create_auth_baton(svn_auth_b
svn_auth_get_ssl_client_cert_file_provider(&provider, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
- if (non_interactive == FALSE)
+ if (!non_interactive)
{
/* This provider doesn't prompt the user in order to get creds;
it prompts the user regarding the caching of creds. */
@@ -531,7 +531,7 @@ svn_cmdline_create_auth_baton(svn_auth_b
}
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
- if (non_interactive == FALSE)
+ if (!non_interactive)
{
svn_boolean_t ssl_client_cert_file_prompt;
Modified: subversion/branches/ev2-export/subversion/libsvn_subr/config.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/config.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/config.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/config.c Sat Jan 12 20:24:12 2013
@@ -224,7 +224,7 @@ read_all(svn_config_t **cfgp,
}
if (! red_config)
- *cfgp = NULL;
+ SVN_ERR(svn_config_create(cfgp, FALSE, pool));
return SVN_NO_ERROR;
}
Modified: subversion/branches/ev2-export/subversion/libsvn_subr/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/deprecated.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/deprecated.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/deprecated.c Sat Jan 12 20:24:12 2013
@@ -364,7 +364,7 @@ print_command_info(const svn_opt_subcomm
{
if (cmd->valid_options[i])
{
- if (have_options == FALSE)
+ if (!have_options)
{
SVN_ERR(svn_cmdline_fputs(_("\nValid options:\n"),
stream, pool));
Modified: subversion/branches/ev2-export/subversion/libsvn_subr/named_atomic.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/named_atomic.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/named_atomic.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/named_atomic.c Sat Jan 12 20:24:12 2013
@@ -372,7 +372,7 @@ svn_named_atomic__is_supported(void)
result = svn_tristate_false;
}
- return result == svn_tristate_true ? TRUE : FALSE;
+ return result == svn_tristate_true;
#else
return TRUE;
#endif
Modified: subversion/branches/ev2-export/subversion/libsvn_subr/opt.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/opt.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/opt.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/opt.c Sat Jan 12 20:24:12 2013
@@ -296,7 +296,7 @@ print_command_info2(const svn_opt_subcom
{
if (cmd->valid_options[i])
{
- if (have_options == FALSE)
+ if (!have_options)
{
SVN_ERR(svn_cmdline_fputs(_("\nValid options:\n"),
stream, pool));
Modified: subversion/branches/ev2-export/subversion/libsvn_subr/stream.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/stream.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/stream.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/stream.c Sat Jan 12 20:24:12 2013
@@ -173,7 +173,7 @@ svn_stream_reset(svn_stream_t *stream)
svn_boolean_t
svn_stream_supports_mark(svn_stream_t *stream)
{
- return stream->mark_fn == NULL ? FALSE : TRUE;
+ return stream->mark_fn != NULL;
}
svn_error_t *
Modified: subversion/branches/ev2-export/subversion/libsvn_subr/subst.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/subst.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/subst.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/subst.c Sat Jan 12 20:24:12 2013
@@ -987,14 +987,14 @@ translate_chunk(svn_stream_t *dst,
b->keyword_buf[b->keyword_off++] = *p++;
keyword_matches = match_keyword(b->keyword_buf, b->keyword_off,
keyword_name, b->keywords);
- if (keyword_matches == FALSE)
+ if (!keyword_matches)
{
/* reuse the ending '$' */
p--;
b->keyword_off--;
}
- if (keyword_matches == FALSE ||
+ if (!keyword_matches ||
translate_keyword(b->keyword_buf, &b->keyword_off,
keyword_name, b->expand, b->keywords) ||
b->keyword_off >= SVN_KEYWORD_MAX_LEN)
Modified: subversion/branches/ev2-export/subversion/libsvn_subr/win32_crashrpt.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/win32_crashrpt.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/win32_crashrpt.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/win32_crashrpt.c Sat Jan 12 20:24:12 2013
@@ -428,7 +428,7 @@ write_var_values(PSYMBOL_INFO sym_info,
(void *)var_data);
fprintf(log_file, "%s=%s", sym_info->Name, value_str);
}
- if (log_params == FALSE && sym_info->Flags & SYMFLAG_LOCAL)
+ if (!log_params && sym_info->Flags & SYMFLAG_LOCAL)
{
format_value(value_str, sym_info->ModBase, sym_info->TypeIndex,
(void *)var_data);
@@ -738,13 +738,13 @@ svn__unhandled_exception_filter(PEXCEPTI
return EXCEPTION_CONTINUE_SEARCH;
/* ... or if we can't create the log files ... */
- if (get_temp_filename(dmp_filename, LOGFILE_PREFIX, "dmp") == FALSE ||
- get_temp_filename(log_filename, LOGFILE_PREFIX, "log") == FALSE)
+ if (!get_temp_filename(dmp_filename, LOGFILE_PREFIX, "dmp") ||
+ !get_temp_filename(log_filename, LOGFILE_PREFIX, "log"))
return EXCEPTION_CONTINUE_SEARCH;
/* If we can't load a recent version of the dbghelp.dll, pass on this
exception */
- if (load_dbghelp_dll() == FALSE)
+ if (!load_dbghelp_dll())
return EXCEPTION_CONTINUE_SEARCH;
/* open log file */
Modified: subversion/branches/ev2-export/subversion/libsvn_wc/adm_crawler.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/adm_crawler.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_wc/adm_crawler.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_wc/adm_crawler.c Sat Jan 12 20:24:12 2013
@@ -104,6 +104,7 @@ svn_wc_restore(svn_wc_context_t *wc_ctx,
svn_wc__db_status_t status;
svn_kind_t kind;
svn_node_kind_t disk_kind;
+ const svn_checksum_t *checksum;
SVN_ERR(svn_io_check_path(local_abspath, &disk_kind, scratch_pool));
@@ -113,27 +114,19 @@ svn_wc_restore(svn_wc_context_t *wc_ctx,
svn_dirent_local_style(local_abspath,
scratch_pool));
-
-
SVN_ERR(svn_wc__db_read_info(&status, &kind, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, &checksum, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
wc_ctx->db, local_abspath,
scratch_pool, scratch_pool));
- if (status == svn_wc__db_status_added)
- SVN_ERR(svn_wc__db_scan_addition(&status, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL,
- wc_ctx->db, local_abspath,
- scratch_pool, scratch_pool));
-
if (status != svn_wc__db_status_normal
- && status != svn_wc__db_status_copied
- && status != svn_wc__db_status_moved_here
- && !(kind == svn_kind_dir
- && (status == svn_wc__db_status_added
- || status == svn_wc__db_status_incomplete)))
+ && !((status == svn_wc__db_status_added
+ || status == svn_wc__db_status_incomplete)
+ && (kind == svn_kind_dir
+ || (kind == svn_kind_file && checksum != NULL)
+ /* || (kind == svn_kind_symlink && target)*/)))
{
return svn_error_createf(SVN_ERR_WC_PATH_UNEXPECTED_STATUS, NULL,
_("The node '%s' can not be restored."),
@@ -278,7 +271,11 @@ report_revisions_and_depths(svn_wc__db_t
|| SVN__APR_STATUS_IS_ENOTDIR(err->apr_err)))
{
svn_error_clear(err);
- dirents = apr_hash_make(scratch_pool);
+ /* There is no directory, and if we could create the directory
+ we would have already created it when walking the parent
+ directory */
+ restore_files = FALSE;
+ dirents = NULL;
}
else
SVN_ERR(err);
Modified: subversion/branches/ev2-export/subversion/libsvn_wc/cleanup.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/cleanup.c?rev=1432504&r1=1432503&r2=1432504&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_wc/cleanup.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_wc/cleanup.c Sat Jan 12 20:24:12 2013
@@ -143,12 +143,17 @@ cleanup_internal(svn_wc__db_t *db,
{
int wc_format;
svn_boolean_t is_wcroot;
+ const char *lock_abspath;
/* Can we even work with this directory? */
SVN_ERR(can_be_cleaned(&wc_format, db, dir_abspath, scratch_pool));
- /* ### This fails if ADM_ABSPATH is locked indirectly via a
- ### recursive lock on an ancestor. */
+ /* We cannot obtain a lock on a directory that's within a locked
+ subtree, so always run cleanup from the lock owner. */
+ SVN_ERR(svn_wc__db_wclock_find_root(&lock_abspath, db, dir_abspath,
+ scratch_pool, scratch_pool));
+ if (lock_abspath)
+ dir_abspath = lock_abspath;
SVN_ERR(svn_wc__db_wclock_obtain(db, dir_abspath, -1, TRUE, scratch_pool));
/* Run our changes before the subdirectories. We may not have to recurse