Author: cmpilato
Date: Wed Apr 7 14:08:12 2010
New Revision: 931559
URL: http://svn.apache.org/viewvc?rev=931559&view=rev
Log:
Add a --pre-1.7-compatible option to 'svnadmin create', with support
for such in the repository and filesystem layers.
* subversion/include/svn_fs.h
(SVN_FS_CONFIG_PRE_1_7_COMPATIBLE): New #define.
* subversion/libsvn_fs_fs/fs_fs.c
(svn_fs_fs__create): Recognize the SVN_FS_CONFIG_PRE_1_7_COMPATIBLE
option, fix the format to version 4 if it's set.
* subversion/libsvn_fs_base/fs.c
(base_create): Recognize the SVN_FS_CONFIG_PRE_1_7_COMPATIBLE
option, fix the format to version 4 if it's set. While here, make
this code block look exactly like it does in the FSFS code so future
devs don't have to second-guess what should be an obvious change
to both backends.
* subversion/svnadmin/main.c
(svnadmin__pre_1_7_compatible): New enum value.
(struct svnadmin_opt_state): Add 'pre_1_7_compatible' member.
(subcommand_create, main, options_table, cmd_table): Support and
handle a new --pre-1.7-compatible option in all the obvious ways.
Modified:
subversion/trunk/subversion/include/svn_fs.h
subversion/trunk/subversion/libsvn_fs_base/fs.c
subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
subversion/trunk/subversion/svnadmin/main.c
Modified: subversion/trunk/subversion/include/svn_fs.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_fs.h?rev=931559&r1=931558&r2=931559&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_fs.h (original)
+++ subversion/trunk/subversion/include/svn_fs.h Wed Apr 7 14:08:12 2010
@@ -101,6 +101,13 @@ typedef struct svn_fs_t svn_fs_t;
* @since New in 1.6.
*/
#define SVN_FS_CONFIG_PRE_1_6_COMPATIBLE "pre-1.6-compatible"
+
+/** Create repository format compatible with Subversion versions
+ * earlier than 1.7.
+ *
+ * @since New in 1.7.
+ */
+#define SVN_FS_CONFIG_PRE_1_7_COMPATIBLE "pre-1.7-compatible"
/** @} */
Modified: subversion/trunk/subversion/libsvn_fs_base/fs.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_base/fs.c?rev=931559&r1=931558&r2=931559&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_base/fs.c (original)
+++ subversion/trunk/subversion/libsvn_fs_base/fs.c Wed Apr 7 14:08:12 2010
@@ -657,20 +657,22 @@ base_create(svn_fs_t *fs, const char *pa
int format = SVN_FS_BASE__FORMAT_NUMBER;
svn_error_t *svn_err;
- /* See if we had an explicitly specified pre-1.5-compatible. */
- if (fs->config && apr_hash_get(fs->config, SVN_FS_CONFIG_PRE_1_6_COMPATIBLE,
- APR_HASH_KEY_STRING))
- format = 3;
-
- /* See if we had an explicitly specified pre-1.5-compatible. */
- if (fs->config && apr_hash_get(fs->config, SVN_FS_CONFIG_PRE_1_5_COMPATIBLE,
- APR_HASH_KEY_STRING))
- format = 2;
-
- /* See if we had an explicitly specified pre-1.4-compatible. */
- if (fs->config && apr_hash_get(fs->config, SVN_FS_CONFIG_PRE_1_4_COMPATIBLE,
- APR_HASH_KEY_STRING))
- format = 1;
+ /* See if compatibility with older versions was explicitly requested. */
+ if (fs->config)
+ {
+ if (apr_hash_get(fs->config, SVN_FS_CONFIG_PRE_1_4_COMPATIBLE,
+ APR_HASH_KEY_STRING))
+ format = 1;
+ else if (apr_hash_get(fs->config, SVN_FS_CONFIG_PRE_1_5_COMPATIBLE,
+ APR_HASH_KEY_STRING))
+ format = 2;
+ else if (apr_hash_get(fs->config, SVN_FS_CONFIG_PRE_1_6_COMPATIBLE,
+ APR_HASH_KEY_STRING))
+ format = 3;
+ else if (apr_hash_get(fs->config, SVN_FS_CONFIG_PRE_1_7_COMPATIBLE,
+ APR_HASH_KEY_STRING))
+ format = 4;
+ }
/* Create the environment and databases. */
svn_err = open_databases(fs, TRUE, format, path, pool);
Modified: subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c?rev=931559&r1=931558&r2=931559&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c Wed Apr 7 14:08:12 2010
@@ -6329,7 +6329,7 @@ svn_fs_fs__create(svn_fs_t *fs,
fs_fs_data_t *ffd = fs->fsap_data;
fs->path = apr_pstrdup(pool, path);
- /* See if we had an explicitly requested pre-1.4- or pre-1.5-compatible. */
+ /* See if compatibility with older versions was explicitly requested. */
if (fs->config)
{
if (apr_hash_get(fs->config, SVN_FS_CONFIG_PRE_1_4_COMPATIBLE,
@@ -6341,6 +6341,9 @@ svn_fs_fs__create(svn_fs_t *fs,
else if (apr_hash_get(fs->config, SVN_FS_CONFIG_PRE_1_6_COMPATIBLE,
APR_HASH_KEY_STRING))
format = 3;
+ else if (apr_hash_get(fs->config, SVN_FS_CONFIG_PRE_1_7_COMPATIBLE,
+ APR_HASH_KEY_STRING))
+ format = 4;
}
ffd->format = format;
Modified: subversion/trunk/subversion/svnadmin/main.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnadmin/main.c?rev=931559&r1=931558&r2=931559&view=diff
==============================================================================
--- subversion/trunk/subversion/svnadmin/main.c (original)
+++ subversion/trunk/subversion/svnadmin/main.c Wed Apr 7 14:08:12 2010
@@ -230,7 +230,8 @@ enum
svnadmin__wait,
svnadmin__pre_1_4_compatible,
svnadmin__pre_1_5_compatible,
- svnadmin__pre_1_6_compatible
+ svnadmin__pre_1_6_compatible,
+ svnadmin__pre_1_7_compatible
};
/* Option codes and descriptions.
@@ -316,6 +317,10 @@ static const apr_getopt_option_t options
N_("use format compatible with Subversion versions\n"
" earlier than 1.6")},
+ {"pre-1.7-compatible", svnadmin__pre_1_7_compatible, 0,
+ N_("use format compatible with Subversion versions\n"
+ " earlier than 1.7")},
+
{NULL}
};
@@ -336,7 +341,8 @@ static const svn_opt_subcommand_desc2_t
"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_5_compatible, svnadmin__pre_1_6_compatible,
+ svnadmin__pre_1_7_compatible} },
{"deltify", subcommand_deltify, {0}, N_
("usage: svnadmin deltify [-r LOWER[:UPPER]] REPOS_PATH\n\n"
@@ -488,6 +494,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_7_compatible; /* --pre-1.7-compatible */
svn_opt_revision_t start_revision, end_revision; /* -r X[:Y] */
svn_boolean_t help; /* --help or -? */
svn_boolean_t version; /* --version */
@@ -578,6 +585,11 @@ subcommand_create(apr_getopt_t *os, void
APR_HASH_KEY_STRING,
"1");
+ if (opt_state->pre_1_7_compatible)
+ apr_hash_set(fs_config, SVN_FS_CONFIG_PRE_1_7_COMPATIBLE,
+ APR_HASH_KEY_STRING,
+ "1");
+
SVN_ERR(svn_config_get_config(&config, opt_state->config_dir, pool));
SVN_ERR(svn_repos_create(&repos, opt_state->repository_path,
NULL, NULL,
@@ -1572,6 +1584,9 @@ main(int argc, const char *argv[])
case svnadmin__pre_1_6_compatible:
opt_state.pre_1_6_compatible = TRUE;
break;
+ case svnadmin__pre_1_7_compatible:
+ opt_state.pre_1_7_compatible = TRUE;
+ break;
case svnadmin__fs_type:
err = svn_utf_cstring_to_utf8(&opt_state.fs_type, opt_arg, pool);
if (err)