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 2011/10/20 16:01:47 UTC
svn commit: r1186816 - in /subversion/branches/1.7.x: ./ STATUS
subversion/svn/add-cmd.c subversion/svn/cat-cmd.c
subversion/svn/changelist-cmd.c subversion/svn/cl.h
subversion/svn/proplist-cmd.c subversion/svn/util.c
subversion/tests/cmdline/cat_tests.py
Author: hwright
Date: Thu Oct 20 14:01:47 2011
New Revision: 1186816
URL: http://svn.apache.org/viewvc?rev=1186816&view=rev
Log:
Merge r1185746, r1186059 from trunk:
* r1185746, r1186059
Fix up some erroneous "Could not frob some targets because..." warnings.
Votes:
+1: stsp, rhuijben, hwright
Modified:
subversion/branches/1.7.x/ (props changed)
subversion/branches/1.7.x/STATUS
subversion/branches/1.7.x/subversion/svn/add-cmd.c
subversion/branches/1.7.x/subversion/svn/cat-cmd.c
subversion/branches/1.7.x/subversion/svn/changelist-cmd.c
subversion/branches/1.7.x/subversion/svn/cl.h
subversion/branches/1.7.x/subversion/svn/proplist-cmd.c
subversion/branches/1.7.x/subversion/svn/util.c
subversion/branches/1.7.x/subversion/tests/cmdline/cat_tests.py
Propchange: subversion/branches/1.7.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 20 14:01:47 2011
@@ -68,4 +68,4 @@
/subversion/branches/tree-conflicts:868291-873154
/subversion/branches/tree-conflicts-notify:873926-874008
/subversion/branches/uris-as-urls:1060426-1064427
-/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147299,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148652,1148662,1148699,1148853,1148877,1148882,1148936,1149103,1149105,1149135,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151854,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153540,1153566,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154278,1154379,1154382,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,1156085,115
6098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158187,1158193-1158194,1158196,1158201,1158207,1158209-1158210,1158217,1158285,1158288,1158303,1158309,1158407,1158419,1158421,1158436,1158455,1158616-1158617,1158634,1158854,1158875,1158886,1158893,1158896,1158919,1158924,1158963,1159093,1159098,1159101,1159132,1159136,1159148,1159230,1159275,1159400,1159686,1159760,1159772,1160605,1160671,1160682,1160704-1160705,1160756,1161063,1161080,1161185,1161210,1161683,1161721,1162024,1162033,1162201,1162516,1162880,1162974,1162995,1163243,1163383,1163557,1163792,1163953,1164027,1164386,1164426,1164517,1164535,1164554,1164580,1164614,1164645,1164760,1164765,1166500,1166555,1166678,1167062,1167173,1167209,1167269,1167503,1167659,1167681,1169524,1169531,1169650,1171708,1173111,1173425,1173639,1174051,1174060,1174652,1174761,1174797-1174798,1174806,1175888,1176915,1176949,1177001,1177492,1177732,1178280,1178282,1178942,1179680,1179767,1180154,1181090,
1181110,1181155,1181215,1181609,1181666,1182115,1182527,1182771,1182904,1182909,1183054,1183263,1183347,1185222,1185242,1185280,1185282,1185730,1185738,1185763,1185768,1185886,1185911,1185918,1186092,1186101,1186107,1186109,1186121,1186231,1186240
+/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147299,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148652,1148662,1148699,1148853,1148877,1148882,1148936,1149103,1149105,1149135,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151854,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153540,1153566,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154278,1154379,1154382,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,1156085,115
6098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158187,1158193-1158194,1158196,1158201,1158207,1158209-1158210,1158217,1158285,1158288,1158303,1158309,1158407,1158419,1158421,1158436,1158455,1158616-1158617,1158634,1158854,1158875,1158886,1158893,1158896,1158919,1158924,1158963,1159093,1159098,1159101,1159132,1159136,1159148,1159230,1159275,1159400,1159686,1159760,1159772,1160605,1160671,1160682,1160704-1160705,1160756,1161063,1161080,1161185,1161210,1161683,1161721,1162024,1162033,1162201,1162516,1162880,1162974,1162995,1163243,1163383,1163557,1163792,1163953,1164027,1164386,1164426,1164517,1164535,1164554,1164580,1164614,1164645,1164760,1164765,1166500,1166555,1166678,1167062,1167173,1167209,1167269,1167503,1167659,1167681,1169524,1169531,1169650,1171708,1173111,1173425,1173639,1174051,1174060,1174652,1174761,1174797-1174798,1174806,1175888,1176915,1176949,1177001,1177492,1177732,1178280,1178282,1178942,1179680,1179767,1180154,1181090,
1181110,1181155,1181215,1181609,1181666,1182115,1182527,1182771,1182904,1182909,1183054,1183263,1183347,1185222,1185242,1185280,1185282,1185730,1185738,1185746,1185763,1185768,1185886,1185911,1185918,1186059,1186092,1186101,1186107,1186109,1186121,1186231,1186240
Modified: subversion/branches/1.7.x/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1186816&r1=1186815&r2=1186816&view=diff
==============================================================================
--- subversion/branches/1.7.x/STATUS (original)
+++ subversion/branches/1.7.x/STATUS Thu Oct 20 14:01:47 2011
@@ -49,11 +49,6 @@ Veto-blocked changes:
Approved changes:
=================
- * r1185746, r1186059
- Fix up some erroneous "Could not frob some targets because..." warnings.
- Votes:
- +1: stsp, rhuijben, hwright
-
* r1186422, r1186434, r1186732, r1186755
Fix issue 4033, upgrade with deleted=TRUE replaced nodes.
Justification:
Modified: subversion/branches/1.7.x/subversion/svn/add-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/svn/add-cmd.c?rev=1186816&r1=1186815&r2=1186816&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/svn/add-cmd.c (original)
+++ subversion/branches/1.7.x/subversion/svn/add-cmd.c Thu Oct 20 14:01:47 2011
@@ -51,7 +51,7 @@ svn_cl__add(apr_getopt_t *os,
apr_array_header_t *targets;
int i;
apr_pool_t *iterpool;
- svn_boolean_t seen_nonexistent_target = FALSE;
+ apr_array_header_t *errors = apr_array_make(pool, 0, sizeof(apr_status_t));
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
opt_state->targets,
@@ -71,7 +71,6 @@ svn_cl__add(apr_getopt_t *os,
for (i = 0; i < targets->nelts; i++)
{
const char *target = APR_ARRAY_IDX(targets, i, const char *);
- svn_boolean_t success;
svn_pool_clear(iterpool);
SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
@@ -80,21 +79,34 @@ svn_cl__add(apr_getopt_t *os,
opt_state->depth,
opt_state->force, opt_state->no_ignore,
opt_state->parents, ctx, iterpool),
- &success, opt_state->quiet,
+ errors, opt_state->quiet,
SVN_ERR_ENTRY_EXISTS,
SVN_ERR_WC_PATH_NOT_FOUND,
SVN_NO_ERROR));
-
- if (! success)
- seen_nonexistent_target = TRUE;
}
svn_pool_destroy(iterpool);
- if (seen_nonexistent_target)
- return svn_error_create(
- SVN_ERR_ILLEGAL_TARGET, NULL,
- _("Could not add all targets because some targets don't exist"));
- else
- return SVN_NO_ERROR;
+ if (errors->nelts > 0)
+ {
+ svn_error_t *err;
+
+ err = svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL, NULL);
+ for (i = 0; i < errors->nelts; i++)
+ {
+ apr_status_t status = APR_ARRAY_IDX(errors, i, apr_status_t);
+ if (status == SVN_ERR_WC_PATH_NOT_FOUND)
+ err = svn_error_quick_wrap(err,
+ _("Could not add all targets because "
+ "some targets don't exist"));
+ else if (status == SVN_ERR_ENTRY_EXISTS)
+ err = svn_error_quick_wrap(err,
+ _("Could not add all targets because "
+ "some targets are already versioned"));
+ }
+
+ return svn_error_trace(err);
+ }
+
+ return SVN_NO_ERROR;
}
Modified: subversion/branches/1.7.x/subversion/svn/cat-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/svn/cat-cmd.c?rev=1186816&r1=1186815&r2=1186816&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/svn/cat-cmd.c (original)
+++ subversion/branches/1.7.x/subversion/svn/cat-cmd.c Thu Oct 20 14:01:47 2011
@@ -50,7 +50,8 @@ svn_cl__cat(apr_getopt_t *os,
int i;
svn_stream_t *out;
apr_pool_t *subpool = svn_pool_create(pool);
- svn_boolean_t seen_nonexistent_target = FALSE;
+ apr_array_header_t *errors = apr_array_make(pool, 0, sizeof(apr_status_t));
+ svn_error_t *err;
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
opt_state->targets,
@@ -67,7 +68,6 @@ svn_cl__cat(apr_getopt_t *os,
const char *target = APR_ARRAY_IDX(targets, i, const char *);
const char *truepath;
svn_opt_revision_t peg_revision;
- svn_boolean_t success;
svn_pool_clear(subpool);
SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
@@ -79,21 +79,40 @@ svn_cl__cat(apr_getopt_t *os,
SVN_ERR(svn_cl__try(svn_client_cat2(out, truepath, &peg_revision,
&(opt_state->start_revision),
ctx, subpool),
- &success, opt_state->quiet,
+ errors, opt_state->quiet,
SVN_ERR_UNVERSIONED_RESOURCE,
SVN_ERR_ENTRY_NOT_FOUND,
SVN_ERR_CLIENT_IS_DIRECTORY,
SVN_ERR_FS_NOT_FOUND,
SVN_NO_ERROR));
- if (! success)
- seen_nonexistent_target = TRUE;
}
svn_pool_destroy(subpool);
- if (seen_nonexistent_target)
- return svn_error_create(
- SVN_ERR_ILLEGAL_TARGET, NULL,
- _("Could not cat all targets because some targets don't exist"));
- else
- return SVN_NO_ERROR;
+ if (errors->nelts > 0)
+ {
+ err = svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL, NULL);
+
+ for (i = 0; i < errors->nelts; i++)
+ {
+ apr_status_t status = APR_ARRAY_IDX(errors, i, apr_status_t);
+
+ if (status == SVN_ERR_ENTRY_NOT_FOUND ||
+ status == SVN_ERR_FS_NOT_FOUND)
+ err = svn_error_quick_wrap(err,
+ _("Could not cat all targets because "
+ "some targets don't exist"));
+ else if (status == SVN_ERR_UNVERSIONED_RESOURCE)
+ err = svn_error_quick_wrap(err,
+ _("Could not cat all targets because "
+ "some targets are not versioned"));
+ else if (status == SVN_ERR_CLIENT_IS_DIRECTORY)
+ err = svn_error_quick_wrap(err,
+ _("Could not cat all targets because "
+ "some targets are directories"));
+ }
+
+ return svn_error_trace(err);
+ }
+
+ return SVN_NO_ERROR;
}
Modified: subversion/branches/1.7.x/subversion/svn/changelist-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/svn/changelist-cmd.c?rev=1186816&r1=1186815&r2=1186816&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/svn/changelist-cmd.c (original)
+++ subversion/branches/1.7.x/subversion/svn/changelist-cmd.c Thu Oct 20 14:01:47 2011
@@ -45,7 +45,7 @@ svn_cl__changelist(apr_getopt_t *os,
svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
apr_array_header_t *targets;
svn_depth_t depth = opt_state->depth;
- svn_boolean_t success = TRUE;
+ apr_array_header_t *errors = apr_array_make(pool, 0, sizeof(apr_status_t));
/* If we're not removing changelists, then our first argument should
be the name of a changelist. */
@@ -103,7 +103,7 @@ svn_cl__changelist(apr_getopt_t *os,
svn_client_add_to_changelist(targets, changelist_name,
depth, opt_state->changelists,
ctx, pool),
- &success, opt_state->quiet,
+ errors, opt_state->quiet,
SVN_ERR_UNVERSIONED_RESOURCE,
SVN_ERR_WC_PATH_NOT_FOUND,
SVN_NO_ERROR));
@@ -114,16 +114,36 @@ svn_cl__changelist(apr_getopt_t *os,
svn_client_remove_from_changelists(targets, depth,
opt_state->changelists,
ctx, pool),
- &success, opt_state->quiet,
+ errors, opt_state->quiet,
SVN_ERR_UNVERSIONED_RESOURCE,
SVN_ERR_WC_PATH_NOT_FOUND,
SVN_NO_ERROR));
}
- if (!success)
- return svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
- _("Could not display info for all targets because "
- "some targets don't exist"));
- else
- return SVN_NO_ERROR;
+ if (errors->nelts > 0)
+ {
+ int i;
+ svn_error_t *err;
+
+ err = svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL, NULL);
+ for (i = 0; i < errors->nelts; i++)
+ {
+ apr_status_t status = APR_ARRAY_IDX(errors, i, apr_status_t);
+
+ if (status == SVN_ERR_WC_PATH_NOT_FOUND)
+ err = svn_error_quick_wrap(err,
+ _("Could not display changelists of "
+ "all targets because some targets "
+ "don't exist"));
+ else if (status == SVN_ERR_UNVERSIONED_RESOURCE)
+ err = svn_error_quick_wrap(err,
+ _("Could not display changelists of "
+ "all targets because some targets "
+ "are not versioned"));
+ }
+
+ return svn_error_trace(err);
+ }
+
+ return SVN_NO_ERROR;
}
Modified: subversion/branches/1.7.x/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/svn/cl.h?rev=1186816&r1=1186815&r2=1186816&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/svn/cl.h (original)
+++ subversion/branches/1.7.x/subversion/svn/cl.h Thu Oct 20 14:01:47 2011
@@ -294,15 +294,14 @@ extern const apr_getopt_option_t svn_cl_
* invoked on an unversioned, nonexistent, or otherwise innocuously
* errorful resource. Meant to be wrapped with SVN_ERR().
*
- * If ERR is null, return SVN_NO_ERROR, setting *SUCCESS to TRUE
- * if SUCCESS is not NULL.
+ * If ERR is null, return SVN_NO_ERROR.
*
* Else if ERR->apr_err is one of the error codes supplied in varargs,
* then handle ERR as a warning (unless QUIET is true), clear ERR, and
- * return SVN_NO_ERROR, setting *SUCCESS to FALSE if SUCCESS is not
- * NULL.
+ * return SVN_NO_ERROR, and push the value of ERR->apr_err into the
+ * ERRORS_SEEN array, if ERRORS_SEEN is not NULL.
*
- * Else return ERR, setting *SUCCESS to FALSE if SUCCESS is not NULL.
+ * Else return ERR.
*
* Typically, error codes like SVN_ERR_UNVERSIONED_RESOURCE,
* SVN_ERR_ENTRY_NOT_FOUND, etc, are supplied in varargs. Don't
@@ -310,7 +309,7 @@ extern const apr_getopt_option_t svn_cl_
*/
svn_error_t *
svn_cl__try(svn_error_t *err,
- svn_boolean_t *success,
+ apr_array_header_t *errors_seen,
svn_boolean_t quiet,
...);
Modified: subversion/branches/1.7.x/subversion/svn/proplist-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/svn/proplist-cmd.c?rev=1186816&r1=1186815&r2=1186816&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/svn/proplist-cmd.c (original)
+++ subversion/branches/1.7.x/subversion/svn/proplist-cmd.c Thu Oct 20 14:01:47 2011
@@ -112,6 +112,8 @@ svn_cl__proplist(apr_getopt_t *os,
svn_cl__opt_state_t *opt_state = ((svn_cl__cmd_baton_t *) baton)->opt_state;
svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
apr_array_header_t *targets;
+ apr_array_header_t *errors = apr_array_make(scratch_pool, 0,
+ sizeof(apr_status_t));
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
opt_state->targets,
@@ -168,7 +170,6 @@ svn_cl__proplist(apr_getopt_t *os,
int i;
apr_pool_t *iterpool;
svn_proplist_receiver_t pl_receiver;
- svn_boolean_t had_errors = FALSE;
if (opt_state->xml)
{
@@ -190,7 +191,6 @@ svn_cl__proplist(apr_getopt_t *os,
proplist_baton_t pl_baton;
const char *truepath;
svn_opt_revision_t peg_revision;
- svn_boolean_t success;
svn_pool_clear(iterpool);
SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
@@ -209,13 +209,10 @@ svn_cl__proplist(apr_getopt_t *os,
opt_state->changelists,
pl_receiver, &pl_baton,
ctx, iterpool),
- &success, opt_state->quiet,
+ errors, opt_state->quiet,
SVN_ERR_UNVERSIONED_RESOURCE,
SVN_ERR_ENTRY_NOT_FOUND,
SVN_NO_ERROR));
-
- if (!success)
- had_errors = TRUE;
}
svn_pool_destroy(iterpool);
@@ -223,10 +220,29 @@ svn_cl__proplist(apr_getopt_t *os,
SVN_ERR(svn_cl__xml_print_footer("properties", scratch_pool));
/* Error out *after* we closed the XML element */
- if (had_errors)
- return svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
- _("Could not display info for all targets "
- "because some targets don't exist"));
+ if (errors->nelts > 0)
+ {
+ svn_error_t *err;
+
+ err = svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL, NULL);
+ for (i = 0; i < errors->nelts; i++)
+ {
+ apr_status_t status = APR_ARRAY_IDX(errors, i, apr_status_t);
+
+ if (status == SVN_ERR_ENTRY_NOT_FOUND)
+ err = svn_error_quick_wrap(err,
+ _("Could not display properties "
+ "of all targets because some "
+ "targets don't exist"));
+ else if (status == SVN_ERR_UNVERSIONED_RESOURCE)
+ err = svn_error_quick_wrap(err,
+ _("Could not display properties "
+ "of all targets because some "
+ "targets are not versioned"));
+ }
+
+ return svn_error_trace(err);
+ }
}
return SVN_NO_ERROR;
Modified: subversion/branches/1.7.x/subversion/svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/svn/util.c?rev=1186816&r1=1186815&r2=1186816&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/svn/util.c (original)
+++ subversion/branches/1.7.x/subversion/svn/util.c Thu Oct 20 14:01:47 2011
@@ -937,7 +937,7 @@ svn_cl__error_checked_fputs(const char *
svn_error_t *
svn_cl__try(svn_error_t *err,
- svn_boolean_t *success,
+ apr_array_header_t *errors_seen,
svn_boolean_t quiet,
...)
{
@@ -946,12 +946,27 @@ svn_cl__try(svn_error_t *err,
apr_status_t apr_err;
va_list ap;
- if (success)
- *success = FALSE;
-
va_start(ap, quiet);
while ((apr_err = va_arg(ap, apr_status_t)) != SVN_NO_ERROR)
{
+ if (errors_seen)
+ {
+ int i;
+ svn_boolean_t add = TRUE;
+
+ /* Don't report duplicate error codes. */
+ for (i = 0; i < errors_seen->nelts; i++)
+ {
+ if (APR_ARRAY_IDX(errors_seen, i,
+ apr_status_t) == err->apr_err)
+ {
+ add = FALSE;
+ break;
+ }
+ }
+ if (add)
+ APR_ARRAY_PUSH(errors_seen, apr_status_t) = err->apr_err;
+ }
if (err->apr_err == apr_err)
{
if (! quiet)
@@ -962,10 +977,6 @@ svn_cl__try(svn_error_t *err,
}
va_end(ap);
}
- else if (success)
- {
- *success = TRUE;
- }
return svn_error_trace(err);
}
Modified: subversion/branches/1.7.x/subversion/tests/cmdline/cat_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/tests/cmdline/cat_tests.py?rev=1186816&r1=1186815&r2=1186816&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/tests/cmdline/cat_tests.py (original)
+++ subversion/branches/1.7.x/subversion/tests/cmdline/cat_tests.py Thu Oct 20 14:01:47 2011
@@ -159,8 +159,7 @@ def cat_skip_uncattable(sbox):
'cat', rho_path, new_file_path)
expected_err3 = expected_err1 + expected_err2 + \
- ".*svn: E200009: Could not cat all targets because some targets " + \
- "don't exist\n"
+ ".*svn: E200009: Could not cat all targets because some targets"
expected_err_re = re.compile(expected_err3, re.DOTALL)
exit_code, output, error = svntest.main.run_svn(1, 'cat', rho_path, G_path, new_file_path)