You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2012/11/08 22:42:34 UTC
svn commit: r1407279 - in /subversion/trunk/subversion: svnadmin/main.c
tests/cmdline/svntest/main.py
Author: cmpilato
Date: Thu Nov 8 21:42:34 2012
New Revision: 1407279
URL: http://svn.apache.org/viewvc?rev=1407279&view=rev
Log:
Rather than continue the trend of accumulating new --pre-X.Y-compatible
options to 'svnadmin create', make use of the new version parsing and
comparison private functions to add a single new option that should
work henceforth.
* subversion/svnadmin/main.c
(svnadmin__cmdline_options_t): Add 'svnadmin__compatible_version' value;
remove 'svnadmin__pre_1_8_compatible'.
(options_table): Add record for new --compatible-version option, and
remove the one for --pre-1.8-compatible. Deprecate the
--pre-1.4-compatible, --pre-1.5-compatible, and --pre-1.6-compatible
options.
(cmd_table): Teach 'svnadmin create' to accept --compatible-version
(and to stop accepting --pre-1.8-compatible).
(svnadmin_opt_state): Trade 'pre_1_8_compatible' member for a new
'compatible_version' one.
(subcommand_create, sub_main): Add handling for --compatible-version;
drop handling for --pre-1.8-compatible.
* subversion/tests/cmdline/svntest/main.py
(create_repos): Now pass the --compatible-version to 'svnadmin
create'; this matches the flexibility of the --server-minor-version
test harness option.
Suggested by: rhuijben
Modified:
subversion/trunk/subversion/svnadmin/main.c
subversion/trunk/subversion/tests/cmdline/svntest/main.py
Modified: subversion/trunk/subversion/svnadmin/main.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnadmin/main.c?rev=1407279&r1=1407278&r2=1407279&view=diff
==============================================================================
--- subversion/trunk/subversion/svnadmin/main.c (original)
+++ subversion/trunk/subversion/svnadmin/main.c Thu Nov 8 21:42:34 2012
@@ -43,6 +43,7 @@
#include "svn_xml.h"
#include "private/svn_opt_private.h"
+#include "private/svn_subr_private.h"
#include "svn_private_config.h"
@@ -193,7 +194,7 @@ enum svnadmin__cmdline_options_t
svnadmin__pre_1_4_compatible,
svnadmin__pre_1_5_compatible,
svnadmin__pre_1_6_compatible,
- svnadmin__pre_1_8_compatible
+ svnadmin__compatible_version
};
/* Option codes and descriptions.
@@ -271,26 +272,23 @@ static const apr_getopt_option_t options
" use by another process")},
{"pre-1.4-compatible", svnadmin__pre_1_4_compatible, 0,
- N_("use format compatible with Subversion versions\n"
- " earlier than 1.4")},
+ N_("deprecated; see --compatible-version")},
{"pre-1.5-compatible", svnadmin__pre_1_5_compatible, 0,
- N_("use format compatible with Subversion versions\n"
- " earlier than 1.5")},
+ N_("deprecated; see --compatible-version")},
{"pre-1.6-compatible", svnadmin__pre_1_6_compatible, 0,
- N_("use format compatible with Subversion versions\n"
- " earlier than 1.6")},
-
- {"pre-1.8-compatible", svnadmin__pre_1_8_compatible, 0,
- N_("use format compatible with Subversion versions\n"
- " earlier than 1.8")},
+ N_("deprecated; see --compatible-version")},
{"memory-cache-size", 'M', 1,
N_("size of the extra in-memory cache in MB used to\n"
" minimize redundant operations. Default: 16.\n"
" [used for FSFS repositories only]")},
+ {"compatible-version", svnadmin__compatible_version, 1,
+ N_("use repository format compatible with Subversion\n"
+ " version ARG (\"1.5.5\", \"1.7\", etc.)")},
+
{NULL}
};
@@ -310,9 +308,9 @@ static const svn_opt_subcommand_desc2_t
("usage: svnadmin create REPOS_PATH\n\n"
"Create a new, empty repository at REPOS_PATH.\n"),
{svnadmin__bdb_txn_nosync, svnadmin__bdb_log_keep,
- svnadmin__config_dir, svnadmin__fs_type, svnadmin__pre_1_4_compatible,
- svnadmin__pre_1_5_compatible, svnadmin__pre_1_6_compatible,
- svnadmin__pre_1_8_compatible
+ svnadmin__config_dir, svnadmin__fs_type, svnadmin__compatible_version,
+ svnadmin__pre_1_4_compatible, svnadmin__pre_1_5_compatible,
+ svnadmin__pre_1_6_compatible
} },
{"deltify", subcommand_deltify, {0}, N_
@@ -487,7 +485,7 @@ struct svnadmin_opt_state
svn_boolean_t pre_1_4_compatible; /* --pre-1.4-compatible */
svn_boolean_t pre_1_5_compatible; /* --pre-1.5-compatible */
svn_boolean_t pre_1_6_compatible; /* --pre-1.6-compatible */
- svn_boolean_t pre_1_8_compatible; /* --pre-1.8-compatible */
+ svn_version_t *compatible_version; /* --compatible-version */
svn_opt_revision_t start_revision, end_revision; /* -r X[:Y] */
svn_boolean_t help; /* --help or -? */
svn_boolean_t version; /* --version */
@@ -638,25 +636,35 @@ subcommand_create(apr_getopt_t *os, void
APR_HASH_KEY_STRING,
opt_state->fs_type);
+ /* Prior to 1.8, we had explicit options to specify compatibility
+ with a handful of prior Subversion releases. */
if (opt_state->pre_1_4_compatible)
apr_hash_set(fs_config, SVN_FS_CONFIG_PRE_1_4_COMPATIBLE,
- APR_HASH_KEY_STRING,
- "1");
-
+ APR_HASH_KEY_STRING, "1");
if (opt_state->pre_1_5_compatible)
apr_hash_set(fs_config, SVN_FS_CONFIG_PRE_1_5_COMPATIBLE,
- APR_HASH_KEY_STRING,
- "1");
-
+ APR_HASH_KEY_STRING, "1");
if (opt_state->pre_1_6_compatible)
apr_hash_set(fs_config, SVN_FS_CONFIG_PRE_1_6_COMPATIBLE,
- APR_HASH_KEY_STRING,
- "1");
+ APR_HASH_KEY_STRING, "1");
- if (opt_state->pre_1_8_compatible)
- apr_hash_set(fs_config, SVN_FS_CONFIG_PRE_1_8_COMPATIBLE,
- APR_HASH_KEY_STRING,
- "1");
+ /* In 1.8, we figured out that we didn't have to keep extending this
+ madness indefinitely. */
+ if (opt_state->compatible_version)
+ {
+ if (! svn_version__at_least(opt_state->compatible_version, 1, 4, 0))
+ apr_hash_set(fs_config, SVN_FS_CONFIG_PRE_1_4_COMPATIBLE,
+ APR_HASH_KEY_STRING, "1");
+ if (! svn_version__at_least(opt_state->compatible_version, 1, 5, 0))
+ apr_hash_set(fs_config, SVN_FS_CONFIG_PRE_1_5_COMPATIBLE,
+ APR_HASH_KEY_STRING, "1");
+ if (! svn_version__at_least(opt_state->compatible_version, 1, 6, 0))
+ apr_hash_set(fs_config, SVN_FS_CONFIG_PRE_1_6_COMPATIBLE,
+ APR_HASH_KEY_STRING, "1");
+ if (! svn_version__at_least(opt_state->compatible_version, 1, 8, 0))
+ apr_hash_set(fs_config, SVN_FS_CONFIG_PRE_1_8_COMPATIBLE,
+ APR_HASH_KEY_STRING, "1");
+ }
SVN_ERR(svn_repos_create(&repos, opt_state->repository_path,
NULL, NULL, NULL, fs_config, pool));
@@ -1987,8 +1995,42 @@ sub_main(int argc, const char *argv[], a
case svnadmin__pre_1_6_compatible:
opt_state.pre_1_6_compatible = TRUE;
break;
- case svnadmin__pre_1_8_compatible:
- opt_state.pre_1_8_compatible = TRUE;
+ case svnadmin__compatible_version:
+ {
+ svn_version_t latest = { SVN_VER_MAJOR, SVN_VER_MINOR,
+ SVN_VER_PATCH, NULL };
+ svn_version_t *compatible_version;
+
+ /* Parse the version string which carries our target
+ compatibility. */
+ SVN_INT_ERR(svn_version__parse_version_string(&compatible_version,
+ opt_arg, pool));
+
+ /* We can't create repository with a version older than 1.0.0. */
+ if (! svn_version__at_least(compatible_version, 1, 0, 0))
+ {
+ err = svn_error_createf(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
+ _("Cannot create pre-1.0-compatible "
+ "repositories"));
+ return EXIT_ERROR(err);
+ }
+
+ /* We can't create repository with a version newer than what
+ the running version of Subversion supports. */
+ if (! svn_version__at_least(&latest,
+ compatible_version->major,
+ compatible_version->minor,
+ compatible_version->patch))
+ {
+ err = svn_error_createf(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
+ _("Cannot guaranteed compatibility "
+ "beyond the current running version "
+ "(" SVN_VER_NUM ")"));
+ return EXIT_ERROR(err);
+ }
+
+ opt_state.compatible_version = compatible_version;
+ }
break;
case svnadmin__fs_type:
SVN_INT_ERR(svn_utf_cstring_to_utf8(&opt_state.fs_type, opt_arg, pool));
Modified: subversion/trunk/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/main.py?rev=1407279&r1=1407278&r2=1407279&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/main.py Thu Nov 8 21:42:34 2012
@@ -829,12 +829,7 @@ def create_repos(path, minor_version = N
opts = ("--bdb-txn-nosync",)
if not minor_version or minor_version > options.server_minor_version:
minor_version = options.server_minor_version
- if minor_version < 4:
- opts += ("--pre-1.4-compatible",)
- elif minor_version < 5:
- opts += ("--pre-1.5-compatible",)
- elif minor_version < 6:
- opts += ("--pre-1.6-compatible",)
+ opts += ("--compatible-version=1.%d" % (minor_version),)
if options.fs_type is not None:
opts += ("--fs-type=" + options.fs_type,)
exit_code, stdout, stderr = run_command(svnadmin_binary, 1, 0, "create",
Re: svn commit: r1407279 - in /subversion/trunk/subversion:
svnadmin/main.c tests/cmdline/svntest/main.py
Posted by Mat Booth <ma...@wandisco.com>.
On 9 November 2012 11:13, Daniel Shahaf <d....@daniel.shahaf.name> wrote:
> Mat Booth wrote on Fri, Nov 09, 2012 at 10:07:25 +0000:
>> On 8 November 2012 23:07, Stefan Sperling <st...@elego.de> wrote:
>> >
>> > On Thu, Nov 08, 2012 at 09:42:34PM -0000, cmpilato@apache.org wrote:
>> > > Author: cmpilato
>> > > Date: Thu Nov 8 21:42:34 2012
>> > > New Revision: 1407279
>> > >
>> > > URL: http://svn.apache.org/viewvc?rev=1407279&view=rev
>> > > Log:
>> > > Rather than continue the trend of accumulating new --pre-X.Y-compatible
>> > > options to 'svnadmin create', make use of the new version parsing and
>> > > comparison private functions to add a single new option that should
>> > > work henceforth.
>> >
>> > Nice!!!
>> >
>> > > + /* In 1.8, we figured out that we didn't have to keep extending this
>> > > + madness indefinitely. */
>> >
>> > xactly! :)
>>
>>
>> Hmm, I just tried to look at this diff in the source viewer at
>> svn.apache.org because I am not subscribed to the commits list, but it
>> seems to crash. Does anyone else see a stack trace instead of a diff?
>>
>
> Fixed. Something broke when we upgraded viewvc on svn.eu
>
>
Nice one, thanks.
--
Mat Booth
Software Engineer
WANdisco, Inc.
http://www.wandisco.com
Re: svn commit: r1407279 - in /subversion/trunk/subversion:
svnadmin/main.c tests/cmdline/svntest/main.py
Posted by Daniel Shahaf <d....@daniel.shahaf.name>.
Mat Booth wrote on Fri, Nov 09, 2012 at 10:07:25 +0000:
> On 8 November 2012 23:07, Stefan Sperling <st...@elego.de> wrote:
> >
> > On Thu, Nov 08, 2012 at 09:42:34PM -0000, cmpilato@apache.org wrote:
> > > Author: cmpilato
> > > Date: Thu Nov 8 21:42:34 2012
> > > New Revision: 1407279
> > >
> > > URL: http://svn.apache.org/viewvc?rev=1407279&view=rev
> > > Log:
> > > Rather than continue the trend of accumulating new --pre-X.Y-compatible
> > > options to 'svnadmin create', make use of the new version parsing and
> > > comparison private functions to add a single new option that should
> > > work henceforth.
> >
> > Nice!!!
> >
> > > + /* In 1.8, we figured out that we didn't have to keep extending this
> > > + madness indefinitely. */
> >
> > xactly! :)
>
>
> Hmm, I just tried to look at this diff in the source viewer at
> svn.apache.org because I am not subscribed to the commits list, but it
> seems to crash. Does anyone else see a stack trace instead of a diff?
>
Fixed. Something broke when we upgraded viewvc on svn.eu
> http://svn.apache.org/viewvc/subversion/trunk/subversion/svnadmin/main.c?r1=1407279&r2=1407278&pathrev=1407279
>
>
>
> --
> Mat Booth
> Software Engineer
> WANdisco, Inc.
> http://www.wandisco.com
Re: svn commit: r1407279 - in /subversion/trunk/subversion:
svnadmin/main.c tests/cmdline/svntest/main.py
Posted by Mat Booth <ma...@wandisco.com>.
On 8 November 2012 23:07, Stefan Sperling <st...@elego.de> wrote:
>
> On Thu, Nov 08, 2012 at 09:42:34PM -0000, cmpilato@apache.org wrote:
> > Author: cmpilato
> > Date: Thu Nov 8 21:42:34 2012
> > New Revision: 1407279
> >
> > URL: http://svn.apache.org/viewvc?rev=1407279&view=rev
> > Log:
> > Rather than continue the trend of accumulating new --pre-X.Y-compatible
> > options to 'svnadmin create', make use of the new version parsing and
> > comparison private functions to add a single new option that should
> > work henceforth.
>
> Nice!!!
>
> > + /* In 1.8, we figured out that we didn't have to keep extending this
> > + madness indefinitely. */
>
> xactly! :)
Hmm, I just tried to look at this diff in the source viewer at
svn.apache.org because I am not subscribed to the commits list, but it
seems to crash. Does anyone else see a stack trace instead of a diff?
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnadmin/main.c?r1=1407279&r2=1407278&pathrev=1407279
--
Mat Booth
Software Engineer
WANdisco, Inc.
http://www.wandisco.com
Re: svn commit: r1407279 - in /subversion/trunk/subversion:
svnadmin/main.c tests/cmdline/svntest/main.py
Posted by Stefan Sperling <st...@elego.de>.
On Thu, Nov 08, 2012 at 09:42:34PM -0000, cmpilato@apache.org wrote:
> Author: cmpilato
> Date: Thu Nov 8 21:42:34 2012
> New Revision: 1407279
>
> URL: http://svn.apache.org/viewvc?rev=1407279&view=rev
> Log:
> Rather than continue the trend of accumulating new --pre-X.Y-compatible
> options to 'svnadmin create', make use of the new version parsing and
> comparison private functions to add a single new option that should
> work henceforth.
Nice!!!
> + /* In 1.8, we figured out that we didn't have to keep extending this
> + madness indefinitely. */
xactly! :)