Author: brane
Date: Mon Mar 31 14:26:40 2014
New Revision: 1583335
URL: http://svn.apache.org/r1583335
Log:
On the remote-only-status branch: Update implementation to match description.
* subversion/include/svn_client.h
(svn_client_status6): Rename parameter ignore_local_mods to
check_working_copy, inverting the semantics of the value.
Update all uses to the new semantics of the parameter.
* subversion/include/private/svn_wc_private.h
(svn_wc__get_status_editor): Likewise.
* subversion/libsvn_client/status.c
(do_external_status, svn_client_status6): Likewise.
* subversion/svn/status-cmd.c
(svn_cl__status): Likewise.
* subversion/libsvn_wc/status.c:
Apply the ignore_local_mods -> check_working_copy change.
(read_base_node_info): Removed.
(get_dir_status): Account for all status info in the wc-db, but ignore
locally added files.
(internal_status): Likewise.
* subversion/tests/libsvn_client/client-test.c
(test_remote_only_status): Update test case.
[in subversion/bindings/javahl]
* native/SVNClient.h, native/SVNClient.cpp (SVNClient::status):
Rename parameter ignoreLocal to onDisk, in line with the core API change.
* native/org_apache_subversion_javahl_SVNClient.cpp
(Java_org_apache_subversion_javahl_SVNClient_status): Likewise.
* src/org/apache/subversion/javahl/ISVNClient.java
(ISVNClient.status): Likewise.
* src/org/apache/subversion/javahl/SVNClient.java
(ISVNClient.status): Likewise, and fix deprecated wrapper.
* tests/org/apache/subversion/javahl/BasicTests.java:
Update all uses of ISVNClient.status().
Modified:
subversion/branches/remote-only-status/subversion/bindings/javahl/native/SVNClient.cpp
subversion/branches/remote-only-status/subversion/bindings/javahl/native/SVNClient.h
subversion/branches/remote-only-status/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
subversion/branches/remote-only-status/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
subversion/branches/remote-only-status/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
subversion/branches/remote-only-status/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
subversion/branches/remote-only-status/subversion/include/private/svn_wc_private.h
subversion/branches/remote-only-status/subversion/include/svn_client.h
subversion/branches/remote-only-status/subversion/libsvn_client/status.c
subversion/branches/remote-only-status/subversion/libsvn_wc/status.c
subversion/branches/remote-only-status/subversion/svn/status-cmd.c
subversion/branches/remote-only-status/subversion/tests/libsvn_client/client-test.c
subversion/branches/remote-only-status/subversion/tests/svn_test.h
subversion/branches/remote-only-status/subversion/tests/svn_test_main.c
Modified:
subversion/branches/remote-only-status/subversion/bindings/javahl/native/SVNClient.cpp
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/bindings/javahl/native/SVNClient.cpp?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
---
subversion/branches/remote-only-status/subversion/bindings/javahl/native/SVNClient.cpp
(original)
+++
subversion/branches/remote-only-status/subversion/bindings/javahl/native/SVNClient.cpp
Mon Mar 31 14:26:40 2014
@@ -187,7 +187,7 @@ void SVNClient::list(const char *url, Re
void
SVNClient::status(const char *path, svn_depth_t depth,
- bool onServer, bool ignoreLocal, bool getAll,
+ bool onServer, bool onDisk, bool getAll,
bool noIgnore, bool ignoreExternals,
bool depthAsSticky, StringArray &changelists,
StatusCallback *callback)
@@ -210,7 +210,7 @@ SVNClient::status(const char *path, svn_
SVN_JNI_ERR(svn_client_status6(&youngest, ctx, checkedPath.c_str(),
&rev, depth,
- getAll, onServer, ignoreLocal,
+ getAll, onServer, onDisk,
noIgnore, ignoreExternals, depthAsSticky,
changelists.array(subPool),
StatusCallback::callback, callback,
Modified:
subversion/branches/remote-only-status/subversion/bindings/javahl/native/SVNClient.h
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/bindings/javahl/native/SVNClient.h?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
---
subversion/branches/remote-only-status/subversion/bindings/javahl/native/SVNClient.h
(original)
+++
subversion/branches/remote-only-status/subversion/bindings/javahl/native/SVNClient.h
Mon Mar 31 14:26:40 2014
@@ -170,7 +170,7 @@ class SVNClient :public SVNBase
void getChangelists(const char *path, StringArray *changelists,
svn_depth_t depth, ChangelistCallback *callback);
void status(const char *path, svn_depth_t depth,
- bool onServer, bool ignoreLocal, bool getAll,
+ bool onServer, bool onDisk, bool getAll,
bool noIgnore, bool ignoreExternals,
bool depthAsSticky, StringArray &changelists,
StatusCallback *callback);
Modified:
subversion/branches/remote-only-status/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
---
subversion/branches/remote-only-status/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
(original)
+++
subversion/branches/remote-only-status/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
Mon Mar 31 14:26:40 2014
@@ -184,7 +184,7 @@ Java_org_apache_subversion_javahl_SVNCli
JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_status
(JNIEnv *env, jobject jthis, jstring jpath, jobject jdepth,
- jboolean jonServer, jboolean jignoreLocal, jboolean jgetAll,
+ jboolean jonServer, jboolean jonDisk, jboolean jgetAll,
jboolean jnoIgnore, jboolean jignoreExternals,
jboolean jdepthAsSticky, jobject jchangelists,
jobject jstatusCallback)
@@ -204,7 +204,7 @@ Java_org_apache_subversion_javahl_SVNCli
StatusCallback callback(jstatusCallback);
cl->status(path, EnumMapper::toDepth(jdepth),
- bool(jonServer), bool(jignoreLocal), bool(jgetAll),
+ bool(jonServer), bool(jonDisk), bool(jgetAll),
bool(jnoIgnore), bool(jignoreExternals),
bool(jdepthAsSticky), changelists, &callback);
}
Modified:
subversion/branches/remote-only-status/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
---
subversion/branches/remote-only-status/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
(original)
+++
subversion/branches/remote-only-status/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
Mon Mar 31 14:26:40 2014
@@ -84,8 +84,10 @@ public interface ISVNClient
* @param path Path to explore.
* @param depth How deep to recurse into subdirectories.
* @param onServer Request status information from server.
- * @param ignoreLocal Ignore local modifications; only used when
- * <code>onServer</code> is set.
+ * @param onDisk Check the working copy for modified or missing
+ * items. A value of <code>false</code> only
+ * has effect when <code>onServer</code> is
+ * <code>true</code>.
* @param getAll get status for uninteresting (unchanged) files.
* @param noIgnore get status for normaly ignored files and directories.
* @param ignoreExternals if externals are ignored during status
@@ -106,7 +108,7 @@ public interface ISVNClient
* maybe repository.
* <p>
* Behaves like the 1.9 version with
- * <code>ignoreLocal = * false</code> and
+ * <code>onDisk = true</code> and
* <code>depthAsSticky = false</code>.
* @deprecated
*/
Modified:
subversion/branches/remote-only-status/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
---
subversion/branches/remote-only-status/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
(original)
+++
subversion/branches/remote-only-status/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
Mon Mar 31 14:26:40 2014
@@ -122,7 +122,7 @@ public class SVNClient implements ISVNCl
public native String getLastPath();
public native void status(String path, Depth depth,
- boolean onServer, boolean ignoreLocal,
+ boolean onServer, boolean onDisk,
boolean getAll, boolean noIgnore,
boolean ignoreExternals, boolean depthAsSticky,
Collection<String> changelists,
@@ -137,7 +137,7 @@ public class SVNClient implements ISVNCl
StatusCallback callback)
throws ClientException
{
- status(path, depth, onServer, false, getAll, noIgnore,
+ status(path, depth, onServer, true, getAll, noIgnore,
ignoreExternals, false, changelists, callback);
}
Modified:
subversion/branches/remote-only-status/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
---
subversion/branches/remote-only-status/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
(original)
+++
subversion/branches/remote-only-status/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
Mon Mar 31 14:26:40 2014
@@ -316,7 +316,7 @@ public class BasicTests extends SVNTests
MyStatusCallback statusCallback = new MyStatusCallback();
client.status(fileToSVNPath(fileC, false), Depth.unknown,
- false, false, true, false, false, false,
+ false, true, true, false, false, false,
null, statusCallback);
final int statusCount = statusCallback.getStatusArray().length;
@@ -402,7 +402,7 @@ public class BasicTests extends SVNTests
statusCallback = new MyStatusCallback();
client.status(thisTest.getWCPath() + "/A/D/G/rho", Depth.immediates,
- false, false, true, false, false, false,
+ false, true, true, false, false, false,
null, statusCallback);
status = statusCallback.getStatusArray()[0];
long rhoCommitDate = status.getLastChangedDate().getTime();
@@ -440,7 +440,7 @@ public class BasicTests extends SVNTests
+ "modification to tau");
statusCallback = new MyStatusCallback();
client.status(thisTest.getWCPath() + "/A/D/G/tau", Depth.immediates,
- false, false, true, false, false, false,
+ false, true, true, false, false, false,
null, statusCallback);
status = statusCallback.getStatusArray()[0];
long tauCommitDate = status.getLastChangedDate().getTime();
@@ -470,7 +470,7 @@ public class BasicTests extends SVNTests
thisTest.getWc().addItem("A/B/I", null);
statusCallback = new MyStatusCallback();
client.status(thisTest.getWCPath() + "/A/B/I", Depth.immediates,
- false, false, true, false, false, false,
+ false, true, true, false, false, false,
null, statusCallback);
status = statusCallback.getStatusArray()[0];
long ICommitDate = status.getLastChangedDate().getTime();
@@ -506,7 +506,7 @@ public class BasicTests extends SVNTests
thisTest.getWc().addItem("A/D/H/nu", "This is the file 'nu'.");
statusCallback = new MyStatusCallback();
client.status(thisTest.getWCPath() + "/A/D/H/nu", Depth.immediates,
- false, false, true, false, false, false,
+ false, true, true, false, false, false,
null, statusCallback);
status = statusCallback.getStatusArray()[0];
long nuCommitDate = status.getLastChangedDate().getTime();
@@ -524,7 +524,7 @@ public class BasicTests extends SVNTests
thisTest.getWc().setItemWorkingCopyRevision("A/B/F", rev);
statusCallback = new MyStatusCallback();
client.status(thisTest.getWCPath() + "/A/B/F", Depth.immediates,
- false, false, true, false, false, false,
+ false, true, true, false, false, false,
null, statusCallback);
status = statusCallback.getStatusArray()[0];
long FCommitDate = status.getLastChangedDate().getTime();
@@ -556,7 +556,7 @@ public class BasicTests extends SVNTests
"This is the replacement file 'chi'.");
statusCallback = new MyStatusCallback();
client.status(thisTest.getWCPath() + "/A/D/H/chi", Depth.immediates,
- false, false, true, false, false, false,
+ false, true, true, false, false, false,
null, statusCallback);
status = statusCallback.getStatusArray()[0];
long chiCommitDate = status.getLastChangedDate().getTime();
@@ -608,7 +608,7 @@ public class BasicTests extends SVNTests
assertEquals("wrong revision number from commit", rev, expectedRev++);
statusCallback = new MyStatusCallback();
client.status(thisTest.getWCPath() + "/A/D/H/psi", Depth.immediates,
- false, false, true, false, false, false,
+ false, true, true, false, false, false,
null, statusCallback);
status = statusCallback.getStatusArray()[0];
long psiCommitDate = status.getLastChangedDate().getTime();
@@ -1084,7 +1084,7 @@ public class BasicTests extends SVNTests
MyStatusCallback statusCallback = new MyStatusCallback();
String statusPath = fileToSVNPath(new File(thisTest.getWCPath() +
"/A/B"), true);
client.status(statusPath, Depth.infinity,
- false, false, false, false, true, false,
+ false, true, false, false, true, false,
null, statusCallback);
Status[] statusList = statusCallback.getStatusArray();
assertEquals(statusPath + "/F/alpha",
@@ -2355,7 +2355,7 @@ public class BasicTests extends SVNTests
// Does status report this changelist?
MyStatusCallback statusCallback = new MyStatusCallback();
client.status(path, Depth.immediates,
- false, false, false, false, false, false,
+ false, true, false, false, false, false,
null, statusCallback);
Status[] status = statusCallback.getStatusArray();
assertEquals(status[0].getChangelist(), changelistName);
Modified:
subversion/branches/remote-only-status/subversion/include/private/svn_wc_private.h
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/include/private/svn_wc_private.h?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
---
subversion/branches/remote-only-status/subversion/include/private/svn_wc_private.h
(original)
+++
subversion/branches/remote-only-status/subversion/include/private/svn_wc_private.h
Mon Mar 31 14:26:40 2014
@@ -1322,9 +1322,8 @@ svn_wc__resolve_relative_external_url(co
* If the given @a depth is incompatible with the depth found in a
* working copy directory, the found depth always governs.
*
- * If @a ignore_local_mods is set, local modifications will be ignored
- * and only the difference between the @c BASE version and the remote
- * repository will be reported.
+ * If @a check_working_copy is not set, do not scan the working copy
+ * for locally modified and missing files.
* ### TODO: describe interaction with @a get_all.
*
* If @a no_ignore is set, statuses that would typically be ignored
@@ -1361,7 +1360,7 @@ svn_wc__get_status_editor(const svn_delt
const char *target_basename,
svn_depth_t depth,
svn_boolean_t get_all,
- svn_boolean_t ignore_local_mods,
+ svn_boolean_t check_working_copy,
svn_boolean_t no_ignore,
svn_boolean_t depth_as_sticky,
svn_boolean_t server_performs_filtering,
Modified: subversion/branches/remote-only-status/subversion/include/svn_client.h
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/include/svn_client.h?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/include/svn_client.h
(original)
+++ subversion/branches/remote-only-status/subversion/include/svn_client.h Mon
Mar 31 14:26:40 2014
@@ -2509,9 +2509,9 @@ typedef svn_error_t *(*svn_client_status
* *result_rev is not meaningful unless @a check_out_of_date is
* set).
*
- * - If @a ignore_local_mods is set, do not take local
- * modifications into account. This parameter will be ignored
- * unless @a check_out_of_date is also set.
+ * - If @a check_working_copy is not set, do not scan the working
+ * copy for locally modified and missing files. This parameter
+ * will be ignored unless @a check_out_of_date is set.
*
* If @a no_ignore is @c FALSE, don't report any file or directory (or
* recurse into any directory) that is found by recursion (as opposed to
@@ -2551,8 +2551,8 @@ svn_client_status6(svn_revnum_t *result_
const svn_opt_revision_t *revision,
svn_depth_t depth,
svn_boolean_t get_all,
- svn_boolean_t check_out_of_date, /* RENAMED FROM: 'update'
*/
- svn_boolean_t ignore_local_mods, /* NEW */
+ svn_boolean_t check_out_of_date,
+ svn_boolean_t check_working_copy,
svn_boolean_t no_ignore,
svn_boolean_t ignore_externals,
svn_boolean_t depth_as_sticky,
@@ -2564,7 +2564,7 @@ svn_client_status6(svn_revnum_t *result_
/**
* Same as svn_client_status6(), but with @a check_out_of_date set to
- * @a update and @a ignore_local_mods set to @c FALSE.
+ * @a update and @a check_working_copy set to @c TRUE.
*
* @since New in 1.7.
* @deprecated Provided for backward compatibility with the 1.8 API.
Modified:
subversion/branches/remote-only-status/subversion/libsvn_client/status.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/libsvn_client/status.c?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/libsvn_client/status.c
(original)
+++ subversion/branches/remote-only-status/subversion/libsvn_client/status.c
Mon Mar 31 14:26:40 2014
@@ -248,7 +248,7 @@ do_external_status(svn_client_ctx_t *ctx
svn_depth_t depth,
svn_boolean_t get_all,
svn_boolean_t check_out_of_date,
- svn_boolean_t ignore_local_mods,
+ svn_boolean_t check_working_copy,
svn_boolean_t no_ignore,
const apr_array_header_t *changelists,
const char *anchor_abspath,
@@ -318,7 +318,7 @@ do_external_status(svn_client_ctx_t *ctx
/* And then do the status. */
SVN_ERR(svn_client_status6(NULL, ctx, status_path, &opt_rev, depth,
get_all, check_out_of_date,
- ignore_local_mods, no_ignore,
+ check_working_copy, no_ignore,
FALSE /* ignore_exernals */,
FALSE /* depth_as_sticky */,
changelists, status_func, status_baton,
@@ -342,7 +342,7 @@ svn_client_status6(svn_revnum_t *result_
svn_depth_t depth,
svn_boolean_t get_all,
svn_boolean_t check_out_of_date,
- svn_boolean_t ignore_local_mods,
+ svn_boolean_t check_working_copy,
svn_boolean_t no_ignore,
svn_boolean_t ignore_externals,
svn_boolean_t depth_as_sticky,
@@ -359,6 +359,9 @@ svn_client_status6(svn_revnum_t *result_
svn_error_t *err;
apr_hash_t *changelist_hash = NULL;
+ if (!check_out_of_date)
+ check_working_copy = TRUE;
+
if (svn_path_is_url(path))
return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
_("'%s' is not a local path"), path);
@@ -477,7 +480,7 @@ svn_client_status6(svn_revnum_t *result_
SVN_ERR(svn_wc__get_status_editor(&editor, &edit_baton, &set_locks_baton,
&edit_revision, ctx->wc_ctx,
dir_abspath, target_basename,
- depth, get_all, ignore_local_mods,
+ depth, get_all, check_working_copy,
no_ignore, depth_as_sticky,
server_supports_depth,
ignores, tweak_status, &sb,
@@ -617,7 +620,7 @@ svn_client_status6(svn_revnum_t *result_
SVN_ERR(do_external_status(ctx, external_map,
depth, get_all,
- check_out_of_date, ignore_local_mods,
+ check_out_of_date, check_working_copy,
no_ignore, changelists,
sb.anchor_abspath, sb.anchor_relpath,
status_func, status_baton, pool));
Modified: subversion/branches/remote-only-status/subversion/libsvn_wc/status.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/libsvn_wc/status.c?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/libsvn_wc/status.c
(original)
+++ subversion/branches/remote-only-status/subversion/libsvn_wc/status.c Mon
Mar 31 14:26:40 2014
@@ -71,9 +71,8 @@ struct walk_status_baton
/* Should we ignore text modifications? */
svn_boolean_t ignore_text_mods;
- /* Ignore all local modifications; only check for differences
- between the BASE tree and the repository. */
- svn_boolean_t ignore_local_mods;
+ /* Scan the working copy for local modifications and missing nodes. */
+ svn_boolean_t check_working_copy;
/* Externals info harvested during the status run. */
apr_hash_t *externals;
@@ -339,7 +338,7 @@ static svn_error_t *
internal_status(svn_wc_status3_t **status,
svn_wc__db_t *db,
const char *local_abspath,
- svn_boolean_t ignore_local_mods,
+ svn_boolean_t check_working_copy,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
@@ -357,7 +356,8 @@ internal_status(svn_wc_status3_t **statu
*STATUS will be set to NULL. If GET_ALL is non-zero, then *STATUS will be
allocated and returned no matter what. If IGNORE_TEXT_MODS is TRUE then
don't check for text mods, assume there are none and set and *STATUS
- returned to reflect that assumption.
+ returned to reflect that assumption. If CHECK_WORKING_COPY is FALSE,
+ do not adjust the result for missing working copy files.
The status struct's repos_lock field will be set to REPOS_LOCK.
*/
@@ -372,7 +372,7 @@ assemble_status(svn_wc_status3_t **statu
const svn_io_dirent2_t *dirent,
svn_boolean_t get_all,
svn_boolean_t ignore_text_mods,
- svn_boolean_t ignore_local_mods,
+ svn_boolean_t check_working_copy,
const svn_lock_t *repos_lock,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
@@ -430,7 +430,7 @@ assemble_status(svn_wc_status3_t **statu
copied = TRUE; /* Working deletion */
}
}
- else if (!ignore_local_mods)
+ else if (check_working_copy)
{
/* Examine whether our target is missing or obstructed. To detect
* obstructions, we have to look at the on-disk status in DIRENT. */
@@ -826,7 +826,7 @@ send_status_structure(const struct walk_
parent_repos_root_url, parent_repos_relpath,
parent_repos_uuid,
info, dirent, get_all,
- wb->ignore_text_mods, wb->ignore_local_mods,
+ wb->ignore_text_mods, wb->check_working_copy,
repos_lock, scratch_pool, scratch_pool));
if (statstruct && status_func)
@@ -1183,51 +1183,6 @@ one_child_status(const struct walk_statu
return SVN_NO_ERROR;
}
-/*
- */
-static svn_error_t *
-read_base_node_info(const struct svn_wc__db_info_t **info,
- svn_wc__db_t *db,
- const char *local_abspath,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- svn_depth_t depth;
- const svn_checksum_t *checksum;
- struct svn_wc__db_info_t *bi = apr_pcalloc(scratch_pool, sizeof(*bi));
-
- SVN_ERR(svn_wc__db_base_get_info(&bi->status,
- &bi->kind,
- &bi->revnum,
- &bi->repos_relpath,
- &bi->repos_root_url,
- &bi->repos_uuid,
- &bi->changed_rev,
- &bi->changed_date,
- &bi->changed_author,
- &depth, &checksum,
- NULL /* target */,
- &bi->lock,
- &bi->had_props,
- NULL /* props */,
- NULL /* update_root */,
- db, local_abspath,
- result_pool, scratch_pool));
- if (bi->kind != svn_node_dir)
- bi->depth = svn_depth_unknown;
- else
- bi->depth = depth;
- if (bi->kind == svn_node_file && checksum != NULL)
- bi->has_checksum = TRUE;
- else
- bi->has_checksum = FALSE;
- bi->have_base = TRUE;
-
- *info = bi;
- return SVN_NO_ERROR;
-}
-
-
/* Send svn_wc_status3_t * structures for the directory LOCAL_ABSPATH and
for all its child nodes (according to DEPTH) through STATUS_FUNC /
STATUS_BATON.
@@ -1285,7 +1240,7 @@ get_dir_status(const struct walk_status_
iterpool = svn_pool_create(scratch_pool);
- if (!wb->ignore_local_mods)
+ if (wb->check_working_copy)
{
err = svn_io_get_dirents3(&dirents, local_abspath, FALSE, scratch_pool,
iterpool);
@@ -1303,14 +1258,8 @@ get_dir_status(const struct walk_status_
dirents = apr_hash_make(scratch_pool);
if (!dir_info)
- {
- if (!wb->ignore_local_mods)
- SVN_ERR(svn_wc__db_read_single_info(&dir_info, wb->db, local_abspath,
- scratch_pool, iterpool));
- else
- SVN_ERR(read_base_node_info(&dir_info, wb->db, local_abspath,
- scratch_pool, iterpool));
- }
+ SVN_ERR(svn_wc__db_read_single_info(&dir_info, wb->db, local_abspath,
+ scratch_pool, iterpool));
SVN_ERR(get_repos_root_url_relpath(&dir_repos_relpath, &dir_repos_root_url,
&dir_repos_uuid, dir_info,
@@ -1322,24 +1271,13 @@ get_dir_status(const struct walk_status_
/* Create a hash containing all children. The source hashes
don't all map the same types, but only the keys of the result
hash are subsequently used. */
- if (!wb->ignore_local_mods)
- {
- sorted_children = NULL;
- SVN_ERR(svn_wc__db_read_children_info(&nodes, &conflicts,
- wb->db, local_abspath,
- scratch_pool, iterpool));
-
- all_children = apr_hash_overlay(scratch_pool, nodes, dirents);
- if (apr_hash_count(conflicts) > 0)
- all_children = apr_hash_overlay(scratch_pool, conflicts, all_children);
- }
- else
- {
- all_children = NULL;
- SVN_ERR(svn_wc__db_base_get_children(
- (const apr_array_header_t **)&sorted_children,
- wb->db, local_abspath, scratch_pool, iterpool));
- }
+ SVN_ERR(svn_wc__db_read_children_info(&nodes, &conflicts,
+ wb->db, local_abspath,
+ scratch_pool, iterpool));
+
+ all_children = apr_hash_overlay(scratch_pool, nodes, dirents);
+ if (apr_hash_count(conflicts) > 0)
+ all_children = apr_hash_overlay(scratch_pool, conflicts, all_children);
/* Handle "this-dir" first. */
if (! skip_this_dir)
@@ -1391,53 +1329,33 @@ get_dir_status(const struct walk_status_
return SVN_NO_ERROR;
/* Walk all the children of this directory. */
- if (all_children)
- sorted_children = svn_sort__hash(all_children,
- svn_sort_compare_items_lexically,
- scratch_pool);
- else
- {
- SVN_ERR_ASSERT(sorted_children != NULL);
- qsort(sorted_children->elts,
- sorted_children->nelts,
- sorted_children->elt_size,
- svn_sort_compare_paths);
- }
+ sorted_children = svn_sort__hash(all_children,
+ svn_sort_compare_items_lexically,
+ scratch_pool);
for (i = 0; i < sorted_children->nelts; i++)
{
- svn_boolean_t unversioned_tree_conflicted;
const char *child_abspath;
svn_io_dirent2_t *child_dirent;
const struct svn_wc__db_info_t *child_info;
+ const void *key;
+ apr_ssize_t klen;
+ svn_sort__item_t item;
svn_pool_clear(iterpool);
- if (all_children)
- {
- const void *key;
- apr_ssize_t klen;
- svn_sort__item_t item;
-
- item = APR_ARRAY_IDX(sorted_children, i, svn_sort__item_t);
- key = item.key;
- klen = item.klen;
-
- child_abspath = svn_dirent_join(local_abspath, key, iterpool);
- child_dirent = apr_hash_get(dirents, key, klen);
- child_info = apr_hash_get(nodes, key, klen);
- unversioned_tree_conflicted =
- (apr_hash_get(conflicts, key, klen) != NULL);
- }
- else
- {
- const char *name = APR_ARRAY_IDX(sorted_children, i, const char*);
- child_abspath = svn_dirent_join(local_abspath, name, iterpool);
- child_dirent = NULL;
- SVN_ERR(read_base_node_info(&child_info, wb->db, child_abspath,
- scratch_pool, iterpool));
- unversioned_tree_conflicted = FALSE;
- }
+ item = APR_ARRAY_IDX(sorted_children, i, svn_sort__item_t);
+ key = item.key;
+ klen = item.klen;
+
+ child_abspath = svn_dirent_join(local_abspath, key, iterpool);
+ child_dirent = apr_hash_get(dirents, key, klen);
+ child_info = apr_hash_get(nodes, key, klen);
+
+ /* If this is a remote-only status walk, ignore locally added nodes. */
+ if (!wb->check_working_copy && child_info
+ && child_info->status == svn_wc__db_status_added)
+ continue;
SVN_ERR(one_child_status(wb,
child_abspath,
@@ -1447,7 +1365,7 @@ get_dir_status(const struct walk_status_
dir_repos_root_url,
dir_repos_relpath,
dir_repos_uuid,
- unversioned_tree_conflicted,
+ (apr_hash_get(conflicts, key, klen) != NULL),
&collected_ignore_patterns,
ignore_patterns,
depth,
@@ -1602,7 +1520,7 @@ tweak_statushash(void *baton,
void *this_dir_baton,
svn_boolean_t is_dir_baton,
svn_wc__db_t *db,
- svn_boolean_t ignore_local_mods,
+ svn_boolean_t check_working_copy,
const char *local_abspath,
enum svn_wc_status_kind repos_node_status,
enum svn_wc_status_kind repos_text_status,
@@ -1643,7 +1561,7 @@ tweak_statushash(void *baton,
/* Use the public API to get a statstruct, and put it into the hash. */
SVN_ERR(internal_status(&statstruct, db, local_abspath,
- ignore_local_mods, pool, scratch_pool));
+ check_working_copy, pool, scratch_pool));
statstruct->repos_lock = repos_lock;
svn_hash_sets(statushash, apr_pstrdup(pool, local_abspath), statstruct);
}
@@ -2102,7 +2020,7 @@ delete_entry(const char *path,
statushash immediately. No need to wait until close_file or
close_dir, because there's no risk of having to honor the 'added'
flag. We already know this item exists in the working copy. */
- SVN_ERR(tweak_statushash(db, db, TRUE, eb->db, eb->wb.ignore_local_mods,
+ SVN_ERR(tweak_statushash(db, db, TRUE, eb->db, eb->wb.check_working_copy,
local_abspath,
svn_wc_status_deleted, 0, 0, revision, NULL, pool));
@@ -2111,7 +2029,7 @@ delete_entry(const char *path,
node). */
if (db->parent_baton && (! *eb->target_basename))
SVN_ERR(tweak_statushash(db->parent_baton, db, TRUE,
- eb->db, eb->wb.ignore_local_mods,
+ eb->db, eb->wb.check_working_copy,
db->local_abspath,
svn_wc_status_modified, svn_wc_status_modified,
0, SVN_INVALID_REVNUM, NULL, pool));
@@ -2236,7 +2154,7 @@ close_directory(void *dir_baton,
/* ### When we add directory locking, we need to find a
### directory lock here. */
SVN_ERR(tweak_statushash(pb, db, TRUE,
- eb->db, eb->wb.ignore_local_mods,
+ eb->db, eb->wb.check_working_copy,
db->local_abspath,
repos_node_status, repos_text_status,
repos_prop_status, SVN_INVALID_REVNUM, NULL,
@@ -2489,7 +2407,7 @@ close_file(void *file_baton,
}
return tweak_statushash(fb, NULL, FALSE, fb->edit_baton->db,
- fb->edit_baton->wb.ignore_local_mods,
+ fb->edit_baton->wb.check_working_copy,
fb->local_abspath, repos_node_status,
repos_text_status, repos_prop_status,
SVN_INVALID_REVNUM, repos_lock, pool);
@@ -2538,7 +2456,7 @@ svn_wc__get_status_editor(const svn_delt
const char *target_basename,
svn_depth_t depth,
svn_boolean_t get_all,
- svn_boolean_t ignore_local_mods,
+ svn_boolean_t check_working_copy,
svn_boolean_t no_ignore,
svn_boolean_t depth_as_sticky,
svn_boolean_t server_performs_filtering,
@@ -2578,8 +2496,8 @@ svn_wc__get_status_editor(const svn_delt
eb->wb.db = wc_ctx->db;
eb->wb.target_abspath = eb->target_abspath;
- eb->wb.ignore_text_mods = ignore_local_mods;
- eb->wb.ignore_local_mods = ignore_local_mods;
+ eb->wb.ignore_text_mods = !check_working_copy;
+ eb->wb.check_working_copy = check_working_copy;
eb->wb.repos_locks = NULL;
eb->wb.repos_root = NULL;
@@ -2604,7 +2522,7 @@ svn_wc__get_status_editor(const svn_delt
/* The edit baton's status structure maps to PATH, and the editor
have to be aware of whether that is the anchor or the target. */
SVN_ERR(internal_status(&(eb->anchor_status), wc_ctx->db, anchor_abspath,
- ignore_local_mods, result_pool, scratch_pool));
+ check_working_copy, result_pool, scratch_pool));
/* Construct an editor. */
tree_editor->set_target_revision = set_target_revision;
@@ -2710,7 +2628,7 @@ svn_wc__internal_walk_status(svn_wc__db_
wb.db = db;
wb.target_abspath = local_abspath;
wb.ignore_text_mods = ignore_text_mods;
- wb.ignore_local_mods = FALSE;
+ wb.check_working_copy = TRUE;
wb.repos_root = NULL;
wb.repos_locks = NULL;
@@ -2876,11 +2794,11 @@ static svn_error_t *
internal_status(svn_wc_status3_t **status,
svn_wc__db_t *db,
const char *local_abspath,
- svn_boolean_t ignore_local_mods,
+ svn_boolean_t check_working_copy,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
- const svn_io_dirent2_t *dirent;
+ const svn_io_dirent2_t *dirent = NULL;
const char *parent_repos_relpath;
const char *parent_repos_root_url;
const char *parent_repos_uuid;
@@ -2890,32 +2808,24 @@ internal_status(svn_wc_status3_t **statu
SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
- if (!ignore_local_mods)
- {
- err = svn_wc__db_read_single_info(&info, db, local_abspath,
- scratch_pool, scratch_pool);
- if (err)
- {
- if (err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND)
- return svn_error_trace(err);
-
- svn_error_clear(err);
- info = NULL;
+ err = svn_wc__db_read_single_info(&info, db, local_abspath,
+ scratch_pool, scratch_pool);
- SVN_ERR(svn_io_stat_dirent2(&dirent, local_abspath, FALSE, TRUE,
- scratch_pool, scratch_pool));
- }
- else
- SVN_ERR(stat_wc_dirent_case_sensitive(&dirent, db, local_abspath,
- scratch_pool, scratch_pool));
- }
- else
+ if (err)
{
- SVN_ERR(read_base_node_info(&info, db, local_abspath,
- scratch_pool, scratch_pool));
- dirent = NULL;
- }
+ if (err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND)
+ return svn_error_trace(err);
+
+ svn_error_clear(err);
+ info = NULL;
+ if (check_working_copy)
+ SVN_ERR(svn_io_stat_dirent2(&dirent, local_abspath, FALSE, TRUE,
+ scratch_pool, scratch_pool));
+ }
+ else if (check_working_copy)
+ SVN_ERR(stat_wc_dirent_case_sensitive(&dirent, db, local_abspath,
+ scratch_pool, scratch_pool));
if (!info
|| info->kind == svn_node_unknown
@@ -2940,25 +2850,15 @@ internal_status(svn_wc_status3_t **statu
{
const char *parent_abspath = svn_dirent_dirname(local_abspath,
scratch_pool);
- if (!ignore_local_mods)
- SVN_ERR(svn_wc__db_read_info(NULL, NULL, NULL,
- &parent_repos_relpath,
- &parent_repos_root_url,
- &parent_repos_uuid, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- db, parent_abspath,
- result_pool, scratch_pool));
- else
- SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, NULL,
- &parent_repos_relpath,
- &parent_repos_root_url,
- &parent_repos_uuid,
- NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL,
- db, parent_abspath,
- result_pool, scratch_pool));
+ SVN_ERR(svn_wc__db_read_info(NULL, NULL, NULL,
+ &parent_repos_relpath,
+ &parent_repos_root_url,
+ &parent_repos_uuid, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ db, parent_abspath,
+ result_pool, scratch_pool));
}
else
{
@@ -2974,7 +2874,7 @@ internal_status(svn_wc_status3_t **statu
info,
dirent,
TRUE /* get_all */,
- FALSE, ignore_local_mods,
+ FALSE, check_working_copy,
NULL /* repos_lock */,
result_pool, scratch_pool));
}
Modified: subversion/branches/remote-only-status/subversion/svn/status-cmd.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/svn/status-cmd.c?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/svn/status-cmd.c
(original)
+++ subversion/branches/remote-only-status/subversion/svn/status-cmd.c Mon Mar
31 14:26:40 2014
@@ -349,7 +349,7 @@ svn_cl__status(apr_getopt_t *os,
opt_state->depth,
opt_state->verbose,
opt_state->update,
- FALSE /* ignore_local_mods */,
+ TRUE /* check_working_copy */,
opt_state->no_ignore,
opt_state->ignore_externals,
FALSE /* depth_as_sticky */,
Modified:
subversion/branches/remote-only-status/subversion/tests/libsvn_client/client-test.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/tests/libsvn_client/client-test.c?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
---
subversion/branches/remote-only-status/subversion/tests/libsvn_client/client-test.c
(original)
+++
subversion/branches/remote-only-status/subversion/tests/libsvn_client/client-test.c
Mon Mar 31 14:26:40 2014
@@ -852,7 +852,6 @@ status_to_char(enum svn_wc_status_kind s
}
}
-/* FIXME: temporary */
static int
compare_status_paths(const void *a, const void *b)
{
@@ -875,20 +874,40 @@ remote_only_status_receiver(void *baton,
static svn_error_t *
test_remote_only_status(const svn_test_opts_t *opts, apr_pool_t *pool)
{
+ static const struct remote_only_status_result
+ {
+ const char *relpath;
+ svn_revnum_t revision;
+ enum svn_wc_status_kind node_status;
+ svn_revnum_t ood_changed_rev;
+ enum svn_wc_status_kind repos_node_status;
+ } expected[] = {
+ { ".", 1, svn_wc_status_normal, 2, svn_wc_status_modified },
+ { "B", 1, svn_wc_status_normal, 2, svn_wc_status_none },
+ { "C", 1, svn_wc_status_normal, 2, svn_wc_status_deleted },
+ { "D", 1, svn_wc_status_normal, 2, svn_wc_status_none },
+ { "epsilon", -1, svn_wc_status_none, 2, svn_wc_status_added },
+ { "mu", 1, svn_wc_status_normal, 2, svn_wc_status_modified },
+
+ { NULL }
+ };
+
const char *repos_url;
const char *wc_path;
- const char *zeta_path;
+ const char *local_path;
+ apr_file_t *local_file;
svn_client_ctx_t *ctx;
svn_client_mtcc_t *mtcc;
- apr_array_header_t *results;
svn_opt_revision_t rev;
svn_revnum_t result_rev;
- svn_stream_t *contents = svn_stream_from_string(
- svn_string_create("modified\n", pool), pool);
+ svn_string_t *contents = svn_string_create("modified\n", pool);
+ svn_stream_t *contentstream = svn_stream_from_string(contents, pool);
+ const struct remote_only_status_result *ex;
svn_stream_mark_t *start;
+ apr_array_header_t *results;
int i;
- SVN_ERR(svn_stream_mark(contents, &start, pool));
+ SVN_ERR(svn_stream_mark(contentstream, &start, pool));
/* Create a filesytem and repository containing the Greek tree. */
SVN_ERR(create_greek_repos(&repos_url, "test-remote-only-status", opts,
pool));
@@ -897,14 +916,21 @@ test_remote_only_status(const svn_test_o
/* Make some modifications in the repository, creating revision 2. */
SVN_ERR(svn_client_mtcc_create(&mtcc, repos_url, -1, ctx, pool, pool));
- SVN_ERR(svn_stream_seek(contents, start));
- SVN_ERR(svn_client_mtcc_add_update_file("iota",
- contents, NULL, NULL, NULL,
+ SVN_ERR(svn_stream_seek(contentstream, start));
+ SVN_ERR(svn_client_mtcc_add_add_file("A/epsilon", contentstream, NULL,
+ mtcc, pool));
+ SVN_ERR(svn_stream_seek(contentstream, start));
+ SVN_ERR(svn_client_mtcc_add_update_file("A/mu",
+ contentstream, NULL, NULL, NULL,
mtcc, pool));
- SVN_ERR(svn_stream_seek(contents, start));
+ SVN_ERR(svn_stream_seek(contentstream, start));
+ SVN_ERR(svn_client_mtcc_add_add_file("A/D/epsilon", contentstream, NULL,
+ mtcc, pool));
+ SVN_ERR(svn_stream_seek(contentstream, start));
SVN_ERR(svn_client_mtcc_add_update_file("A/B/lambda",
- contents, NULL, NULL, NULL,
+ contentstream, NULL, NULL, NULL,
mtcc, pool));
+ SVN_ERR(svn_client_mtcc_add_delete("A/C", mtcc, pool));
SVN_ERR(svn_client_mtcc_commit(NULL, NULL, NULL, mtcc, pool));
/* Check out a sparse root @r1 of the repository */
@@ -914,31 +940,48 @@ test_remote_only_status(const svn_test_o
rev.kind = svn_opt_revision_number;
rev.value.number = 1;
- SVN_ERR(svn_client_checkout3(NULL, repos_url, wc_path,
- &rev, &rev, svn_depth_immediates,
+ SVN_ERR(svn_client_checkout3(NULL,
+ apr_pstrcat(pool, repos_url, "/A", SVN_VA_NULL),
+ wc_path, &rev, &rev, svn_depth_immediates,
FALSE, FALSE, ctx, pool));
/* Add a local file; this is a double-check to make sure that
remote-only status ignores local changes. */
- zeta_path = svn_dirent_join(wc_path, "zeta", pool);
- SVN_ERR(svn_io_file_create_empty(zeta_path, pool));
- SVN_ERR(svn_client_add5(zeta_path, svn_depth_unknown,
+ local_path = svn_dirent_join(wc_path, "zeta", pool);
+ SVN_ERR(svn_io_file_create_empty(local_path, pool));
+ SVN_ERR(svn_client_add5(local_path, svn_depth_unknown,
FALSE, FALSE, FALSE, FALSE,
ctx, pool));
- /* Now run the remote-only status. */
+ /* Modify a local file, but don't tell the working copy about it. */
+ local_path = svn_dirent_join(wc_path, "mu", pool);
+ SVN_ERR(svn_io_file_open(&local_file, local_path,
+ APR_FOPEN_WRITE | APR_FOPEN_TRUNCATE,
+ 0, pool));
+ SVN_ERR(svn_io_file_write_full(local_file,
+ contents->data, contents->len,
+ NULL, pool));
+ SVN_ERR(svn_io_file_close(local_file, pool));
+
+ /* Run the remote-only status. */
results = apr_array_make(pool, 3, sizeof(const svn_client_status_t *));
rev.kind = svn_opt_revision_head;
SVN_ERR(svn_client_status6(
&result_rev, ctx, wc_path, &rev, svn_depth_unknown,
- TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, NULL,
+ TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL,
remote_only_status_receiver, results, pool));
SVN_TEST_ASSERT(result_rev == 2);
- SVN_TEST_ASSERT(results->nelts == 3);
- qsort(results->elts, results->nelts, results->elt_size,
- compare_status_paths);
+ /* Compare the number of results with the expected results */
+ for (i = 0, ex = expected; ex->relpath; ++ex, ++i)
+ ;
+ SVN_TEST_ASSERT(results->nelts == i);
+
+ if (opts->verbose)
+ qsort(results->elts, results->nelts, results->elt_size,
+ compare_status_paths);
+
for (i = 0; i < results->nelts; ++i)
{
const svn_client_status_t *st =
@@ -948,28 +991,32 @@ test_remote_only_status(const svn_test_o
svn_dirent_skip_ancestor(wc_path, st->local_abspath);
if (!relpath)
relpath = st->local_abspath;
+ if (!*relpath)
+ relpath = ".";
- /* FIXME: temporary */
- printf("%c%c%c %2ld %c%c%c %2ld %s\n",
- status_to_char(st->node_status),
- status_to_char(st->text_status),
- status_to_char(st->prop_status),
- (long)st->revision,
-
- status_to_char(st->repos_node_status),
- status_to_char(st->repos_text_status),
- status_to_char(st->repos_prop_status),
- (long)st->ood_changed_rev,
-
- (*relpath ? relpath : "."));
-
- SVN_TEST_ASSERT(st->revision == 1);
- SVN_TEST_ASSERT(st->ood_changed_rev == 2);
- SVN_TEST_ASSERT(st->node_status == svn_wc_status_normal);
- if (0 == strcmp(relpath, "iota"))
- SVN_TEST_ASSERT(st->repos_node_status == svn_wc_status_modified);
- else
- SVN_TEST_ASSERT(st->repos_node_status == svn_wc_status_none);
+ for (ex = expected; ex->relpath; ++ex)
+ {
+ if (0 == strcmp(relpath, ex->relpath))
+ break;
+ }
+ SVN_TEST_ASSERT(ex->relpath != NULL);
+
+ if (opts->verbose)
+ printf("%c%c%c %2ld %c%c%c %2ld %s\n",
+ status_to_char(st->node_status),
+ status_to_char(st->text_status),
+ status_to_char(st->prop_status),
+ (long)st->revision,
+ status_to_char(st->repos_node_status),
+ status_to_char(st->repos_text_status),
+ status_to_char(st->repos_prop_status),
+ (long)st->ood_changed_rev,
+ relpath);
+
+ SVN_TEST_ASSERT(st->revision == ex->revision);
+ SVN_TEST_ASSERT(st->ood_changed_rev == ex->ood_changed_rev);
+ SVN_TEST_ASSERT(st->node_status == ex->node_status);
+ SVN_TEST_ASSERT(st->repos_node_status == ex->repos_node_status);
}
return SVN_NO_ERROR;
Modified: subversion/branches/remote-only-status/subversion/tests/svn_test.h
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/tests/svn_test.h?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/tests/svn_test.h
(original)
+++ subversion/branches/remote-only-status/subversion/tests/svn_test.h Mon Mar
31 14:26:40 2014
@@ -109,6 +109,7 @@ typedef struct svn_test_opts_t
/* Minor version to use for servers and FS backends, or zero to use
the current latest version. */
int server_minor_version;
+ svn_boolean_t verbose;
/* Add future "arguments" here. */
} svn_test_opts_t;
Modified:
subversion/branches/remote-only-status/subversion/tests/svn_test_main.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/tests/svn_test_main.c?rev=1583335&r1=1583334&r2=1583335&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/tests/svn_test_main.c
(original)
+++ subversion/branches/remote-only-status/subversion/tests/svn_test_main.c Mon
Mar 31 14:26:40 2014
@@ -819,6 +819,7 @@ svn_test_main(int argc, const char *argv
#endif
}
}
+ opts.verbose = verbose_mode;
/* Disable sleeping for timestamps, to speed up the tests. */
apr_env_set(