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 2010/08/21 10:36:49 UTC
svn commit: r987710 - in /subversion/branches/1.6.x: ./ CHANGES STATUS
subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.c
subversion/tests/cmdline/merge_tests.py
Author: hwright
Date: Sat Aug 21 08:36:48 2010
New Revision: 987710
URL: http://svn.apache.org/viewvc?rev=987710&view=rev
Log:
Reintegrate the 1.6.x-r980811 branch:
* r980811, r981449
Improve handling of missing fsfs.conf during svnadmin hotcopy.
Justification:
People are complaining. There's Debian bug reports and whatnot.
See http://svn.haxx.se/dev/archive-2010-07/0471.shtml and follow-ups.
Notes:
r980811 is the actual fix
r981449 is a follow-up which fixes an error leak
Backport branch:
^/subversion/branches/1.6.x-r980811
Votes:
+1: stsp, rhuijben, jerenkrantz
Modified:
subversion/branches/1.6.x/ (props changed)
subversion/branches/1.6.x/CHANGES (props changed)
subversion/branches/1.6.x/STATUS
subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.h
subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs_fs.c
subversion/branches/1.6.x/subversion/tests/cmdline/merge_tests.py (props changed)
Propchange: subversion/branches/1.6.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Aug 21 08:36:48 2010
@@ -48,6 +48,7 @@
/subversion/branches/1.6.x-r933299:933310-934492
/subversion/branches/1.6.x-r935631:952683-955333
/subversion/branches/1.6.x-r935996:936212-952816
+/subversion/branches/1.6.x-r980811:980813-987709
/subversion/branches/1.6.x-wc-ng-check-override:910213-923776
/subversion/branches/1.6.x-wc-ng-error:929379-929636
/subversion/branches/bdb-reverse-deltas:872050-872529
@@ -81,4 +82,4 @@
/subversion/branches/tc_url_rev:874351-874483
/subversion/branches/tree-conflicts:868291-873154
/subversion/branches/tree-conflicts-notify:873926-874008
-/subversion/trunk:875965,875968,876004,876012,876017,876019,876022,876024,876032,876041-876042,876048,876051,876055-876056,876059,876083,876091,876097,876101,876104,876109,876123-876125,876129,876132,876138,876160,876167,876175,876180,876185,876205,876223-876225,876230,876233,876245,876252,876256,876283,876287,876312,876326-876327,876330,876366,876372,876374,876376,876383,876386,876442,876456-876457,876462-876464,876467,876469,876480,876486,876495-876497,876516-876518,876524,876526,876583,876601,876614-876615,876628,876633,876641,876659,876687,876689,876705,876715,876726,876760,876763,876794,876804,876815-876816,876821,876825,876837,876840-876841,876843,876849,876857-876858,876862,876873,876890,876897,876905,876908,876925,876931,876934,876948-876949,876953,876987,876993,877011,877014,877016,877028-877029,877038,877119,877127,877146,877157,877191,877195,877203,877211,877230,877234,877237,877243,877249,877259,877261,877304,877319,877407,877437,877441-877442,877453,877459,87747
2,877544,877553,877565,877568,877573,877593,877595,877597,877601,877612,877665,877667,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,877815,877819,877821,877842,877848,877853,877867,877869,877873,877901,877909,877916,877931,877942,877953,877964,877968,877970,877981-877982,878005,878013,878015,878020,878046,878053,878062,878074,878080,878089,878091,878093,878095,878127,878129,878131,878142,878173-878176,878216,878240,878242,878255,878269,878272,878279,878296-878297,878303,878321,878335,878338,878341,878343,878353,878364,878367-878368,878385,878399,878423,878426,878447,878462,878484,878491,878498,878532,878595,878646,878659,878673,878682-878683,878690-878691,878693,878723,878760-878761,878873,878875,878877,878879,878905,878910-878911,878915-878916,878924-878925,878946,878949,878955,878960,878970,878981,879001,879033,879056,879074,879076,879081-879082,879093,879105,879126,879148,879170,879198-879199,879201,879271,879293,879357,879375-879376,879403,879631,
879635-879636,879688,879709-879711,879747,879902,879916,879954,879961,879966,879971,880082,880095,880105,880162,880226,880274-880275,880370,880450,880461,880474,880525-880526,880552,881905,884842,886164,886197,888715,888979,889081,889840,891672,892050,892085,895514,895653,896522,896915,898048,898963,899826,899828,900797,901304,901752,902093,904301,904394,904594,905303,905326,906256,906305,906587,908980-908981,917640,918211,922516,923389,923391,926151,926167,927323,927328,931209,931211,931392,931568,932942,933299,934599,934603,935631,935992,935996,937610,939375-939376,944635,948916,950931,950933,951753,952992,953317,957507,959004,961970
+/subversion/trunk:875965,875968,876004,876012,876017,876019,876022,876024,876032,876041-876042,876048,876051,876055-876056,876059,876083,876091,876097,876101,876104,876109,876123-876125,876129,876132,876138,876160,876167,876175,876180,876185,876205,876223-876225,876230,876233,876245,876252,876256,876283,876287,876312,876326-876327,876330,876366,876372,876374,876376,876383,876386,876442,876456-876457,876462-876464,876467,876469,876480,876486,876495-876497,876516-876518,876524,876526,876583,876601,876614-876615,876628,876633,876641,876659,876687,876689,876705,876715,876726,876760,876763,876794,876804,876815-876816,876821,876825,876837,876840-876841,876843,876849,876857-876858,876862,876873,876890,876897,876905,876908,876925,876931,876934,876948-876949,876953,876987,876993,877011,877014,877016,877028-877029,877038,877119,877127,877146,877157,877191,877195,877203,877211,877230,877234,877237,877243,877249,877259,877261,877304,877319,877407,877437,877441-877442,877453,877459,87747
2,877544,877553,877565,877568,877573,877593,877595,877597,877601,877612,877665,877667,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,877815,877819,877821,877842,877848,877853,877867,877869,877873,877901,877909,877916,877931,877942,877953,877964,877968,877970,877981-877982,878005,878013,878015,878020,878046,878053,878062,878074,878080,878089,878091,878093,878095,878127,878129,878131,878142,878173-878176,878216,878240,878242,878255,878269,878272,878279,878296-878297,878303,878321,878335,878338,878341,878343,878353,878364,878367-878368,878385,878399,878423,878426,878447,878462,878484,878491,878498,878532,878595,878646,878659,878673,878682-878683,878690-878691,878693,878723,878760-878761,878873,878875,878877,878879,878905,878910-878911,878915-878916,878924-878925,878946,878949,878955,878960,878970,878981,879001,879033,879056,879074,879076,879081-879082,879093,879105,879126,879148,879170,879198-879199,879201,879271,879293,879357,879375-879376,879403,879631,
879635-879636,879688,879709-879711,879747,879902,879916,879954,879961,879966,879971,880082,880095,880105,880162,880226,880274-880275,880370,880450,880461,880474,880525-880526,880552,881905,884842,886164,886197,888715,888979,889081,889840,891672,892050,892085,895514,895653,896522,896915,898048,898963,899826,899828,900797,901304,901752,902093,904301,904394,904594,905303,905326,906256,906305,906587,908980-908981,917640,918211,922516,923389,923391,926151,926167,927323,927328,931209,931211,931392,931568,932942,933299,934599,934603,935631,935992,935996,937610,939375-939376,944635,948916,950931,950933,951753,952992,953317,957507,959004,961970,980811,981449
Propchange: subversion/branches/1.6.x/CHANGES
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Aug 21 08:36:48 2010
@@ -48,6 +48,7 @@
/subversion/branches/1.6.x-r933299/CHANGES:933310-934492
/subversion/branches/1.6.x-r935631/CHANGES:952683-955333
/subversion/branches/1.6.x-r935996/CHANGES:936212-952816
+/subversion/branches/1.6.x-r980811/CHANGES:980813-987709
/subversion/branches/1.6.x-wc-ng-check-override/CHANGES:910213-923776
/subversion/branches/1.6.x-wc-ng-error/CHANGES:929379-929636
/subversion/branches/bdb-reverse-deltas/CHANGES:872050-872529
Modified: subversion/branches/1.6.x/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/STATUS?rev=987710&r1=987709&r2=987710&view=diff
==============================================================================
--- subversion/branches/1.6.x/STATUS (original)
+++ subversion/branches/1.6.x/STATUS Sat Aug 21 08:36:48 2010
@@ -330,16 +330,3 @@ Veto-blocked changes:
Approved changes:
=================
-
- * r980811, r981449
- Improve handling of missing fsfs.conf during svnadmin hotcopy.
- Justification:
- People are complaining. There's Debian bug reports and whatnot.
- See http://svn.haxx.se/dev/archive-2010-07/0471.shtml and follow-ups.
- Notes:
- r980811 is the actual fix
- r981449 is a follow-up which fixes an error leak
- Backport branch:
- ^/subversion/branches/1.6.x-r980811
- Votes:
- +1: stsp, rhuijben, jerenkrantz
Modified: subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.h?rev=987710&r1=987709&r2=987710&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.h (original)
+++ subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs.h Sat Aug 21 08:36:48 2010
@@ -113,6 +113,9 @@ extern "C" {
/* The minimum format number that stores node kinds in changed-paths lists. */
#define SVN_FS_FS__MIN_KIND_IN_CHANGED_FORMAT 4
+/* The minimum format number that supports a configuration file (fsfs.conf) */
+#define SVN_FS_FS__MIN_CONFIG_FILE 4
+
/* Private FSFS-specific data shared between all svn_txn_t objects that
relate to a particular transaction in a filesystem (as identified
by transaction id and filesystem UUID). Objects of this type are
Modified: subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs_fs.c?rev=987710&r1=987709&r2=987710&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/1.6.x/subversion/libsvn_fs_fs/fs_fs.c Sat Aug 21 08:36:48 2010
@@ -33,6 +33,7 @@
#include "svn_pools.h"
#include "svn_fs.h"
+#include "svn_dirent_uri.h"
#include "svn_path.h"
#include "svn_hash.h"
#include "svn_props.h"
@@ -1221,11 +1222,29 @@ upgrade_body(void *baton, apr_pool_t *po
svn_fs_t *fs = baton;
int format, max_files_per_dir;
const char *format_path = path_format(fs, pool);
+ svn_node_kind_t kind;
/* Read the FS format number and max-files-per-dir setting. */
SVN_ERR(read_format(&format, &max_files_per_dir, format_path, pool));
- /* If we're already up-to-date, there's nothing to be done here. */
+ /* If the config file does not exist, create one. */
+ SVN_ERR(svn_io_check_path(svn_dirent_join(fs->path, PATH_CONFIG, pool),
+ &kind, pool));
+ switch (kind)
+ {
+ case svn_node_none:
+ SVN_ERR(write_config(fs, pool));
+ break;
+ case svn_node_dir:
+ return svn_error_createf(SVN_ERR_FS_GENERAL, NULL,
+ _("'%s' is a directory. Please move it out of "
+ "the way and try again"),
+ svn_dirent_join(fs->path, PATH_CONFIG, pool));
+ default:
+ break;
+ }
+
+ /* If we're already up-to-date, there's nothing else to be done here. */
if (format == SVN_FS_FS__FORMAT_NUMBER)
return SVN_NO_ERROR;
@@ -1423,15 +1442,69 @@ svn_fs_fs__hotcopy(const char *src_path,
pool));
SVN_ERR(check_format(format));
+ /* Try to copy the config.
+ *
+ * ### We try copying the config file before doing anything else,
+ * ### because higher layers will abort the hotcopy if we throw
+ * ### an error from this function, and that renders the hotcopy
+ * ### unusable anyway. */
+ if (format >= SVN_FS_FS__MIN_CONFIG_FILE)
+ {
+ svn_error_t *err;
+
+ err = svn_io_dir_file_copy(src_path, dst_path, PATH_CONFIG, pool);
+ if (err)
+ {
+ if (APR_STATUS_IS_ENOENT(err->apr_err))
+ {
+ /* 1.6.0 to 1.6.11 did not copy the configuration file during
+ * hotcopy. So if we're hotcopying a repository which has been
+ * created as a hotcopy itself, it's possible that fsfs.conf
+ * does not exist. Ask the user to re-create it.
+ *
+ * ### It would be nice to make this a non-fatal error,
+ * ### but this function does not get an svn_fs_t object
+ * ### so we have no way of just printing a warning via
+ * ### the fs->warning() callback. */
+
+ const char *msg;
+ const char *src_abspath;
+ const char *dst_abspath;
+ const char *config_relpath;
+ svn_error_t *err2;
+
+ config_relpath = svn_dirent_join(src_path, PATH_CONFIG, pool);
+ err2 = svn_dirent_get_absolute(&src_abspath, src_path, pool);
+ if (err2)
+ return svn_error_compose_create(err, err2);
+ err2 = svn_dirent_get_absolute(&dst_abspath, dst_path, pool);
+ if (err2)
+ return svn_error_compose_create(err, err2);
+
+ /* ### hack: strip off the 'db/' directory from paths so
+ * ### they make sense to the user */
+ src_abspath = svn_dirent_dirname(src_abspath, pool);
+ dst_abspath = svn_dirent_dirname(dst_abspath, pool);
+
+ msg = apr_psprintf(pool,
+ _("Failed to create hotcopy at '%s'. "
+ "The file '%s' is missing from the source "
+ "repository. Please create this file, for "
+ "instance by running 'svnadmin upgrade %s'"),
+ dst_abspath, config_relpath, src_abspath);
+ return svn_error_quick_wrap(err, msg);
+ }
+ else
+ return err;
+ }
+ }
+
/* Copy the current file. */
SVN_ERR(svn_io_dir_file_copy(src_path, dst_path, PATH_CURRENT, pool));
/* Copy the uuid. */
SVN_ERR(svn_io_dir_file_copy(src_path, dst_path, PATH_UUID, pool));
- /* Copy the config. */
- SVN_ERR(svn_io_dir_file_copy(src_path, dst_path, PATH_CONFIG, pool));
-
/* Copy the min unpacked rev, and read its value. */
if (format >= SVN_FS_FS__MIN_PACKED_FORMAT)
{
Propchange: subversion/branches/1.6.x/subversion/tests/cmdline/merge_tests.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Aug 21 08:36:48 2010
@@ -45,6 +45,7 @@
/subversion/branches/1.6.x-r926151/subversion/tests/cmdline/merge_tests.py:927922-929631
/subversion/branches/1.6.x-r933299/subversion/tests/cmdline/merge_tests.py:933310-934492
/subversion/branches/1.6.x-r935996/subversion/tests/cmdline/merge_tests.py:936212-952816
+/subversion/branches/1.6.x-r980811/subversion/tests/cmdline/merge_tests.py:980813-987709
/subversion/branches/1.6.x-wc-ng-check-override/subversion/tests/cmdline/merge_tests.py:910213-923776
/subversion/branches/1.6.x-wc-ng-error/subversion/tests/cmdline/merge_tests.py:929379-929636
/subversion/branches/bdb-reverse-deltas/subversion/tests/cmdline/merge_tests.py:872050-872529