You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/05/24 00:04:35 UTC
svn commit: r1485869 [2/3] - in /subversion/branches/fsfs-format7: ./
contrib/hook-scripts/
subversion/bindings/javahl/src/org/apache/subversion/javahl/
subversion/include/ subversion/libsvn_client/ subversion/libsvn_delta/
subversion/libsvn_diff/ subv...
Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_svn/protocol
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_svn/protocol?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_ra_svn/protocol (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_ra_svn/protocol Thu May 23 22:04:33 2013
@@ -591,7 +591,13 @@ desirability:
* The protocol version may be bumped. Clients and servers can then
choose to any range of protocol versions.
-4.1. Extending existing commands
+4.1. Limitations
+
+The current implementation limits the length of a word to 31 characters.
+Longer words, such as capability names, will be cause an error on the
+receiver side.
+
+4.2. Extending existing commands
Extending an existing command is normally done by indicating that its
tuple is allowed to end where it currently ends, for backwards
Modified: subversion/branches/fsfs-format7/subversion/libsvn_repos/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_repos/commit.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_repos/commit.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_repos/commit.c Thu May 23 22:04:33 2013
@@ -1348,7 +1348,7 @@ svn_repos__get_commit_ev2(svn_editor_t *
/* Can the user modify the repository at all? */
/* ### check against AUTHZ. */
- author = svn_hash_gets_fixed_key(revprops, SVN_PROP_REVISION_AUTHOR);
+ author = svn_hash_gets(revprops, SVN_PROP_REVISION_AUTHOR);
eb = apr_palloc(result_pool, sizeof(*eb));
eb->repos = repos;
Modified: subversion/branches/fsfs-format7/subversion/libsvn_repos/delta.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_repos/delta.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_repos/delta.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_repos/delta.c Thu May 23 22:04:33 2013
@@ -497,8 +497,7 @@ delta_proplists(struct context *c,
pool));
/* Transmit the committed-date. */
- committed_date = svn_hash_gets_fixed_key(r_props,
- SVN_PROP_REVISION_DATE);
+ committed_date = svn_hash_gets(r_props, SVN_PROP_REVISION_DATE);
if (committed_date || source_path)
{
SVN_ERR(change_fn(c, object, SVN_PROP_ENTRY_COMMITTED_DATE,
@@ -506,8 +505,7 @@ delta_proplists(struct context *c,
}
/* Transmit the last-author. */
- last_author = svn_hash_gets_fixed_key(r_props,
- SVN_PROP_REVISION_AUTHOR);
+ last_author = svn_hash_gets(r_props, SVN_PROP_REVISION_AUTHOR);
if (last_author || source_path)
{
SVN_ERR(change_fn(c, object, SVN_PROP_ENTRY_LAST_AUTHOR,
Modified: subversion/branches/fsfs-format7/subversion/libsvn_repos/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_repos/deprecated.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_repos/deprecated.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_repos/deprecated.c Thu May 23 22:04:33 2013
@@ -57,11 +57,11 @@ svn_repos_get_commit_editor4(const svn_d
{
apr_hash_t *revprop_table = apr_hash_make(pool);
if (user)
- svn_hash_sets_fixed_key(revprop_table, SVN_PROP_REVISION_AUTHOR,
- svn_string_create(user, pool));
+ svn_hash_sets(revprop_table, SVN_PROP_REVISION_AUTHOR,
+ svn_string_create(user, pool));
if (log_msg)
- svn_hash_sets_fixed_key(revprop_table, SVN_PROP_REVISION_LOG,
- svn_string_create(log_msg, pool));
+ svn_hash_sets(revprop_table, SVN_PROP_REVISION_LOG,
+ svn_string_create(log_msg, pool));
return svn_repos_get_commit_editor5(editor, edit_baton, repos, txn,
repos_url, base_path, revprop_table,
commit_callback, commit_baton,
Modified: subversion/branches/fsfs-format7/subversion/libsvn_repos/dump.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_repos/dump.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_repos/dump.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_repos/dump.c Thu May 23 22:04:33 2013
@@ -471,8 +471,8 @@ dump_node(struct edit_baton *eb,
dumped. */
if (!eb->verify && eb->notify_func && eb->oldest_dumped_rev > 1)
{
- svn_string_t *mergeinfo_str
- = svn_hash_gets_fixed_key(prophash, SVN_PROP_MERGEINFO);
+ svn_string_t *mergeinfo_str = svn_hash_gets(prophash,
+ SVN_PROP_MERGEINFO);
if (mergeinfo_str)
{
svn_mergeinfo_t mergeinfo, old_mergeinfo;
@@ -1041,13 +1041,13 @@ write_revision_record(svn_stream_t *stre
/* Run revision date properties through the time conversion to
canonicalize them. */
/* ### Remove this when it is no longer needed for sure. */
- datevalue = svn_hash_gets_fixed_key(props, SVN_PROP_REVISION_DATE);
+ datevalue = svn_hash_gets(props, SVN_PROP_REVISION_DATE);
if (datevalue)
{
SVN_ERR(svn_time_from_cstring(&timetemp, datevalue->data, pool));
datevalue = svn_string_create(svn_time_to_cstring(timetemp, pool),
pool);
- svn_hash_sets_fixed_key(props, SVN_PROP_REVISION_DATE, datevalue);
+ svn_hash_sets(props, SVN_PROP_REVISION_DATE, datevalue);
}
encoded_prophash = svn_stringbuf_create_ensure(0, pool);
Modified: subversion/branches/fsfs-format7/subversion/libsvn_repos/fs-wrap.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_repos/fs-wrap.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_repos/fs-wrap.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_repos/fs-wrap.c Thu May 23 22:04:33 2013
@@ -115,9 +115,8 @@ svn_repos_fs_begin_txn_for_commit2(svn_f
{
apr_array_header_t *revprops;
const char *txn_name;
+ svn_string_t *author = svn_hash_gets(revprop_table, SVN_PROP_REVISION_AUTHOR);
apr_hash_t *hooks_env;
- svn_string_t *author = svn_hash_gets_fixed_key(revprop_table,
- SVN_PROP_REVISION_AUTHOR);
/* Parse the hooks-env file (if any). */
SVN_ERR(svn_repos__parse_hooks_env(&hooks_env, repos->hooks_env_path,
@@ -154,11 +153,11 @@ svn_repos_fs_begin_txn_for_commit(svn_fs
{
apr_hash_t *revprop_table = apr_hash_make(pool);
if (author)
- svn_hash_sets_fixed_key(revprop_table, SVN_PROP_REVISION_AUTHOR,
- svn_string_create(author, pool));
+ svn_hash_sets(revprop_table, SVN_PROP_REVISION_AUTHOR,
+ svn_string_create(author, pool));
if (log_msg)
- svn_hash_sets_fixed_key(revprop_table, SVN_PROP_REVISION_LOG,
- svn_string_create(log_msg, pool));
+ svn_hash_sets(revprop_table, SVN_PROP_REVISION_LOG,
+ svn_string_create(log_msg, pool));
return svn_repos_fs_begin_txn_for_commit2(txn_p, repos, rev, revprop_table,
pool);
}
@@ -458,13 +457,13 @@ svn_repos_fs_revision_proplist(apr_hash_
/* If they exist, we only copy svn:author and svn:date into the
'real' hashtable being returned. */
- value = svn_hash_gets_fixed_key(tmphash, SVN_PROP_REVISION_AUTHOR);
+ value = svn_hash_gets(tmphash, SVN_PROP_REVISION_AUTHOR);
if (value)
- svn_hash_sets_fixed_key(*table_p, SVN_PROP_REVISION_AUTHOR, value);
+ svn_hash_sets(*table_p, SVN_PROP_REVISION_AUTHOR, value);
- value = svn_hash_gets_fixed_key(tmphash, SVN_PROP_REVISION_DATE);
+ value = svn_hash_gets(tmphash, SVN_PROP_REVISION_DATE);
if (value)
- svn_hash_sets_fixed_key(*table_p, SVN_PROP_REVISION_DATE, value);
+ svn_hash_sets(*table_p, SVN_PROP_REVISION_DATE, value);
}
else /* wholly readable revision */
{
Modified: subversion/branches/fsfs-format7/subversion/libsvn_repos/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_repos/log.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_repos/log.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_repos/log.c Thu May 23 22:04:33 2013
@@ -1084,14 +1084,10 @@ fill_log_entry(svn_log_entry_t *log_entr
{
/* ... but we can only return author/date. */
log_entry->revprops = svn_hash__make(pool);
- svn_hash_sets_fixed_key(log_entry->revprops,
- SVN_PROP_REVISION_AUTHOR,
- svn_hash_gets_fixed_key(r_props,
- SVN_PROP_REVISION_AUTHOR));
- svn_hash_sets_fixed_key(log_entry->revprops,
- SVN_PROP_REVISION_DATE,
- svn_hash_gets_fixed_key(r_props,
- SVN_PROP_REVISION_DATE));
+ svn_hash_sets(log_entry->revprops, SVN_PROP_REVISION_AUTHOR,
+ svn_hash_gets(r_props, SVN_PROP_REVISION_AUTHOR));
+ svn_hash_sets(log_entry->revprops, SVN_PROP_REVISION_DATE,
+ svn_hash_gets(r_props, SVN_PROP_REVISION_DATE));
}
else
/* ... so return all we got. */
Modified: subversion/branches/fsfs-format7/subversion/libsvn_repos/reporter.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_repos/reporter.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_repos/reporter.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_repos/reporter.c Thu May 23 22:04:33 2013
@@ -487,10 +487,10 @@ get_revision_info(report_baton_t *b,
scratch_pool));
/* Extract the committed-date. */
- cdate = svn_hash_gets_fixed_key(r_props, SVN_PROP_REVISION_DATE);
+ cdate = svn_hash_gets(r_props, SVN_PROP_REVISION_DATE);
/* Extract the last-author. */
- author = svn_hash_gets_fixed_key(r_props, SVN_PROP_REVISION_AUTHOR);
+ author = svn_hash_gets(r_props, SVN_PROP_REVISION_AUTHOR);
/* Create a result object */
info = apr_palloc(b->pool, sizeof(*info));
Modified: subversion/branches/fsfs-format7/subversion/libsvn_repos/rev_hunt.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_repos/rev_hunt.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_repos/rev_hunt.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_repos/rev_hunt.c Thu May 23 22:04:33 2013
@@ -171,8 +171,8 @@ svn_repos_get_committed_info(svn_revnum_
SVN_ERR(svn_fs_revision_proplist(&revprops, fs, *committed_rev, pool));
/* Extract date and author from these revprops. */
- committed_date_s = svn_hash_gets_fixed_key(revprops, SVN_PROP_REVISION_DATE);
- last_author_s = svn_hash_gets_fixed_key(revprops, SVN_PROP_REVISION_AUTHOR);
+ committed_date_s = svn_hash_gets(revprops, SVN_PROP_REVISION_DATE);
+ last_author_s = svn_hash_gets(revprops, SVN_PROP_REVISION_AUTHOR);
*committed_date = committed_date_s ? committed_date_s->data : NULL;
*last_author = last_author_s ? last_author_s->data : NULL;
Modified: subversion/branches/fsfs-format7/subversion/libsvn_subr/adler32.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/adler32.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/adler32.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/adler32.c Thu May 23 22:04:33 2013
@@ -57,7 +57,7 @@ svn__adler32(apr_uint32_t checksum, cons
*/
if (len >= 80)
{
- /* Larger buffers can be effiently handled by Marc Adler's
+ /* Larger buffers can be efficiently handled by Marc Adler's
* optimized code. Also, new zlib versions will come with
* SIMD code for x86 and x64.
*/
@@ -76,16 +76,16 @@ svn__adler32(apr_uint32_t checksum, cons
* (approx. one clock tick per byte + 2 ticks loop overhead)
*/
for (; len >= 8; len -= 8, input += 8)
- {
- s1 += input[0]; s2 += s1;
- s1 += input[1]; s2 += s1;
- s1 += input[2]; s2 += s1;
- s1 += input[3]; s2 += s1;
- s1 += input[4]; s2 += s1;
- s1 += input[5]; s2 += s1;
- s1 += input[6]; s2 += s1;
- s1 += input[7]; s2 += s1;
- }
+ {
+ s1 += input[0]; s2 += s1;
+ s1 += input[1]; s2 += s1;
+ s1 += input[2]; s2 += s1;
+ s1 += input[3]; s2 += s1;
+ s1 += input[4]; s2 += s1;
+ s1 += input[5]; s2 += s1;
+ s1 += input[6]; s2 += s1;
+ s1 += input[7]; s2 += s1;
+ }
/* Adler-32 calculation as a simple two ticks per iteration loop.
*/
Modified: subversion/branches/fsfs-format7/subversion/libsvn_subr/compat.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/compat.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/compat.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/compat.c Thu May 23 22:04:33 2013
@@ -76,9 +76,9 @@ svn_compat_log_revprops_clear(apr_hash_t
{
if (revprops)
{
- svn_hash_sets_fixed_key(revprops, SVN_PROP_REVISION_AUTHOR, NULL);
- svn_hash_sets_fixed_key(revprops, SVN_PROP_REVISION_DATE, NULL);
- svn_hash_sets_fixed_key(revprops, SVN_PROP_REVISION_LOG, NULL);
+ svn_hash_sets(revprops, SVN_PROP_REVISION_AUTHOR, NULL);
+ svn_hash_sets(revprops, SVN_PROP_REVISION_DATE, NULL);
+ svn_hash_sets(revprops, SVN_PROP_REVISION_LOG, NULL);
}
}
@@ -103,14 +103,11 @@ svn_compat_log_revprops_out(const char *
*author = *date = *message = NULL;
if (revprops)
{
- if ((author_s = svn_hash_gets_fixed_key(revprops,
- SVN_PROP_REVISION_AUTHOR)))
+ if ((author_s = svn_hash_gets(revprops, SVN_PROP_REVISION_AUTHOR)))
*author = author_s->data;
- if ((date_s = svn_hash_gets_fixed_key(revprops,
- SVN_PROP_REVISION_DATE)))
+ if ((date_s = svn_hash_gets(revprops, SVN_PROP_REVISION_DATE)))
*date = date_s->data;
- if ((message_s = svn_hash_gets_fixed_key(revprops,
- SVN_PROP_REVISION_LOG)))
+ if ((message_s = svn_hash_gets(revprops, SVN_PROP_REVISION_LOG)))
*message = message_s->data;
}
}
Modified: subversion/branches/fsfs-format7/subversion/libsvn_subr/dirent_uri.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/dirent_uri.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/dirent_uri.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/dirent_uri.c Thu May 23 22:04:33 2013
@@ -1688,7 +1688,8 @@ svn_dirent_is_canonical(const char *dire
static svn_boolean_t
relpath_is_canonical(const char *relpath)
{
- const char *ptr = relpath, *seg = relpath;
+ const char *ptr = relpath;
+ apr_size_t i, len;
/* RELPATH is canonical if it has:
* - no '.' segments
@@ -1696,36 +1697,32 @@ relpath_is_canonical(const char *relpath
* - no '//'
*/
- if (*relpath == '\0')
- return TRUE;
-
+ /* invalid beginnings */
if (*ptr == '/')
return FALSE;
- /* Now validate the rest of the path. */
- while(1)
- {
- apr_size_t seglen = ptr - seg;
-
- if (seglen == 1 && *seg == '.')
- return FALSE; /* /./ */
-
- if (*ptr == '/' && *(ptr+1) == '/')
- return FALSE; /* // */
-
- if (! *ptr && *(ptr - 1) == '/')
- return FALSE; /* foo/ */
+ if (ptr[0] == '.' && (ptr[1] == '/' || ptr[1] == '\0'))
+ return FALSE;
- if (! *ptr)
- break;
+ /* valid special cases */
+ len = strlen(ptr);
+ if (len < 2)
+ return TRUE;
- if (*ptr == '/')
- ptr++;
- seg = ptr;
+ /* invalid endings */
+ if (ptr[len-1] == '/' || (ptr[len-1] == '.' && ptr[len-2] == '/'))
+ return FALSE;
- while (*ptr && (*ptr != '/'))
- ptr++;
- }
+ /* Now validate the rest of the path. */
+ for (i = 0; i < len - 1; ++i)
+ if (ptr[i] == '/' && ptr[i+1] <= '/') /* '.' and '/' have smaller UTF-8
+ codes than most other chars */
+ {
+ if (ptr[i+1] == '/')
+ return FALSE; /* // */
+ if (ptr[i+1] == '.' && ptr[i+2] == '/')
+ return FALSE; /* /./ */
+ }
return TRUE;
}
Modified: subversion/branches/fsfs-format7/subversion/libsvn_subr/eol.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/eol.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/eol.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/eol.c Thu May 23 22:04:33 2013
@@ -30,14 +30,12 @@
#include "private/svn_eol_private.h"
#include "private/svn_dep_compat.h"
-/* Machine-word-sized masks used in svn_eol__find_eol_start.
- */
char *
svn_eol__find_eol_start(char *buf, apr_size_t len)
{
#if !SVN_UNALIGNED_ACCESS_IS_OK
- /* On some systems, we need to make sure that buf is properly aligned
+ /* On some systems, we need to make sure that BUF is properly aligned
* for chunky data access. This overhead is still justified because
* only lines tend to be tens of chars long.
*/
@@ -62,8 +60,8 @@ svn_eol__find_eol_start(char *buf, apr_s
apr_uintptr_t r_test = chunk ^ SVN__R_MASK;
apr_uintptr_t n_test = chunk ^ SVN__N_MASK;
- /* A byte in SVN__R_TEST can by < 0x80, iff it has been \0 before
- * (i.e. \r in *BUF). Dito for SVN__N_TEST. */
+ /* A byte in SVN__R_TEST can only be < 0x80, iff it has been \0 before
+ * (i.e. \r in *BUF). Ditto for SVN__N_TEST. */
r_test |= (r_test & SVN__LOWER_7BITS_SET) + SVN__LOWER_7BITS_SET;
n_test |= (n_test & SVN__LOWER_7BITS_SET) + SVN__LOWER_7BITS_SET;
Modified: subversion/branches/fsfs-format7/subversion/libsvn_subr/io.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/io.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/io.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/io.c Thu May 23 22:04:33 2013
@@ -51,6 +51,10 @@
#include <arch/win32/apr_arch_file_io.h>
#endif
+#if APR_HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
#include "svn_hash.h"
#include "svn_types.h"
#include "svn_dirent_uri.h"
@@ -2104,11 +2108,12 @@ svn_error_t *svn_io_file_flush_to_disk(a
{
apr_os_file_t filehand;
+ /* ### In apr 1.4+ we could delegate most of this function to
+ apr_file_sync(). The only major difference is that this doesn't
+ contain the retry loop for EINTR on linux. */
+
/* First make sure that any user-space buffered data is flushed. */
- SVN_ERR(do_io_file_wrapper_cleanup(file, apr_file_flush(file),
- N_("Can't flush file '%s'"),
- N_("Can't flush stream"),
- pool));
+ SVN_ERR(svn_io_file_flush(file, pool));
apr_os_file_get(&filehand, file);
@@ -2125,7 +2130,11 @@ svn_error_t *svn_io_file_flush_to_disk(a
int rv;
do {
+#ifdef F_FULLFSYNC
+ rv = fcntl(filehand, F_FULLFSYNC, 0);
+#else
rv = fsync(filehand);
+#endif
} while (rv == -1 && APR_STATUS_IS_EINTR(apr_get_os_error()));
/* If the file is in a memory filesystem, fsync() may return
@@ -3512,6 +3521,16 @@ svn_io_file_write(apr_file_t *file, cons
pool));
}
+svn_error_t *
+svn_io_file_flush(apr_file_t *file,
+ apr_pool_t *scratch_pool)
+{
+ return svn_error_trace(do_io_file_wrapper_cleanup(
+ file, apr_file_flush(file),
+ N_("Can't flush file '%s'"),
+ N_("Can't flush stream"),
+ scratch_pool));
+}
svn_error_t *
svn_io_file_write_full(apr_file_t *file, const void *buf,
@@ -3576,23 +3595,76 @@ svn_io_write_unique(const char **tmp_pat
err = svn_io_file_write_full(new_file, buf, nbytes, NULL, pool);
- /* ### BH: Windows doesn't have the race condition between the write and the
- ### rename that other operating systems might have. So allow windows
- ### to decide when it wants to perform the disk synchronization using
- ### the normal file locking and journaling filesystem rules.
-
- ### Note that this function doesn't handle the rename, so we aren't even
- ### sure that we really have to sync. */
-#ifndef WIN32
- if (!err && nbytes > 0)
- err = svn_io_file_flush_to_disk(new_file, pool);
-#endif
+ if (!err)
+ {
+ /* svn_io_file_flush_to_disk() can be very expensive, so use the
+ cheaper standard flush if the file is created as temporary file
+ anyway */
+ if (delete_when == svn_io_file_del_none)
+ err = svn_io_file_flush_to_disk(new_file, pool);
+ else
+ err = svn_io_file_flush(new_file, pool);
+ }
return svn_error_trace(
svn_error_compose_create(err,
svn_io_file_close(new_file, pool)));
}
+svn_error_t *
+svn_io_write_atomic(const char *final_path,
+ const void *buf,
+ apr_size_t nbytes,
+ const char *copy_perms_path,
+ apr_pool_t *scratch_pool)
+{
+ apr_file_t *tmp_file;
+ const char *tmp_path;
+ svn_error_t *err;
+ const char *dirname = svn_dirent_dirname(final_path, scratch_pool);
+
+ SVN_ERR(svn_io_open_unique_file3(&tmp_file, &tmp_path, dirname,
+ svn_io_file_del_none,
+ scratch_pool, scratch_pool));
+
+ err = svn_io_file_write_full(tmp_file, buf, nbytes, NULL, scratch_pool);
+
+ if (!err)
+ err = svn_io_file_flush_to_disk(tmp_file, scratch_pool);
+
+ err = svn_error_compose_create(err,
+ svn_io_file_close(tmp_file, scratch_pool));
+
+ if (!err && copy_perms_path)
+ err = svn_io_copy_perms(copy_perms_path, tmp_path, scratch_pool);
+
+ if (err)
+ {
+ return svn_error_compose_create(err,
+ svn_io_remove_file2(tmp_path, FALSE,
+ scratch_pool));
+ }
+
+ SVN_ERR(svn_io_file_rename(tmp_path, final_path, scratch_pool));
+
+#ifdef __linux__
+ {
+ /* Linux has the unusual feature that fsync() on a file is not
+ enough to ensure that a file's directory entries have been
+ flushed to disk; you have to fsync the directory as well.
+ On other operating systems, we'd only be asking for trouble
+ by trying to open and fsync a directory. */
+ apr_file_t *file;
+
+ SVN_ERR(svn_io_file_open(&file, dirname, APR_READ, APR_OS_DEFAULT,
+ scratch_pool));
+ SVN_ERR(svn_io_file_flush_to_disk(file, scratch_pool));
+ SVN_ERR(svn_io_file_close(file, scratch_pool));
+ }
+#endif
+
+ return SVN_NO_ERROR;
+}
svn_error_t *
svn_io_file_trunc(apr_file_t *file, apr_off_t offset, apr_pool_t *pool)
Modified: subversion/branches/fsfs-format7/subversion/libsvn_subr/prompt.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/prompt.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/prompt.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/prompt.c Thu May 23 22:04:33 2013
@@ -236,7 +236,6 @@ terminal_puts(const char *string, termin
apr_pool_t *pool)
{
svn_error_t *err;
- apr_status_t status;
const char *converted;
err = svn_cmdline_cstring_from_utf8(&converted, string, pool);
@@ -255,13 +254,10 @@ terminal_puts(const char *string, termin
}
#endif
- status = apr_file_write_full(terminal->outfd, converted,
- strlen(converted), NULL);
- if (!status)
- status = apr_file_flush(terminal->outfd);
- if (status)
- return svn_error_wrap_apr(status, _("Can't write to terminal"));
- return SVN_NO_ERROR;
+ SVN_ERR(svn_io_file_write_full(terminal->outfd, converted,
+ strlen(converted), NULL, pool));
+
+ return svn_error_trace(svn_io_file_flush(terminal->outfd, pool));
}
/* These codes can be returned from terminal_getc instead of a character. */
Modified: subversion/branches/fsfs-format7/subversion/libsvn_subr/ssl_client_cert_providers.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/ssl_client_cert_providers.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/ssl_client_cert_providers.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/ssl_client_cert_providers.c Thu May 23 22:04:33 2013
@@ -79,13 +79,12 @@ ssl_client_cert_file_first_credentials(v
}
-static const svn_auth_provider_t ssl_client_cert_file_provider =
- {
- SVN_AUTH_CRED_SSL_CLIENT_CERT,
- ssl_client_cert_file_first_credentials,
- NULL,
- NULL
- };
+static const svn_auth_provider_t ssl_client_cert_file_provider = {
+ SVN_AUTH_CRED_SSL_CLIENT_CERT,
+ ssl_client_cert_file_first_credentials,
+ NULL,
+ NULL
+};
/*** Public API to SSL file providers. ***/
Modified: subversion/branches/fsfs-format7/subversion/libsvn_subr/ssl_server_trust_providers.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/ssl_server_trust_providers.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/ssl_server_trust_providers.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/ssl_server_trust_providers.c Thu May 23 22:04:33 2013
@@ -149,9 +149,9 @@ ssl_server_trust_file_save_credentials(s
static const svn_auth_provider_t ssl_server_trust_file_provider = {
SVN_AUTH_CRED_SSL_SERVER_TRUST,
- &ssl_server_trust_file_first_credentials,
+ ssl_server_trust_file_first_credentials,
NULL,
- &ssl_server_trust_file_save_credentials,
+ ssl_server_trust_file_save_credentials,
};
Modified: subversion/branches/fsfs-format7/subversion/libsvn_subr/subst.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/subst.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/subst.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/subst.c Thu May 23 22:04:33 2013
@@ -50,6 +50,7 @@
#include "svn_private_config.h"
#include "private/svn_string_private.h"
+#include "private/svn_eol_private.h"
/**
* The textual elements of a detranslated special file. One of these
@@ -1116,28 +1117,39 @@ translate_chunk(svn_stream_t *dst,
/* skip current EOL */
len += b->eol_str_len;
- /* Check 4 bytes at once to allow for efficient pipelining
- and to reduce loop condition overhead. */
- while ((p + len + 4) <= end)
+ if (b->keywords)
{
- if (interesting[(unsigned char)p[len]]
- || interesting[(unsigned char)p[len+1]]
- || interesting[(unsigned char)p[len+2]]
- || interesting[(unsigned char)p[len+3]])
- break;
-
- len += 4;
+ /* Check 4 bytes at once to allow for efficient pipelining
+ and to reduce loop condition overhead. */
+ while ((p + len + 4) <= end)
+ {
+ if (interesting[(unsigned char)p[len]]
+ || interesting[(unsigned char)p[len+1]]
+ || interesting[(unsigned char)p[len+2]]
+ || interesting[(unsigned char)p[len+3]])
+ break;
+
+ len += 4;
+ }
+
+ /* Found an interesting char or EOF in the next 4 bytes.
+ Find its exact position. */
+ while ((p + len) < end
+ && !interesting[(unsigned char)p[len]])
+ ++len;
+ }
+ else
+ {
+ /* use our optimized sub-routine to find the next EOL */
+ const char *eol
+ = svn_eol__find_eol_start((char *)p + len, end - p);
+ len += (eol ? eol : end) - (p + len);
}
-
- /* Found an interesting char or EOF in the next 4 bytes.
- Find its exact position. */
- while ((p + len) < end && !interesting[(unsigned char)p[len]])
- ++len;
}
while (b->nl_translation_skippable ==
svn_tristate_true && /* can potentially skip EOLs */
p + len + 2 < end && /* not too close to EOF */
- eol_unchanged (b, p + len)); /* EOL format already ok */
+ eol_unchanged(b, p + len)); /* EOL format already ok */
while ((p + len) < end && !interesting[(unsigned char)p[len]])
len++;
Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/status.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/status.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/status.c Thu May 23 22:04:33 2013
@@ -995,12 +995,12 @@ collect_ignore_patterns(apr_array_header
{
const svn_string_t *value;
- value = svn_hash_gets_fixed_key(props, SVN_PROP_IGNORE);
+ value = svn_hash_gets(props, SVN_PROP_IGNORE);
if (value)
svn_cstring_split_append(*patterns, value->data, "\n\r", FALSE,
result_pool);
- value = svn_hash_gets_fixed_key(props, SVN_PROP_INHERITABLE_IGNORES);
+ value = svn_hash_gets(props, SVN_PROP_INHERITABLE_IGNORES);
if (value)
svn_cstring_split_append(*patterns, value->data, "\n\r", FALSE,
result_pool);
Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/workqueue.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/workqueue.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/workqueue.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/workqueue.c Thu May 23 22:04:33 2013
@@ -394,8 +394,6 @@ run_postupgrade(work_item_baton_t *wqb,
const char *entries_path;
const char *format_path;
const char *wcroot_abspath;
- const char *adm_path;
- const char *temp_path;
svn_error_t *err;
err = svn_wc__wipe_postupgrade(wri_abspath, FALSE,
@@ -409,7 +407,6 @@ run_postupgrade(work_item_baton_t *wqb,
SVN_ERR(svn_wc__db_get_wcroot(&wcroot_abspath, db, wri_abspath,
scratch_pool, scratch_pool));
- adm_path = svn_wc__adm_child(wcroot_abspath, NULL, scratch_pool);
entries_path = svn_wc__adm_child(wcroot_abspath, SVN_WC__ADM_ENTRIES,
scratch_pool);
format_path = svn_wc__adm_child(wcroot_abspath, SVN_WC__ADM_FORMAT,
@@ -420,15 +417,13 @@ run_postupgrade(work_item_baton_t *wqb,
### The order may matter for some sufficiently old clients.. but
### this code only runs during upgrade after the files had been
### removed earlier during the upgrade. */
- SVN_ERR(svn_io_write_unique(&temp_path, adm_path, SVN_WC__NON_ENTRIES_STRING,
+ SVN_ERR(svn_io_write_atomic(format_path, SVN_WC__NON_ENTRIES_STRING,
sizeof(SVN_WC__NON_ENTRIES_STRING) - 1,
- svn_io_file_del_none, scratch_pool));
- SVN_ERR(svn_io_file_rename(temp_path, format_path, scratch_pool));
+ NULL, scratch_pool));
- SVN_ERR(svn_io_write_unique(&temp_path, adm_path, SVN_WC__NON_ENTRIES_STRING,
+ SVN_ERR(svn_io_write_atomic(entries_path, SVN_WC__NON_ENTRIES_STRING,
sizeof(SVN_WC__NON_ENTRIES_STRING) - 1,
- svn_io_file_del_none, scratch_pool));
- SVN_ERR(svn_io_file_rename(temp_path, entries_path, scratch_pool));
+ NULL, scratch_pool));
return SVN_NO_ERROR;
}
Modified: subversion/branches/fsfs-format7/subversion/mod_dav_svn/activity.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/mod_dav_svn/activity.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/mod_dav_svn/activity.c (original)
+++ subversion/branches/fsfs-format7/subversion/mod_dav_svn/activity.c Thu May 23 22:04:33 2013
@@ -209,11 +209,9 @@ dav_svn__store_activity(const dav_svn_re
activity_contents = apr_psprintf(repos->pool, "%s\n%s\n",
txn_name, activity_id);
- /* ### is there another directory we already have and can write to? */
- err = svn_io_write_unique(&tmp_path,
- svn_dirent_dirname(final_path, repos->pool),
+ err = svn_io_write_atomic(final_path,
activity_contents, strlen(activity_contents),
- svn_io_file_del_none, repos->pool);
+ NULL /* copy_perms path */, repos->pool);
if (err)
{
svn_error_t *serr = svn_error_quick_wrap(err,
@@ -225,15 +223,6 @@ dav_svn__store_activity(const dav_svn_re
repos->pool);
}
- err = svn_io_file_rename(tmp_path, final_path, repos->pool);
- if (err)
- {
- svn_error_clear(svn_io_remove_file2(tmp_path, TRUE, repos->pool));
- return dav_svn__convert_err(err, HTTP_INTERNAL_SERVER_ERROR,
- "could not replace files.",
- repos->pool);
- }
-
return NULL;
}
@@ -255,9 +244,9 @@ dav_svn__create_txn(const dav_svn_repos
if (repos->username)
{
- svn_hash_sets_fixed_key(revprops,
- SVN_PROP_REVISION_AUTHOR,
- svn_string_create(repos->username, pool));
+ svn_hash_sets(revprops,
+ SVN_PROP_REVISION_AUTHOR,
+ svn_string_create(repos->username, pool));
}
serr = svn_fs_youngest_rev(&rev, repos->fs, pool);
Modified: subversion/branches/fsfs-format7/subversion/mod_dav_svn/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/mod_dav_svn/lock.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/mod_dav_svn/lock.c (original)
+++ subversion/branches/fsfs-format7/subversion/mod_dav_svn/lock.c Thu May 23 22:04:33 2013
@@ -680,10 +680,9 @@ append_locks(dav_lockdb *lockdb,
svn_fs_root_t *txn_root;
const char *conflict_msg;
apr_hash_t *revprop_table = apr_hash_make(resource->pool);
- svn_hash_sets_fixed_key(revprop_table,
- SVN_PROP_REVISION_AUTHOR,
- svn_string_create(repos->username,
- resource->pool));
+ svn_hash_sets(revprop_table,
+ SVN_PROP_REVISION_AUTHOR,
+ svn_string_create(repos->username, resource->pool));
if (resource->info->repos->is_svn_client)
return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED,
Modified: subversion/branches/fsfs-format7/subversion/po/sv.po
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/po/sv.po?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/po/sv.po [UTF-8] (original)
+++ subversion/branches/fsfs-format7/subversion/po/sv.po [UTF-8] Thu May 23 22:04:33 2013
@@ -219,7 +219,7 @@ msgstr "Felaktigt datum"
#: ../include/svn_error_codes.h:180
msgid "Bogus mime-type"
-msgstr "Felaktig mime-typ"
+msgstr "Felaktig MIME-typ"
#: ../include/svn_error_codes.h:190
msgid "Wrong or unexpected property value"
@@ -7456,7 +7456,7 @@ msgstr "Kan inte sätta \"%s\" på en fi
#: ../libsvn_wc/props.c:1629
#, c-format
msgid "Can't set '%s': file '%s' has binary mime type property"
-msgstr "Kan inte sätta \"%s\": filen \"%s\" har binär mime-typsegenskap"
+msgstr "Kan inte sätta \"%s\": filen \"%s\" har binär MIME-typsegenskap"
#: ../libsvn_wc/props.c:1674
msgid "Failed to load current properties"
@@ -9968,7 +9968,8 @@ msgstr ""
" (ARG1:ARG2))\n"
" Ett revisionsargument kan vara något av:\n"
" TAL revisionsnummer\n"
-" \"{\"DATUM\"}\" revision vid början av angiven dag\n"
+" \"{\" DATUM \"}\" revision vid början av\n"
+" angiven dag\n"
" \"HEAD\" senaste revisionen i arkivet\n"
" \"BASE\" basrevisionen för objektets\n"
" arbetskopia\n"
@@ -10030,7 +10031,7 @@ msgstr ""
" \"blame\".\n"
" Skönsvärde: \"-u\". Väljare separeras av tomrum.\n"
" För inbyggda \"diff\" och \"blame\" tillåts:\n"
-" -u, --unified: Visa tre rader av sammanhang\n"
+" -u, --unified: Visa tre rader sammanhang\n"
" -b, --ignore-space-change:\n"
" Bortse från ändringar av mängden tomrum\n"
" -w, --ignore-all-space:\n"
@@ -10083,7 +10084,7 @@ msgstr ""
#: ../svn/svn.c:226 ../svnrdump/svnrdump.c:140 ../svnsync/svnsync.c:187
msgid "do not cache authentication tokens"
-msgstr "cacha inte autentiseringsinformation"
+msgstr "spara inte autentiseringsinformation"
#: ../svn/svn.c:228 ../svnrdump/svnrdump.c:154 ../svnsync/svnsync.c:197
msgid ""
@@ -10243,7 +10244,7 @@ msgid ""
" history"
msgstr ""
"använd/visa ytterligare information från\n"
-" sammanslagningshistorien"
+" sammanslagningshistoriken"
#: ../svn/svn.c:298
msgid ""
@@ -10406,7 +10407,7 @@ msgstr ""
#: ../svn/svn.c:434
msgid "add intermediate parents"
-msgstr "skapa mellanliggande förälderkataloger"
+msgstr "skapa mellanliggande föräldrakataloger"
#: ../svn/svn.c:437
msgid ""
@@ -10586,7 +10587,7 @@ msgstr ""
" nästa arkivering. Filer och kataloger som aldrig arkiverats tas\n"
" genast bort från arbetskopian såvida inte flaggan --keep-local anges.\n"
" Sökvägar som är, eller innehåller, objekt som ej är versionshanterade\n"
-" eller som är ändrade raderas inte utan att flaggorna --force eller\n"
+" eller som är ändrade raderas bara om flaggan --force eller\n"
" --keep-local används.\n"
"\n"
" 2. Varje objekt som anges med en URL raderas från arkivet genom en\n"
@@ -10913,7 +10914,7 @@ msgstr ""
" 1. Visa loggmeddelanden för URL:en som motsvarar SÖKVÄG (\".\" om ej\n"
" angiven). Om REV anges avgör den var SÖKVÄG letas upp, och standard-\n"
" värdet för revisionsområdet är då REV:1. Annars är standardvärdet\n"
-" för revisionsområdet är BASE:1 då URL:en kanske inte finns i\n"
+" för revisionsområdet BASE:1 då URL:en kanske inte finns i\n"
" HEAD-revisionen.\n"
"\n"
" 2. Visa loggmeddelanden för varje SÖKVÄG (\".\" om ingen angiven) under\n"
@@ -10941,7 +10942,7 @@ msgstr ""
" * matchar en följd av godtyckliga tecken\n"
" [abc] matchar något av tecknen inom hakparenteserna\n"
" Om flera \"--search\"-flaggor anges kommer ett loggmeddelande visas om\n"
-" något det matchar något av sökmönstren. Om flaggan --search-and anges,\n"
+" det matchar något av sökmönstren. Om flaggan --search-and anges,\n"
" så kombineras den flaggans argument med mönstret från föregående --search\n"
" eller --search-and, och ett loggmeddelande visas bara om det matchar det\n"
" kombinerade sökmönstret.\n"
@@ -10950,7 +10951,7 @@ msgstr ""
"\n"
" Exempel:\n"
"\n"
-" Visa de senaste 5 loggmeddelanden för den aktuella arbetskopians\n"
+" Visa de 5 senaste loggmeddelandena för den aktuella arbetskopians\n"
" katalog och visa sökvägar ändrade i varje arkivering:\n"
" svn log -l 5 -v\n"
"\n"
@@ -11412,7 +11413,7 @@ msgstr ""
"\n"
" Sammanslagningen är nu bara gjord i din egna arbetskopia och behöver\n"
" fortfarande arkiveras så att andra kan se den. Du kan granska\n"
-" ändringarna och kan behöva lösa konflikter innan det sammanslagningen\n"
+" ändringarna och kan behöva lösa konflikter innan sammanslagningen\n"
" arkiveras.\n"
"\n"
" - Exempel på återförening -\n"
@@ -11439,8 +11440,8 @@ msgstr ""
" svn merge ^/funktion\n"
"\n"
" För att förhindra onödiga konflikter kräver en återförening att\n"
-" AKSÖKVÄGSMÅL inte är en arbetskopia med blandad revision, utan lokala\n"
-" ändringar, och utan växlade delträd.\n"
+" AKSÖKVÄGSMÅL inte är en arbetskopia med blandad revision och saknar\n"
+" lokala ändringar och växlade delträd.\n"
"\n"
" En återförening kräver också att källgrenen har genomgående\n"
" synkroniserats med målet -- i exemplet ovan innebär det att alla\n"
@@ -11546,7 +11547,7 @@ msgstr ""
"\n"
" Två funktioner har utvecklats på skilda grenar, \"apelsin\" och\n"
" \"banan\". Det står nu klart att \"banan\" borde kombineras med grenen\n"
-" \"apelsin\" för vidare utveckling innan återförening.\n"
+" \"apelsin\" för vidare utveckling före återförening.\n"
"\n"
" Grenen \"banan\" har synkroniserats med \"trunk\" upp till revision\n"
" 500. (Om revisionsnumret inte är känt kan det hittas med hjälp av\n"
@@ -11617,7 +11618,7 @@ msgstr ""
" - Sammanslagningsföljning -\n"
"\n"
" Subversion använder egenskapen svn:mergeinfo för att följa samman-\n"
-" slagningshistorien. Denna egenskap läses i början av sammanslagningen\n"
+" slagningshistoriken. Denna egenskap läses i början av sammanslagningen\n"
" för att avgöra vad som skall ingå, och uppdateras vid sammanslagningens\n"
" fullbordan med de införda ändringarna. Sammanslagningsinformationen\n"
" används bara om de två källorna befinner sig på samma historiska linje:\n"
@@ -11673,7 +11674,7 @@ msgstr ""
"användning: 1. mergeinfo KÄLLA[@REV] [MÅL[@REV]]\n"
" 2. mergeinfo --show-revs=VILKA KÄLLA[@REV] [MÅL[@REV]]\n"
"\n"
-" 1. Sammanfatta sammanslagningshistorien mellan KÄLLA och MÅL. Diagrammet\n"
+" 1. Sammanfatta sammanslagningshistoriken mellan KÄLLA och MÅL. Diagrammet\n"
" visar, från vänster till höger:\n"
" grenarnas yngsta gemensamma ursprung;\n"
" den senaste fulla sammanslagningen i endera riktningen, och alltså\n"
@@ -11849,7 +11850,7 @@ msgstr ""
" G Sammanslagen (med lokala ändringar som inte har arkiverats)\n"
"\n"
" För ändringar som inte anbragdes exakt rapporteras detta på rader som\n"
-" med tecknet \">\". Sådana ändringar bör granskas noga.\n"
+" börjar med tecknet \">\". Sådana ändringar bör granskas noga.\n"
"\n"
" Om allt innehåll tas bort från en fil, så kommer den filen schemaläggas\n"
" för radering. Om en ny fil skapas så kommer den schemaläggas att läggas\n"
@@ -11861,7 +11862,7 @@ msgstr ""
" \"--- katalog/fil.txt (revision N)\"). För att undvika avslag,\n"
" uppdatera först till revision N med hjälp av \"svn update -R N\",\n"
" anbringa ändringsfilen, och uppdatera sedan tillbaka till revisionen\n"
-" HEAD. På så kan kommer konflikter lösas interaktivt.\n"
+" HEAD. På så sätt kan konflikter lösas interaktivt.\n"
#: ../svn/svn.c:1201
msgid ""
@@ -12113,9 +12114,9 @@ msgstr ""
" svn:executable - Om den finns, görs filen exekverbar. Använd\n"
" \"svn propdel svn:executable SÖKVÄG...\" för att nollställa.\n"
" svn:eol-style - Något av \"native\", \"CR\", \"LF\" eller \"CRLF\".\n"
-" svn:mime-type - Filens mime-typ. Används för att avgöra hur samman-\n"
+" svn:mime-type - Filens MIME-typ. Används för att avgöra hur samman-\n"
" slagningar av ändringar sker och hur den skickas från Apache. En\n"
-" mime-typ som inleds med \"text/\" eller som saknas behandlas som text.\n"
+" MIME-typ som inleds med \"text/\" eller som saknas behandlas som text.\n"
" Allt annat behandlas som binärdata.\n"
" svn:needs-lock - Om den är satt, visar den att filen bör låsas innan\n"
" den ändras. Gör att arbetsfilen blir skrivskyddad när den inte är\n"
@@ -12183,7 +12184,7 @@ msgstr ""
"\n"
" Skriv om arbetskopians URL-metadata för att avspegla en ren syntaxändring.\n"
" Detta används när en arkivrots-URL ändras (t.ex. byte av schema eller\n"
-" värddator) men arbetskopian fortfarande representerar samma katalog i\n"
+" värddator) men arbetskopian representerar fortfarande samma katalog i\n"
" samma arkiv.\n"
"\n"
" 1. FRÅN-PREFIX och TILL-PREFIX är förled till arbetskopians aktuella\n"
@@ -12414,8 +12415,8 @@ msgstr ""
" Sjunde kolumnen: Huruvida objektet är föremål för en trädkonflikt\n"
" \" \" normalt\n"
" \"C\" trädkonflikt\n"
-" Om objektet är föremål för en trädkonflikt kommer en extra rad skrivas\n"
-" efter objektets statusrad om vad konflikten rör sig om.\n"
+" Om objektet är föremål för en trädkonflikt kommer en extra rad om\n"
+" konflikten skrivas efter objektets statusrad.\n"
"\n"
" Information om uppdateringar på servern visas i den nionde kolumnen\n"
" (om -u angivits):\n"
@@ -12509,7 +12510,7 @@ msgstr ""
"\n"
" 1. Uppdatera arbetskopian så att den återspeglar en ny URL i arkivet.\n"
" Detta liknar hur \"svn update\" beter sig och är det sätt på vilket\n"
-" man flyttar en arbetskopia till en gren eller märke inom ett\n"
+" man flyttar en arbetskopia till en gren eller ett märke inom ett\n"
" och samma arkiv. Om FIXREV anges bestämmer den i vilken revision som\n"
" målet ursprunglingen slås upp.\n"
"\n"
@@ -12528,7 +12529,7 @@ msgstr ""
" målet för denna handling.\n"
"\n"
" Normalt vägrar Subversion att växla en sökväg i en arbetskopia till\n"
-" en ny URL utan gemensam ursprung i versionshanteringen. Använd\n"
+" en ny URL utan gemensamt ursprung i versionshanteringen. Använd\n"
" flaggan \"--ignore-ancestry\" för att kringgå denna kontroll.\n"
"\n"
" 2. Flaggan \"--relocate\" är föråldrad. Denna syntax motsvaras nu av\n"
@@ -13003,7 +13004,7 @@ msgstr "Källa och mål saknar gemensamt
#: ../svn/util.c:1091
#, c-format
msgid "svn: warning: '%s' is a binary mime-type but file '%s' looks like text; diff, merge, blame, and other operations will stop working on this file\n"
-msgstr "svn: varning: \"%s\" är en binär mime-typ men filen \"%s\" ser ut som text; \"diff\", \"merge\", \"blame\" och andra kommandon kommer sluta fungera med denna fil\n"
+msgstr "svn: varning: \"%s\" är en binär MIME-typ men filen \"%s\" ser ut som text; \"diff\", \"merge\", \"blame\" och andra kommandon kommer sluta fungera med denna fil\n"
#: ../svnadmin/svnadmin.c:218 ../svnrdump/svnrdump.c:120
msgid "specify revision number ARG (or X:Y range)"
@@ -13193,7 +13194,7 @@ msgstr ""
"\"dumpfile\"-format med återkoppling till standard fel. Revisionerna BÖRJAN\n"
"till och med SLUT skrivs ut. Om inga revisioner anges, skrivs samtliga\n"
"revisionsträd. Om endast BÖRJAN anges, skrivs det revisionsträdet. Flaggan\n"
-"--incremental gör att den första skrivna revisionen bara kommer innehålla\n"
+"--incremental gör att den först skrivna revisionen bara kommer innehålla\n"
"sökvägarna som ändrades i den revisionen; annars kommer den innehålla alla\n"
"sökvägar som finns i arkivet i den revisionen. (I båda fallen kommer alla\n"
"revisioner därefter bara ta med sökvägarna som ändrades i varje enskild\n"
@@ -14123,7 +14124,7 @@ msgstr ""
" ändringar av mängden tomrum\n"
" -w, --ignore-all-space: Bortse från allt tomrum\n"
" --ignore-eol-style: Bortse från ändringar av\n"
-" radbrytningstecken\n"
+" radslutstecken\n"
" -p, --show-c-function: Visa funktionsnamn i C"
#: ../svnlook/svnlook.c:190 ../svnrdump/svnrdump.c:122
@@ -14288,7 +14289,7 @@ msgstr ""
" 2. svnlook proplist --revprop ARKIVSÖKVÄG\n"
"\n"
"Lista egenskaperna för en sökväg i arkivet eller, om --revprop anges,\n"
-"visa revisionsegenskaper. -v visar även egenskapernas värden.\n"
+"visa revisionsegenskaper. Med -v visas även egenskapernas värden.\n"
#: ../svnlook/svnlook.c:287
msgid ""
@@ -14592,7 +14593,7 @@ msgstr ""
" använd \"-\" för att läsa från standard in)\n"
" --config-dir ARG : använd ARG för att ange inställningskatalogen\n"
" --config-option ARG : använd ARG för att ange en inställning\n"
-" --no-auth-cache : cacha inte autentiseringsinformation\n"
+" --no-auth-cache : spara inte autentiseringsinformation\n"
" --version : visa versionsinformation\n"
#: ../svnmucc/svnmucc.c:1002
@@ -14824,7 +14825,7 @@ msgid ""
" [used for FSFS repositories only]"
msgstr ""
"storlek på extra cacheminne i MB som används\n"
-" för att reducera onödiga operation.\n"
+" för att reducera onödiga operationer.\n"
" Standardvärdet är 128 för trådläge och 16 för\n"
" icke-trådat läge.\n"
" [endast använt för FSFS-arkiv]"
@@ -15258,7 +15259,7 @@ msgid ""
" instance of svnsync is running concurrently."
msgstr ""
"Stäng av inbyggd låsning. Användning av denna\n"
-" flagga kan förstöra arkivspegeln om inte är\n"
+" flagga kan förstöra arkivspegeln om det inte är\n"
" säkert att ingen annan körning av svnsync sker\n"
" samtidigt."
@@ -15479,7 +15480,7 @@ msgstr ""
" 4168M arbetskopia med ändringar\n"
" 4123S växlad arbetskopia\n"
" 4123P partiell arbetskopia från en gles utcheckning\n"
-" 123:4168MS växlad arbetskopia med blandade revisioner och ändringar\n"
+" 4123:4168MS växlad arbetskopia med blandade revisioner och ändringar\n"
"\n"
" Om AK_SÖKVÄG inte är versionshanterad så kommer programmet skriva ut\n"
" \"Ej versionshanterad fil/katalog\". Om AK_SÖKVÄG är en tillagd, kopierad\n"
Modified: subversion/branches/fsfs-format7/subversion/svn/conflict-callbacks.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/svn/conflict-callbacks.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/svn/conflict-callbacks.c (original)
+++ subversion/branches/fsfs-format7/subversion/svn/conflict-callbacks.c Thu May 23 22:04:33 2013
@@ -379,7 +379,7 @@ edit_prop_conflict(const char **merged_f
scratch_pool);
SVN_ERR(merge_prop_conflict(merged_prop, desc, NULL, scratch_pool));
SVN_ERR(svn_stream_close(merged_prop));
- SVN_ERR(svn_io_file_flush_to_disk(file, scratch_pool));
+ SVN_ERR(svn_io_file_flush(file, scratch_pool));
SVN_ERR(open_editor(&performed_edit, file_path, b, scratch_pool));
*merged_file_path = (performed_edit ? file_path : NULL);
Modified: subversion/branches/fsfs-format7/subversion/svn/file-merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/svn/file-merge.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/svn/file-merge.c (original)
+++ subversion/branches/fsfs-format7/subversion/svn/file-merge.c Thu May 23 22:04:33 2013
@@ -490,7 +490,7 @@ edit_chunk(apr_array_header_t **merged_c
return svn_error_create(SVN_ERR_IO_WRITE_ERROR, NULL,
_("Could not write data to temporary file"));
}
- SVN_ERR(svn_io_file_flush_to_disk(temp_file, scratch_pool));
+ SVN_ERR(svn_io_file_flush(temp_file, scratch_pool));
err = svn_cmdline__edit_file_externally(temp_file_name, editor_cmd,
config, scratch_pool);
Modified: subversion/branches/fsfs-format7/subversion/svnadmin/svnadmin.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/svnadmin/svnadmin.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/svnadmin/svnadmin.c (original)
+++ subversion/branches/fsfs-format7/subversion/svnadmin/svnadmin.c Thu May 23 22:04:33 2013
@@ -39,6 +39,7 @@
#include "svn_cache_config.h"
#include "svn_version.h"
#include "svn_props.h"
+#include "svn_sorts.h"
#include "svn_time.h"
#include "svn_user.h"
#include "svn_xml.h"
@@ -47,6 +48,8 @@
#include "private/svn_subr_private.h"
#include "private/svn_cmdline_private.h"
+#include "../libsvn_fs_fs/fs.h" /* for SVN_FS_FS__MIN_PACKED_FORMAT */
+
#include "svn_private_config.h"
@@ -753,6 +756,39 @@ subcommand_deltify(apr_getopt_t *os, voi
return SVN_NO_ERROR;
}
+static void
+cmdline_stream_printf(svn_stream_t *stream,
+ apr_pool_t *pool,
+ const char *fmt,
+ ...)
+ __attribute__((format(printf, 3, 4)));
+
+static void
+cmdline_stream_printf(svn_stream_t *stream,
+ apr_pool_t *pool,
+ const char *fmt,
+ ...)
+{
+ const char *message;
+ va_list ap;
+ svn_error_t *err;
+ const char *out;
+
+ va_start(ap, fmt);
+ message = apr_pvsprintf(pool, fmt, ap);
+ va_end(ap);
+
+ err = svn_cmdline_cstring_from_utf8(&out, message, pool);
+
+ if (err)
+ {
+ svn_error_clear(err);
+ out = svn_cmdline_cstring_from_utf8_fuzzy(message, pool);
+ }
+
+ svn_error_clear(svn_stream_puts(stream, out));
+}
+
/* Implementation of svn_repos_notify_func_t to wrap the output to a
response stream for svn_repos_dump_fs2() and svn_repos_verify_fs() */
@@ -762,36 +798,35 @@ repos_notify_handler(void *baton,
apr_pool_t *scratch_pool)
{
svn_stream_t *feedback_stream = baton;
- apr_size_t len;
switch (notify->action)
{
case svn_repos_notify_warning:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- "WARNING 0x%04x: %s\n", notify->warning,
- notify->warning_str));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ "WARNING 0x%04x: %s\n", notify->warning,
+ notify->warning_str);
return;
case svn_repos_notify_dump_rev_end:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("* Dumped revision %ld.\n"),
- notify->revision));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("* Dumped revision %ld.\n"),
+ notify->revision);
return;
case svn_repos_notify_verify_rev_end:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("* Verified revision %ld.\n"),
- notify->revision));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("* Verified revision %ld.\n"),
+ notify->revision);
return;
case svn_repos_notify_verify_rev_structure:
if (notify->revision == SVN_INVALID_REVNUM)
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("* Verifying repository metadata ...\n")));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("* Verifying repository metadata ...\n"));
else
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("* Verifying metadata at revision %ld ...\n"),
- notify->revision));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("* Verifying metadata at revision %ld ...\n"),
+ notify->revision);
return;
case svn_repos_notify_pack_shard_start:
@@ -799,14 +834,14 @@ repos_notify_handler(void *baton,
const char *shardstr = apr_psprintf(scratch_pool,
"%" APR_INT64_T_FMT,
notify->shard);
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("Packing revisions in shard %s..."),
- shardstr));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("Packing revisions in shard %s..."),
+ shardstr);
}
return;
case svn_repos_notify_pack_shard_end:
- svn_error_clear(svn_stream_puts(feedback_stream, _("done.\n")));
+ cmdline_stream_printf(feedback_stream, scratch_pool, _("done.\n"));
return;
case svn_repos_notify_pack_shard_start_revprop:
@@ -814,30 +849,30 @@ repos_notify_handler(void *baton,
const char *shardstr = apr_psprintf(scratch_pool,
"%" APR_INT64_T_FMT,
notify->shard);
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("Packing revprops in shard %s..."),
- shardstr));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("Packing revprops in shard %s..."),
+ shardstr);
}
return;
case svn_repos_notify_pack_shard_end_revprop:
- svn_error_clear(svn_stream_puts(feedback_stream, _("done.\n")));
+ cmdline_stream_printf(feedback_stream, scratch_pool, _("done.\n"));
return;
case svn_repos_notify_load_txn_committed:
if (notify->old_revision == SVN_INVALID_REVNUM)
{
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("\n------- Committed revision %ld >>>\n\n"),
- notify->new_revision));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("\n------- Committed revision %ld >>>\n\n"),
+ notify->new_revision);
}
else
{
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("\n------- Committed new rev %ld"
- " (loaded from original rev %ld"
- ") >>>\n\n"), notify->new_revision,
- notify->old_revision));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("\n------- Committed new rev %ld"
+ " (loaded from original rev %ld"
+ ") >>>\n\n"), notify->new_revision,
+ notify->old_revision);
}
return;
@@ -846,27 +881,27 @@ repos_notify_handler(void *baton,
switch (notify->node_action)
{
case svn_node_action_change:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
+ cmdline_stream_printf(feedback_stream, scratch_pool,
_(" * editing path : %s ..."),
- notify->path));
+ notify->path);
break;
case svn_node_action_delete:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
+ cmdline_stream_printf(feedback_stream, scratch_pool,
_(" * deleting path : %s ..."),
- notify->path));
+ notify->path);
break;
case svn_node_action_add:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
+ cmdline_stream_printf(feedback_stream, scratch_pool,
_(" * adding path : %s ..."),
- notify->path));
+ notify->path);
break;
case svn_node_action_replace:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
+ cmdline_stream_printf(feedback_stream, scratch_pool,
_(" * replacing path : %s ..."),
- notify->path));
+ notify->path);
break;
}
@@ -874,32 +909,30 @@ repos_notify_handler(void *baton,
return;
case svn_repos_notify_load_node_done:
- len = 7;
- svn_error_clear(svn_stream_write(feedback_stream, _(" done.\n"), &len));
+ cmdline_stream_printf(feedback_stream, scratch_pool, _(" done.\n"));
return;
case svn_repos_notify_load_copied_node:
- len = 9;
- svn_error_clear(svn_stream_write(feedback_stream, "COPIED...", &len));
+ cmdline_stream_printf(feedback_stream, scratch_pool, "COPIED...");
return;
case svn_repos_notify_load_txn_start:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("<<< Started new transaction, based on "
- "original revision %ld\n"),
- notify->old_revision));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("<<< Started new transaction, based on "
+ "original revision %ld\n"),
+ notify->old_revision);
return;
case svn_repos_notify_load_skipped_rev:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("<<< Skipped original revision %ld\n"),
- notify->old_revision));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("<<< Skipped original revision %ld\n"),
+ notify->old_revision);
return;
case svn_repos_notify_load_normalized_mergeinfo:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _(" removing '\\r' from %s ..."),
- SVN_PROP_MERGEINFO));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _(" removing '\\r' from %s ..."),
+ SVN_PROP_MERGEINFO);
return;
case svn_repos_notify_mutex_acquired:
@@ -908,17 +941,17 @@ repos_notify_handler(void *baton,
return;
case svn_repos_notify_recover_start:
- svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool,
- _("Repository lock acquired.\n"
- "Please wait; recovering the"
- " repository may take some time...\n")));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("Repository lock acquired.\n"
+ "Please wait; recovering the"
+ " repository may take some time...\n"));
return;
case svn_repos_notify_upgrade_start:
- svn_error_clear(svn_stream_puts(feedback_stream,
- _("Repository lock acquired.\n"
- "Please wait; upgrading the"
- " repository may take some time...\n")));
+ cmdline_stream_printf(feedback_stream, scratch_pool,
+ _("Repository lock acquired.\n"
+ "Please wait; upgrading the"
+ " repository may take some time...\n"));
return;
default:
@@ -1644,6 +1677,7 @@ subcommand_info(apr_getopt_t *os, void *
struct svnadmin_opt_state *opt_state = baton;
svn_repos_t *repos;
svn_fs_t *fs;
+ int fs_format;
/* Expect no more arguments. */
SVN_ERR(parse_args(NULL, os, 0, 0, pool));
@@ -1655,7 +1689,7 @@ subcommand_info(apr_getopt_t *os, void *
pool)));
{
- int repos_format, fs_format, minor;
+ int repos_format, minor;
svn_version_t *repos_version, *fs_version;
SVN_ERR(svn_repos_info_format(&repos_format, &repos_version,
repos, pool, pool));
@@ -1664,8 +1698,7 @@ subcommand_info(apr_getopt_t *os, void *
SVN_ERR(svn_fs_info_format(&fs_format, &fs_version,
fs, pool, pool));
- SVN_ERR(svn_cmdline_printf(pool, _("Filesystem Format: %d\n"),
- fs_format));
+ /* fs_format will be printed later. */
SVN_ERR_ASSERT(repos_version->major == SVN_VER_MAJOR);
SVN_ERR_ASSERT(fs_version->major == SVN_VER_MAJOR);
@@ -1681,19 +1714,21 @@ subcommand_info(apr_getopt_t *os, void *
{
apr_hash_t *capabilities_set;
apr_array_header_t *capabilities;
- char *as_string;
+ int i;
SVN_ERR(svn_repos_capabilities(&capabilities_set, repos, pool, pool));
- SVN_ERR(svn_hash_keys(&capabilities, capabilities_set, pool));
- as_string = svn_cstring_join(capabilities, ",", pool);
+ capabilities = svn_sort__hash(capabilities_set,
+ svn_sort_compare_items_lexically,
+ pool);
- /* Delete the trailing comma. */
- if (as_string[0])
- as_string[strlen(as_string)-1] = '\0';
-
- if (capabilities->nelts)
- SVN_ERR(svn_cmdline_printf(pool, _("Repository Capabilities: %s\n"),
- as_string));
+ for (i = 0; i < capabilities->nelts; i++)
+ {
+ svn_sort__item_t *item = &APR_ARRAY_IDX(capabilities, i,
+ svn_sort__item_t);
+ const char *capability = item->key;
+ SVN_ERR(svn_cmdline_printf(pool, _("Repository Capability: %s\n"),
+ capability));
+ }
}
{
@@ -1702,6 +1737,8 @@ subcommand_info(apr_getopt_t *os, void *
SVN_ERR(svn_fs_info(&info, fs, pool, pool));
SVN_ERR(svn_cmdline_printf(pool, _("Filesystem Type: %s\n"),
info->fs_type));
+ SVN_ERR(svn_cmdline_printf(pool, _("Filesystem Format: %d\n"),
+ fs_format));
if (!strcmp(info->fs_type, SVN_FS_TYPE_FSFS))
{
const svn_fs_fsfs_info_t *fsfs_info = (const void *)info;
@@ -1717,12 +1754,15 @@ subcommand_info(apr_getopt_t *os, void *
SVN_ERR(svn_cmdline_printf(pool, _("FSFS Shard Size: %d\n"),
fsfs_info->shard_size));
- if (fsfs_info->min_unpacked_rev + fsfs_info->shard_size > youngest + 1)
- SVN_ERR(svn_cmdline_printf(pool, _("FSFS Packed: yes\n")));
- else if (fsfs_info->min_unpacked_rev)
- SVN_ERR(svn_cmdline_printf(pool, _("FSFS Packed: partly\n")));
- else
- SVN_ERR(svn_cmdline_printf(pool, _("FSFS Packed: no\n")));
+ /* Print packing statistics, if supported by the FS format. */
+ if (fs_format >= SVN_FS_FS__MIN_PACKED_FORMAT && fsfs_info->shard_size)
+ {
+ const int shard_size = fsfs_info->shard_size;
+ const int shards_packed = fsfs_info->min_unpacked_rev / shard_size;
+ const int shards_full = (youngest + 1) / shard_size;
+ SVN_ERR(svn_cmdline_printf(pool, _("FSFS Shards Packed: %d/%d\n"),
+ shards_packed, shards_full));
+ }
}
}
@@ -1733,7 +1773,9 @@ subcommand_info(apr_getopt_t *os, void *
SVN_ERR(svn_fs_info_config_files(&files, fs, pool, pool));
for (i = 0; i < files->nelts; i++)
SVN_ERR(svn_cmdline_printf(pool, _("Configuration File: %s\n"),
- APR_ARRAY_IDX(files, i, const char *)));
+ svn_dirent_local_style(
+ APR_ARRAY_IDX(files, i, const char *),
+ pool)));
}
/* 'svn info' prints an extra newline here, to support multiple targets.
Modified: subversion/branches/fsfs-format7/subversion/svndumpfilter/svndumpfilter.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/svndumpfilter/svndumpfilter.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/svndumpfilter/svndumpfilter.c (original)
+++ subversion/branches/fsfs-format7/subversion/svndumpfilter/svndumpfilter.c Thu May 23 22:04:33 2013
@@ -399,12 +399,11 @@ output_revision(struct revision_baton_t
apr_hash_t *old_props = rb->props;
rb->has_props = TRUE;
rb->props = apr_hash_make(hash_pool);
- svn_hash_sets_fixed_key(rb->props, SVN_PROP_REVISION_DATE,
- svn_hash_gets_fixed_key(old_props,
- SVN_PROP_REVISION_DATE));
- svn_hash_sets_fixed_key(rb->props, SVN_PROP_REVISION_LOG,
- svn_string_create(_("This is an empty revision "
- "for padding."), hash_pool));
+ svn_hash_sets(rb->props, SVN_PROP_REVISION_DATE,
+ svn_hash_gets(old_props, SVN_PROP_REVISION_DATE));
+ svn_hash_sets(rb->props, SVN_PROP_REVISION_LOG,
+ svn_string_create(_("This is an empty revision for "
+ "padding."), hash_pool));
}
/* Now, "rasterize" the props to a string, and append the property
Modified: subversion/branches/fsfs-format7/subversion/svnmucc/svnmucc.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/svnmucc/svnmucc.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/svnmucc/svnmucc.c (original)
+++ subversion/branches/fsfs-format7/subversion/svnmucc/svnmucc.c Thu May 23 22:04:33 2013
@@ -751,7 +751,7 @@ execute(const apr_array_header_t *action
"svnmucc: ", "--config-option"));
cfg_config = svn_hash_gets(config, SVN_CONFIG_CATEGORY_CONFIG);
- if (! svn_hash_gets_fixed_key(revprops, SVN_PROP_REVISION_LOG))
+ if (! svn_hash_gets(revprops, SVN_PROP_REVISION_LOG))
{
svn_string_t *msg = svn_string_create("", pool);
@@ -770,7 +770,7 @@ execute(const apr_array_header_t *action
TRUE, NULL, apr_hash_pool_get(revprops)));
}
- svn_hash_sets_fixed_key(revprops, SVN_PROP_REVISION_LOG, msg);
+ svn_hash_sets(revprops, SVN_PROP_REVISION_LOG, msg);
}
SVN_ERR(create_ra_callbacks(&ra_callbacks, username, password, config_dir,
@@ -1028,13 +1028,13 @@ sanitize_log_sources(apr_hash_t *revprop
return mutually_exclusive_logs_error();
SVN_ERR(svn_utf_cstring_to_utf8(&message, filedata->data, hash_pool));
- svn_hash_sets_fixed_key(revprops, SVN_PROP_REVISION_LOG,
- svn_stringbuf__morph_into_string(filedata));
+ svn_hash_sets(revprops, SVN_PROP_REVISION_LOG,
+ svn_stringbuf__morph_into_string(filedata));
}
else if (message)
{
- svn_hash_sets_fixed_key(revprops, SVN_PROP_REVISION_LOG,
- svn_string_create(message, hash_pool));
+ svn_hash_sets(revprops, SVN_PROP_REVISION_LOG,
+ svn_string_create(message, hash_pool));
}
return SVN_NO_ERROR;
Modified: subversion/branches/fsfs-format7/subversion/svnrdump/load_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/svnrdump/load_editor.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/svnrdump/load_editor.c (original)
+++ subversion/branches/fsfs-format7/subversion/svnrdump/load_editor.c Thu May 23 22:04:33 2013
@@ -635,10 +635,8 @@ new_node_record(void **node_baton,
commit_editor. We'll set them separately using the RA API
after closing the editor (see close_revision). */
- svn_hash_sets_fixed_key(rb->revprop_table,
- SVN_PROP_REVISION_AUTHOR, NULL);
- svn_hash_sets_fixed_key(rb->revprop_table,
- SVN_PROP_REVISION_DATE, NULL);
+ svn_hash_sets(rb->revprop_table, SVN_PROP_REVISION_AUTHOR, NULL);
+ svn_hash_sets(rb->revprop_table, SVN_PROP_REVISION_DATE, NULL);
SVN_ERR(svn_ra__register_editor_shim_callbacks(rb->pb->session,
get_shim_callbacks(rb, rb->pool)));
Modified: subversion/branches/fsfs-format7/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/svnserve/serve.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/svnserve/serve.c (original)
+++ subversion/branches/fsfs-format7/subversion/svnserve/serve.c Thu May 23 22:04:33 2013
@@ -1446,14 +1446,14 @@ static svn_error_t *commit(svn_ra_svn_co
else
{
revprop_table = apr_hash_make(pool);
- svn_hash_sets_fixed_key(revprop_table, SVN_PROP_REVISION_LOG,
- svn_string_create(log_msg, pool));
+ svn_hash_sets(revprop_table, SVN_PROP_REVISION_LOG,
+ svn_string_create(log_msg, pool));
}
/* Get author from the baton, making sure clients can't circumvent
the authentication via the revision props. */
- svn_hash_sets_fixed_key(revprop_table, SVN_PROP_REVISION_AUTHOR,
- b->user ? svn_string_create(b->user, pool) : NULL);
+ svn_hash_sets(revprop_table, SVN_PROP_REVISION_AUTHOR,
+ b->user ? svn_string_create(b->user, pool) : NULL);
ccb.pool = pool;
ccb.new_rev = &new_rev;
Modified: subversion/branches/fsfs-format7/subversion/svnsync/svnsync.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/svnsync/svnsync.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/svnsync/svnsync.c (original)
+++ subversion/branches/fsfs-format7/subversion/svnsync/svnsync.c Thu May 23 22:04:33 2013
@@ -1235,9 +1235,9 @@ replay_rev_started(svn_revnum_t revision
have to set it to at least the empty string. If there's a svn:log
property on this revision, we will write the actual value in the
replay_rev_finished callback. */
- if (! svn_hash_gets_fixed_key(filtered, SVN_PROP_REVISION_LOG))
- svn_hash_sets_fixed_key(filtered, SVN_PROP_REVISION_LOG,
- svn_string_create_empty(pool));
+ if (! svn_hash_gets(filtered, SVN_PROP_REVISION_LOG))
+ svn_hash_sets(filtered, SVN_PROP_REVISION_LOG,
+ svn_string_create_empty(pool));
/* If necessary, normalize encoding and line ending style. Add the number
of properties that required EOL normalization to the overall count
Modified: subversion/branches/fsfs-format7/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/tests/cmdline/merge_tests.py?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/branches/fsfs-format7/subversion/tests/cmdline/merge_tests.py Thu May 23 22:04:33 2013
@@ -19010,7 +19010,6 @@ def conflicted_split_merge_with_resolve(
# depth WC is broken'.
@SkipUnless(server_has_mergeinfo)
@Issues(4367)
-@XFail()
def merge_to_empty_target_merge_to_infinite_target(sbox):
"repeat merge to infinite depth WC conflicts"
@@ -19076,9 +19075,8 @@ def merge_to_empty_target_merge_to_infin
expected_output = wc.State(A_COPY_path, {
'B/B1' : Item(status='A '),
'B/B1/test.txt' : Item(status='A '),
- 'B/B1/B1a' : Item(status='A '),
+ 'B/B1/B1a' : Item(status='D ', prev_status='A '),
'B/B1/B1a/test.txt' : Item(status='A '),
- 'B/B1/B1a' : Item(status='D '),
})
expected_mergeinfo_output = wc.State(A_COPY_path, {
'' : Item(status=' U'),
@@ -19155,7 +19153,7 @@ def merge_to_empty_target_merge_to_infin
None, 1, 0)
# Commit the merge.
- sbox.simple_commit()
+ #sbox.simple_commit()
########################################################################
# Run the tests
Modified: subversion/branches/fsfs-format7/subversion/tests/libsvn_client/client-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/tests/libsvn_client/client-test.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/tests/libsvn_client/client-test.c (original)
+++ subversion/branches/fsfs-format7/subversion/tests/libsvn_client/client-test.c Thu May 23 22:04:33 2013
@@ -400,7 +400,7 @@ test_patch(const svn_test_opts_t *opts,
SVN_ERR(svn_io_file_write(patch_file, unidiff_patch[i], &len, pool));
SVN_TEST_ASSERT(len == strlen(unidiff_patch[i]));
}
- SVN_ERR(svn_io_file_flush_to_disk(patch_file, pool));
+ SVN_ERR(svn_io_file_flush(patch_file, pool));
/* Apply the patch. */
pcb.patched_tempfiles = apr_hash_make(pool);
Modified: subversion/branches/fsfs-format7/subversion/tests/libsvn_diff/diff-diff3-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/tests/libsvn_diff/diff-diff3-test.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/tests/libsvn_diff/diff-diff3-test.c (original)
+++ subversion/branches/fsfs-format7/subversion/tests/libsvn_diff/diff-diff3-test.c Thu May 23 22:04:33 2013
@@ -2947,7 +2947,7 @@ struct svn_test_descriptor_t test_funcs[
SVN_TEST_PASS2(test_identical_suffix,
"identical suffix starts at the boundary of a chunk"),
SVN_TEST_PASS2(test_token_compare,
- "compare tokes at the chunk boundary"),
+ "compare tokens at the chunk boundary"),
SVN_TEST_PASS2(two_way_issue_3362_v1,
"2-way issue #3362 test v1"),
SVN_TEST_PASS2(two_way_issue_3362_v2,
Modified: subversion/branches/fsfs-format7/subversion/tests/libsvn_fs_fs/fs-pack-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/tests/libsvn_fs_fs/fs-pack-test.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/tests/libsvn_fs_fs/fs-pack-test.c (original)
+++ subversion/branches/fsfs-format7/subversion/tests/libsvn_fs_fs/fs-pack-test.c Thu May 23 22:04:33 2013
@@ -71,17 +71,8 @@ write_format(const char *path,
contents = apr_psprintf(pool, "%d\n", format);
}
- {
- const char *path_tmp;
-
- SVN_ERR(svn_io_write_unique(&path_tmp,
- svn_dirent_dirname(path, pool),
- contents, strlen(contents),
- svn_io_file_del_none, pool));
-
- /* rename the temp file as the real destination */
- SVN_ERR(svn_io_file_rename(path_tmp, path, pool));
- }
+ SVN_ERR(svn_io_write_atomic(path, contents, strlen(contents),
+ NULL /* copy perms */, pool));
/* And set the perms to make it read only */
return svn_io_set_file_read_only(path, FALSE, pool);
Modified: subversion/branches/fsfs-format7/subversion/tests/libsvn_subr/auth-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/tests/libsvn_subr/auth-test.c?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/tests/libsvn_subr/auth-test.c (original)
+++ subversion/branches/fsfs-format7/subversion/tests/libsvn_subr/auth-test.c Thu May 23 22:04:33 2013
@@ -319,13 +319,7 @@ struct svn_test_descriptor_t test_funcs[
SVN_TEST_NULL,
SVN_TEST_PASS2(test_platform_specific_auth_providers,
"test retrieving platform-specific auth providers"),
-#ifndef SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE
SVN_TEST_PASS2(test_auth_clear,
"test svn_auth_clear()"),
-#else
- SVN_TEST_WIMP(test_auth_clear,
- "test svn_auth_clear()",
- "Needs testing with SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE"),
-#endif
SVN_TEST_NULL
};
Modified: subversion/branches/fsfs-format7/tools/dist/backport.pl
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/tools/dist/backport.pl?rev=1485869&r1=1485868&r2=1485869&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/tools/dist/backport.pl (original)
+++ subversion/branches/fsfs-format7/tools/dist/backport.pl Thu May 23 22:04:33 2013
@@ -123,7 +123,9 @@ fi
$SVN diff > $backupfile
cp STATUS STATUS.$$
$SVNq revert -R .
-mv STATUS.$$ STATUS
+if $MAY_COMMIT ; then
+ mv STATUS.$$ STATUS
+fi
$SVNq up
$SVNq merge $mergeargs
if [ "`$SVN status -q | wc -l`" -eq 1 ]; then
@@ -161,9 +163,9 @@ else
fi
EOF
- open SHELL, '|-', qw#/bin/sh# or die $!;
+ open SHELL, '|-', qw#/bin/sh# or die "$! (in '$entry{header}')";
print SHELL $script;
- close SHELL or warn "$0: sh($?): $!";
+ close SHELL or warn "$0: sh($?): $! (in '$entry{header}')";
unlink $backupfile if -z $backupfile;
unlink $logmsg_filename unless $? or $!;