You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2014/02/27 13:51:06 UTC
svn commit: r1572541 [2/2] - in /subversion/branches/fsfs-lock-many: ./
build/generator/ build/generator/templates/
subversion/bindings/javahl/native/ subversion/include/
subversion/include/private/ subversion/libsvn_client/ subversion/libsvn_fs/
subve...
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_ra_svn/client.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_ra_svn/client.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_ra_svn/client.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_ra_svn/client.c Thu Feb 27 12:51:04 2014
@@ -1674,13 +1674,13 @@ perform_ra_svn_log(svn_error_t **outer_e
else
want_custom_revprops = TRUE;
}
- SVN_ERR(svn_ra_svn__write_tuple(conn, pool, "!)n)",
- (apr_uint64_t) move_behavior));
+ SVN_ERR(svn_ra_svn__write_tuple(conn, pool, "!)w)",
+ svn_move_behavior_to_word(move_behavior)));
}
else
{
- SVN_ERR(svn_ra_svn__write_tuple(conn, pool, "!w()n)", "all-revprops",
- (apr_uint64_t) move_behavior));
+ SVN_ERR(svn_ra_svn__write_tuple(conn, pool, "!w()w)", "all-revprops",
+ svn_move_behavior_to_word(move_behavior)));
want_author = TRUE;
want_date = TRUE;
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_ra_svn/protocol
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_ra_svn/protocol?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_ra_svn/protocol (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_ra_svn/protocol Thu Feb 27 12:51:04 2014
@@ -383,12 +383,11 @@ second place for auth-request point as n
? limit:number
? include-merged-revisions:bool
all-revprops | revprops ( revprop:string ... )
- ? move-behavior:number )
+ ? move-behavior:word )
Before sending response, server sends log entries, ending with "done".
If a client does not want to specify a limit, it should send 0 as the
limit parameter. rev-props excludes author, date, and log; they are
sent separately for backwards-compatibility.
- Move-behavior is encoded like enum svn_move_behavior_t.
log-entry: ( ( change:changed-path-entry ... ) rev:number
[ author:string ] [ date:string ] [ message:string ]
? has-children:bool invalid-revnum:bool
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_repos/delta.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_repos/delta.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_repos/delta.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_repos/delta.c Thu Feb 27 12:51:04 2014
@@ -523,8 +523,9 @@ delta_proplists(struct context *c,
svn_boolean_t changed;
/* Is this deltification worth our time? */
- SVN_ERR(svn_fs_props_changed(&changed, c->target_root, target_path,
- c->source_root, source_path, subpool));
+ SVN_ERR(svn_fs_props_changed2(&changed, c->target_root, target_path,
+ c->source_root, source_path, TRUE,
+ subpool));
if (! changed)
goto cleanup;
@@ -604,62 +605,8 @@ svn_repos__compare_files(svn_boolean_t *
const char *path2,
apr_pool_t *pool)
{
- svn_filesize_t size1, size2;
- svn_checksum_t *checksum1, *checksum2;
- svn_stream_t *stream1, *stream2;
- svn_boolean_t same;
-
- /* If the filesystem claims the things haven't changed, then they
- haven't changed. */
- SVN_ERR(svn_fs_contents_changed(changed_p, root1, path1,
- root2, path2, pool));
- if (!*changed_p)
- return SVN_NO_ERROR;
-
- /* If the SHA1 checksums match for these things, we'll claim they
- have the same contents. (We don't give quite as much weight to
- MD5 checksums.) */
- SVN_ERR(svn_fs_file_checksum(&checksum1, svn_checksum_sha1,
- root1, path1, FALSE, pool));
- SVN_ERR(svn_fs_file_checksum(&checksum2, svn_checksum_sha1,
- root2, path2, FALSE, pool));
- if (checksum1 && checksum2)
- {
- *changed_p = !svn_checksum_match(checksum1, checksum2);
- return SVN_NO_ERROR;
- }
-
- /* From this point on, our default answer is "Nothing's changed". */
- *changed_p = FALSE;
-
- /* Different filesizes means the contents are different. */
- SVN_ERR(svn_fs_file_length(&size1, root1, path1, pool));
- SVN_ERR(svn_fs_file_length(&size2, root2, path2, pool));
- if (size1 != size2)
- {
- *changed_p = TRUE;
- return SVN_NO_ERROR;
- }
-
- /* Different MD5 checksums means the contents are different. */
- SVN_ERR(svn_fs_file_checksum(&checksum1, svn_checksum_md5, root1, path1,
- FALSE, pool));
- SVN_ERR(svn_fs_file_checksum(&checksum2, svn_checksum_md5, root2, path2,
- FALSE, pool));
- if (! svn_checksum_match(checksum1, checksum2))
- {
- *changed_p = TRUE;
- return SVN_NO_ERROR;
- }
-
- /* And finally, different contents means the ... uh ... contents are
- different. */
- SVN_ERR(svn_fs_file_contents(&stream1, root1, path1, pool));
- SVN_ERR(svn_fs_file_contents(&stream2, root2, path2, pool));
- SVN_ERR(svn_stream_contents_same2(&same, stream1, stream2, pool));
- *changed_p = !same;
-
- return SVN_NO_ERROR;
+ return svn_error_trace(svn_fs_contents_changed2(changed_p, root1, path1,
+ root2, path2, TRUE, pool));
}
@@ -686,22 +633,10 @@ delta_files(struct context *c,
if (source_path)
{
- /* Is this delta calculation worth our time? If we are ignoring
- ancestry, then our editor implementor isn't concerned by the
- theoretical differences between "has contents which have not
- changed with respect to" and "has the same actual contents
- as". We'll do everything we can to avoid transmitting even
- an empty text-delta in that case. */
- if (c->ignore_ancestry)
- SVN_ERR(svn_repos__compare_files(&changed,
- c->target_root, target_path,
- c->source_root, source_path,
- subpool));
- else
- SVN_ERR(svn_fs_contents_changed(&changed,
- c->target_root, target_path,
- c->source_root, source_path,
- subpool));
+ SVN_ERR(svn_fs_contents_changed2(&changed,
+ c->target_root, target_path,
+ c->source_root, source_path,
+ TRUE, subpool));
}
else
{
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_repos/dump.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_repos/dump.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_repos/dump.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_repos/dump.c Thu Feb 27 12:51:04 2014
@@ -857,13 +857,13 @@ dump_node(struct edit_baton *eb,
svn_fs_root_fs(eb->fs_root),
compare_rev, pool));
- SVN_ERR(svn_fs_props_changed(&must_dump_props,
- compare_root, compare_path,
- eb->fs_root, path, pool));
+ SVN_ERR(svn_fs_props_changed2(&must_dump_props,
+ compare_root, compare_path,
+ eb->fs_root, path, TRUE, pool));
if (kind == svn_node_file)
- SVN_ERR(svn_fs_contents_changed(&must_dump_text,
- compare_root, compare_path,
- eb->fs_root, path, pool));
+ SVN_ERR(svn_fs_contents_changed2(&must_dump_text,
+ compare_root, compare_path,
+ eb->fs_root, path, TRUE, pool));
}
else if (action == svn_node_action_replace)
{
@@ -1009,16 +1009,17 @@ dump_node(struct edit_baton *eb,
/* Need to decide if the copied node had any extra textual or
property mods as well. */
- SVN_ERR(svn_fs_props_changed(&must_dump_props,
- compare_root, compare_path,
- eb->fs_root, path, pool));
+ SVN_ERR(svn_fs_props_changed2(&must_dump_props,
+ compare_root, compare_path,
+ eb->fs_root, path, TRUE, pool));
if (kind == svn_node_file)
{
svn_checksum_t *checksum;
const char *hex_digest;
- SVN_ERR(svn_fs_contents_changed(&must_dump_text,
- compare_root, compare_path,
- eb->fs_root, path, pool));
+ SVN_ERR(svn_fs_contents_changed2(&must_dump_text,
+ compare_root, compare_path,
+ eb->fs_root, path, TRUE,
+ pool));
SVN_ERR(svn_fs_file_checksum(&checksum, svn_checksum_md5,
compare_root, compare_path,
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_repos/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_repos/log.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_repos/log.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_repos/log.c Thu Feb 27 12:51:04 2014
@@ -805,23 +805,16 @@ fs_mergeinfo_changed(svn_mergeinfo_catal
### modifies, NULL otherwise). -- cmpilato */
/* If the path was added or replaced, see if it was created via
- copy. If so, that will tell us where its previous location
- was. If not, there's no previous location to examine. */
+ copy. If so, set BASE_REV/BASE_PATH to its previous location.
+ If not, there's no previous location to examine -- leave
+ BASE_REV/BASE_PATH = -1/NULL. */
case svn_fs_path_change_add:
case svn_fs_path_change_replace:
case svn_fs_path_change_move:
case svn_fs_path_change_movereplace:
{
- const char *copyfrom_path;
- svn_revnum_t copyfrom_rev;
-
- SVN_ERR(svn_fs_copied_from(©from_rev, ©from_path,
+ SVN_ERR(svn_fs_copied_from(&base_rev, &base_path,
root, changed_path, iterpool));
- if (copyfrom_path && SVN_IS_VALID_REVNUM(copyfrom_rev))
- {
- base_path = apr_pstrdup(scratch_pool, copyfrom_path);
- base_rev = copyfrom_rev;
- }
break;
}
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_repos/reporter.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_repos/reporter.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_repos/reporter.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_repos/reporter.c Thu Feb 27 12:51:04 2014
@@ -576,8 +576,8 @@ delta_proplists(report_baton_t *b, svn_r
SVN_ERR(get_source_root(b, &s_root, s_rev));
/* Is this deltification worth our time? */
- SVN_ERR(svn_fs_props_changed(&changed, b->t_root, t_path, s_root,
- s_path, pool));
+ SVN_ERR(svn_fs_props_changed2(&changed, b->t_root, t_path, s_root,
+ s_path, TRUE, pool));
if (! changed)
return SVN_NO_ERROR;
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_repos/rev_hunt.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_repos/rev_hunt.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_repos/rev_hunt.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_repos/rev_hunt.c Thu Feb 27 12:51:04 2014
@@ -1365,9 +1365,9 @@ send_path_revision(struct path_revision
/* Check if the contents changed. */
/* Special case: In the first revision, we always provide a delta. */
if (sb->last_root)
- SVN_ERR(svn_fs_contents_changed(&contents_changed, sb->last_root,
- sb->last_path, root, path_rev->path,
- sb->iterpool));
+ SVN_ERR(svn_fs_contents_changed2(&contents_changed, sb->last_root,
+ sb->last_path, root, path_rev->path,
+ FALSE, sb->iterpool));
else
contents_changed = TRUE;
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/hash.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/hash.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/hash.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/hash.c Thu Feb 27 12:51:04 2014
@@ -559,23 +559,6 @@ svn_hash_from_cstring_keys(apr_hash_t **
}
-#if !APR_VERSION_AT_LEAST(1, 3, 0)
-void
-svn_hash__clear(apr_hash_t *hash)
-{
- apr_hash_index_t *hi;
- const void *key;
- apr_ssize_t klen;
-
- for (hi = apr_hash_first(NULL, hash); hi; hi = apr_hash_next(hi))
- {
- apr_hash_this(hi, &key, &klen, NULL);
- apr_hash_set(hash, key, klen, NULL);
- }
-}
-#endif
-
-
/*** Specialized getter APIs ***/
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/io.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/io.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/io.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/io.c Thu Feb 27 12:51:04 2014
@@ -3578,8 +3578,6 @@ svn_io_file_aligned_seek(apr_file_t *fil
if (block_size == 0)
block_size = apr_default_buffer_size;
- /* on old APRs, we are simply stuck with 4k blocks */
-#if APR_VERSION_AT_LEAST(1,3,0)
file_buffer_size = apr_file_buffer_size_get(file);
/* don't try to set a buffer size for non-buffered files! */
@@ -3600,7 +3598,6 @@ svn_io_file_aligned_seek(apr_file_t *fil
fill_buffer = TRUE;
}
else
-#endif
{
aligned_offset = offset - (offset % file_buffer_size);
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/sorts.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/sorts.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/sorts.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/sorts.c Thu Feb 27 12:51:04 2014
@@ -471,10 +471,10 @@ svn_priority_queue__pop(svn_priority_que
{
if (queue->elements->nelts)
{
- memcpy(queue->elements->elts,
- queue->elements->elts + (queue->elements->nelts - 1)
- * queue->elements->elt_size,
- queue->elements->elt_size);
+ memmove(queue->elements->elts,
+ queue->elements->elts
+ + (queue->elements->nelts - 1) * queue->elements->elt_size,
+ queue->elements->elt_size);
--queue->elements->nelts;
heap_bubble_up(queue, 0);
}
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/string.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/string.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/string.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/string.c Thu Feb 27 12:51:04 2014
@@ -1039,19 +1039,6 @@ svn_cstring_atoi(int *n, const char *str
return SVN_NO_ERROR;
}
-
-apr_status_t
-svn__strtoff(apr_off_t *offset, const char *buf, char **end, int base)
-{
-#if !APR_VERSION_AT_LEAST(1,0,0)
- errno = 0;
- *offset = strtol(buf, end, base);
- return APR_FROM_OS_ERROR(errno);
-#else
- return apr_strtoff(offset, buf, end, base);
-#endif
-}
-
unsigned long
svn__strtoul(const char* buffer, const char** end)
{
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/types.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/types.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/types.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/types.c Thu Feb 27 12:51:04 2014
@@ -350,3 +350,39 @@ svn_location_segment_dup(const svn_locat
new_segment->path = apr_pstrdup(pool, segment->path);
return new_segment;
}
+
+const char *
+svn_move_behavior_to_word(svn_move_behavior_t value)
+{
+ switch (value)
+ {
+ case svn_move_behavior_no_moves:
+ return "none";
+ case svn_move_behavior_explicit_moves:
+ return "explicit";
+ case svn_move_behavior_auto_moves:
+ return "auto";
+ default:
+ return "INVALID-MOVE-BEHAVIOR";
+ }
+}
+
+svn_move_behavior_t
+svn_move_behavior_from_word(const char *word)
+{
+ if (word)
+ {
+ if (strcmp(word, "none") == 0)
+ return svn_move_behavior_no_moves;
+ if (strcmp(word, "explicit") == 0)
+ return svn_move_behavior_explicit_moves;
+ if (strcmp(word, "auto") == 0)
+ return svn_move_behavior_auto_moves;
+ }
+
+ /* There's no special value for invalid move behavior, and no convincing
+ reason to make one yet, so just fall back to "explicit moves only",
+ i.e. no conversion either way.
+ */
+ return svn_move_behavior_explicit_moves;
+}
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf.c Thu Feb 27 12:51:04 2014
@@ -184,16 +184,10 @@ static APR_INLINE void*
atomic_swap(void * volatile * mem, void *new_value)
{
#if APR_HAS_THREADS
-#if APR_VERSION_AT_LEAST(1,3,0)
/* Cast is necessary because of APR bug:
https://issues.apache.org/bugzilla/show_bug.cgi?id=50731 */
return apr_atomic_xchgptr((volatile void **)mem, new_value);
#else
- /* old APRs don't support atomic swaps. Simply return the
- * input to the caller for further proccessing. */
- return new_value;
-#endif
-#else
/* no threads - no sync. necessary */
void *old_value = (void*)*mem;
*mem = new_value;
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/status.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/status.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/status.c Thu Feb 27 12:51:04 2014
@@ -284,7 +284,9 @@ get_repos_root_url_relpath(const char **
db, local_abspath,
result_pool, scratch_pool));
}
- else if (info->have_base)
+ else if (info->status == svn_wc__db_status_deleted
+ && !info->have_more_work
+ && info->have_base)
{
SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, NULL, repos_relpath,
repos_root_url, repos_uuid, NULL, NULL,
@@ -293,6 +295,33 @@ get_repos_root_url_relpath(const char **
db, local_abspath,
result_pool, scratch_pool));
}
+ else if (info->status == svn_wc__db_status_deleted)
+ {
+ const char *work_del_abspath;
+ const char *add_abspath;
+
+ /* Handles working DELETE and the special case where there is just
+ svn_wc__db_status_not_present in WORKING */
+
+ SVN_ERR(svn_wc__db_scan_deletion(NULL, NULL, &work_del_abspath, NULL,
+ db, local_abspath,
+ scratch_pool, scratch_pool));
+
+ /* The parent of what has been deleted must be added */
+ add_abspath = svn_dirent_dirname(work_del_abspath, scratch_pool);
+
+ SVN_ERR(svn_wc__db_scan_addition(NULL, NULL, repos_relpath,
+ repos_root_url, repos_uuid, NULL,
+ NULL, NULL, NULL,
+ db, add_abspath,
+ result_pool, scratch_pool));
+
+ *repos_relpath = svn_relpath_join(*repos_relpath,
+ svn_dirent_skip_ancestor(
+ add_abspath,
+ local_abspath),
+ result_pool);
+ }
else
{
*repos_relpath = NULL;
Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_wcroot.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_wcroot.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_wcroot.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_wcroot.c Thu Feb 27 12:51:04 2014
@@ -687,8 +687,12 @@ try_symlink_as_dir:
svn_error_clear(err);
*wcroot = NULL;
}
- else
- SVN_ERR(err);
+ else if (err)
+ {
+ /* Close handle if we are not going to use it to support
+ upgrading with exclusive wc locking. */
+ return svn_error_compose_create(err, svn_sqlite__close(sdb));
+ }
}
else
{
Modified: subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/reports/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/reports/log.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/reports/log.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/reports/log.c Thu Feb 27 12:51:04 2014
@@ -412,21 +412,8 @@ dav_svn__log_report(const dav_resource *
}
else if (strcmp(child->name, "move-behavior") == 0)
{
- int move_behavior_param;
- serr = svn_cstring_atoi(&move_behavior_param,
- dav_xml_get_cdata(child, resource->pool, 1));
- if (serr)
- return dav_svn__convert_err(serr, HTTP_BAD_REQUEST,
- "Malformed CDATA in element "
- "\"move-behavior\"", resource->pool);
-
- if ( move_behavior_param < 0
- || move_behavior_param > svn_move_behavior_auto_moves)
- return dav_svn__convert_err(serr, HTTP_BAD_REQUEST,
- "Invalid CDATA in element "
- "\"move-behavior\"", resource->pool);
-
- move_behavior = (svn_move_behavior_t) move_behavior_param;
+ const char *value = dav_xml_get_cdata(child, resource->pool, 1);
+ move_behavior = svn_move_behavior_from_word(value);
}
/* else unknown element; skip it */
}
Modified: subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/util.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/util.c Thu Feb 27 12:51:04 2014
@@ -37,7 +37,6 @@
#include "dav_svn.h"
#include "private/svn_fspath.h"
-#include "private/svn_string_private.h"
dav_error *
dav_svn__new_error(apr_pool_t *pool,
@@ -750,7 +749,7 @@ request_body_to_string(svn_string_t **re
content_length_str = apr_table_get(r->headers_in, "Content-Length");
if (content_length_str)
{
- if (svn__strtoff(&content_length, content_length_str, &endp, 10)
+ if (apr_strtoff(&content_length, content_length_str, &endp, 10)
|| endp == content_length_str || *endp || content_length < 0)
{
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, "Invalid Content-Length");
Modified: subversion/branches/fsfs-lock-many/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/cl.h?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/cl.h (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/cl.h Thu Feb 27 12:51:04 2014
@@ -244,6 +244,7 @@ typedef struct svn_cl__opt_state_t
svn_boolean_t remove_unversioned;/* remove unversioned items */
svn_boolean_t remove_ignored; /* remove ignored items */
svn_boolean_t no_newline; /* do not output the trailing newline */
+ svn_boolean_t show_passwords; /* show cached passwords */
} svn_cl__opt_state_t;
@@ -257,6 +258,7 @@ typedef struct svn_cl__cmd_baton_t
/* Declare all the command procedures */
svn_opt_subcommand_t
svn_cl__add,
+ svn_cl__auth,
svn_cl__blame,
svn_cl__cat,
svn_cl__changelist,
Modified: subversion/branches/fsfs-lock-many/subversion/svn/help-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/help-cmd.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/help-cmd.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/help-cmd.c Thu Feb 27 12:51:04 2014
@@ -31,6 +31,7 @@
#include "svn_hash.h"
#include "svn_string.h"
#include "svn_config.h"
+#include "svn_dirent_uri.h"
#include "svn_error.h"
#include "cl.h"
@@ -45,6 +46,7 @@ svn_cl__help(apr_getopt_t *os,
{
svn_cl__opt_state_t *opt_state = NULL;
svn_stringbuf_t *version_footer = NULL;
+ const char *config_path;
char help_header[] =
N_("usage: svn <subcommand> [options] [args]\n"
@@ -132,6 +134,46 @@ svn_cl__help(apr_getopt_t *os,
version_footer = svn_stringbuf_create(ra_desc_start, pool);
SVN_ERR(svn_ra_print_modules(version_footer, pool));
+ /*
+ * Show auth creds storage providers.
+ */
+ SVN_ERR(svn_config_get_user_config_path(&config_path,
+ opt_state ? opt_state->config_dir
+ : NULL,
+ NULL,
+ pool));
+ svn_stringbuf_appendcstr(version_footer,
+ _("\nThe following authentication credential caches are available:\n\n"));
+
+ /*### There is no API to query available providers at run time. */
+#if (defined(WIN32) && !defined(__MINGW32__))
+ version_footer =
+ svn_stringbuf_create(apr_psprintf(pool, _("%s* Wincrypt cache in %s\n"),
+ version_footer->data,
+ svn_dirent_local_style(config_path,
+ pool)),
+ pool);
+#elif !defined(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE)
+ version_footer =
+ svn_stringbuf_create(apr_psprintf(pool, _("%s* Plaintext cache in %s\n"),
+ version_footer->data,
+ svn_dirent_local_style(config_path,
+ pool)),
+ pool);
+#endif
+#ifdef SVN_HAVE_GNOME_KEYRING
+ svn_stringbuf_appendcstr(version_footer, "* Gnome Keyring\n");
+#endif
+#ifdef SVN_HAVE_GPG_AGENT
+ svn_stringbuf_appendcstr(version_footer, "* GPG-Agent\n");
+#endif
+#ifdef SVN_HAVE_KEYCHAIN_SERVICES
+ svn_stringbuf_appendcstr(version_footer, "* Mac OS X Keychain\n");
+#endif
+#ifdef SVN_HAVE_KWALLET
+ svn_stringbuf_appendcstr(version_footer, "* KWallet (KDE)\n");
+#endif
+
return svn_opt_print_help4(os,
"svn", /* ### erm, derive somehow? */
opt_state ? opt_state->version : FALSE,
Modified: subversion/branches/fsfs-lock-many/subversion/svn/svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/svn.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/svn.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/svn.c Thu Feb 27 12:51:04 2014
@@ -137,7 +137,8 @@ typedef enum svn_cl__longopt_t {
opt_mergeinfo_log,
opt_remove_unversioned,
opt_remove_ignored,
- opt_no_newline
+ opt_no_newline,
+ opt_show_passwords
} svn_cl__longopt_t;
@@ -279,7 +280,7 @@ const apr_getopt_option_t svn_cl__option
"ARG may be one of 'LF', 'CR', 'CRLF'")},
{"limit", 'l', 1, N_("maximum number of log entries")},
{"no-unlock", opt_no_unlock, 0, N_("don't unlock the targets")},
- {"remove", opt_remove, 0, N_("remove changelist association")},
+ {"remove", opt_remove, 0, N_("remove changelist association or auth credential")},
{"changelist", opt_changelist, 1,
N_("operate only on members of changelist ARG")},
{"keep-changelists", opt_keep_changelists, 0,
@@ -391,6 +392,7 @@ const apr_getopt_option_t svn_cl__option
N_("remove unversioned items")},
{"remove-ignored", opt_remove_ignored, 0, N_("remove ignored items")},
{"no-newline", opt_no_newline, 0, N_("do not output trailing newline")},
+ {"show-passwords", opt_show_passwords, 0, N_("show cached passwords")},
/* Long-opt Aliases
*
@@ -445,6 +447,29 @@ const svn_opt_subcommand_desc2_t svn_cl_
opt_no_autoprops, opt_parents },
{{opt_parents, N_("add intermediate parents")}} },
+ { "auth", svn_cl__auth, {0}, N_
+ ("Manage cached authentication credentials.\n"
+ "usage: 1. svn auth [PATTERN ...]\n"
+ "usage: 2. svn auth --remove PATTERN [PATTERN ...]\n"
+ "\n"
+ " With no arguments, list all cached authentication credentials.\n"
+ " Authentication credentials include usernames, passwords,\n"
+ " SSL certificates, and SSL client-certificate passphrases.\n"
+ " If PATTERN is specified, only list credentials with attributes matching one\n"
+ " or more patterns. With the --remove option, remove cached authentication\n"
+ " credentials matching one or more patterns.\n"
+ "\n"
+ " If more than one pattern is specified credentials are considered only they\n"
+ " match all specified patterns. Patterns are matched case-sensitively and may\n"
+ " contain glob wildcards:\n"
+ " ? matches any single character\n"
+ " * matches a sequence of arbitrary characters\n"
+ " [abc] matches any of the characters listed inside the brackets\n"
+ " Note that wildcards will usually need to be quoted or escaped on the\n"
+ " command line because many command shells will interfere by trying to\n"
+ " expand them.\n"),
+ { opt_remove, opt_show_passwords } },
+
{ "blame", svn_cl__blame, {"praise", "annotate", "ann"}, N_
("Output the content of specified files or\n"
"URLs with revision and author information in-line.\n"
@@ -2306,6 +2331,9 @@ sub_main(int *exit_code, int argc, const
case opt_no_newline:
opt_state.no_newline = TRUE;
break;
+ case opt_show_passwords:
+ opt_state.show_passwords = TRUE;
+ break;
default:
/* Hmmm. Perhaps this would be a good place to squirrel away
opts that commands like svn diff might need. Hmmm indeed. */
Modified: subversion/branches/fsfs-lock-many/subversion/svnadmin/svnadmin.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnadmin/svnadmin.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnadmin/svnadmin.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnadmin/svnadmin.c Thu Feb 27 12:51:04 2014
@@ -2031,6 +2031,7 @@ subcommand_lslocks(apr_getopt_t *os, voi
const char *fs_path = "/";
apr_hash_t *locks;
apr_hash_index_t *hi;
+ apr_pool_t *iterpool = svn_pool_create(pool);
SVN_ERR(svn_opt__args_to_target_array(&targets, os,
apr_array_make(pool, 0,
@@ -2055,20 +2056,24 @@ subcommand_lslocks(apr_getopt_t *os, voi
svn_lock_t *lock = svn__apr_hash_index_val(hi);
int comment_lines = 0;
- cr_date = svn_time_to_human_cstring(lock->creation_date, pool);
+ svn_pool_clear(iterpool);
+
+ SVN_ERR(check_cancel(NULL));
+
+ cr_date = svn_time_to_human_cstring(lock->creation_date, iterpool);
if (lock->expiration_date)
- exp_date = svn_time_to_human_cstring(lock->expiration_date, pool);
+ exp_date = svn_time_to_human_cstring(lock->expiration_date, iterpool);
if (lock->comment)
comment_lines = svn_cstring_count_newlines(lock->comment) + 1;
- SVN_ERR(svn_cmdline_printf(pool, _("Path: %s\n"), path));
- SVN_ERR(svn_cmdline_printf(pool, _("UUID Token: %s\n"), lock->token));
- SVN_ERR(svn_cmdline_printf(pool, _("Owner: %s\n"), lock->owner));
- SVN_ERR(svn_cmdline_printf(pool, _("Created: %s\n"), cr_date));
- SVN_ERR(svn_cmdline_printf(pool, _("Expires: %s\n"), exp_date));
- SVN_ERR(svn_cmdline_printf(pool,
+ SVN_ERR(svn_cmdline_printf(iterpool, _("Path: %s\n"), path));
+ SVN_ERR(svn_cmdline_printf(iterpool, _("UUID Token: %s\n"), lock->token));
+ SVN_ERR(svn_cmdline_printf(iterpool, _("Owner: %s\n"), lock->owner));
+ SVN_ERR(svn_cmdline_printf(iterpool, _("Created: %s\n"), cr_date));
+ SVN_ERR(svn_cmdline_printf(iterpool, _("Expires: %s\n"), exp_date));
+ SVN_ERR(svn_cmdline_printf(iterpool,
Q_("Comment (%i line):\n%s\n\n",
"Comment (%i lines):\n%s\n\n",
comment_lines),
@@ -2076,6 +2081,8 @@ subcommand_lslocks(apr_getopt_t *os, voi
lock->comment ? lock->comment : ""));
}
+ svn_pool_destroy(iterpool);
+
return SVN_NO_ERROR;
}
Modified: subversion/branches/fsfs-lock-many/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnserve/serve.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnserve/serve.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnserve/serve.c Thu Feb 27 12:51:04 2014
@@ -2192,7 +2192,8 @@ static svn_error_t *log_cmd(svn_ra_svn_c
char *revprop_word;
svn_ra_svn_item_t *elt;
int i;
- apr_uint64_t limit, include_merged_revs_param, move_behavior_param;
+ apr_uint64_t limit, include_merged_revs_param;
+ const char *move_behavior_param;
svn_move_behavior_t move_behavior;
log_baton_t lb;
authz_baton_t ab;
@@ -2200,7 +2201,7 @@ static svn_error_t *log_cmd(svn_ra_svn_c
ab.server = b;
ab.conn = conn;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "l(?r)(?r)bb?n?Bwl?n", &paths,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "l(?r)(?r)bb?n?Bwl?w", &paths,
&start_rev, &end_rev, &send_changed_paths,
&strict_node, &limit,
&include_merged_revs_param,
@@ -2237,17 +2238,7 @@ static svn_error_t *log_cmd(svn_ra_svn_c
_("Unknown revprop word '%s' in log command"),
revprop_word);
- if (move_behavior_param == SVN_RA_SVN_UNSPECIFIED_NUMBER)
- move_behavior = svn_move_behavior_no_moves;
- else if (move_behavior_param <= svn_move_behavior_auto_moves)
- move_behavior = (svn_move_behavior_t) move_behavior_param;
- else
- return svn_error_createf(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
- apr_psprintf(pool,
- _("Invalid move_behavior value"
- " %%%s in log command"),
- APR_UINT64_T_FMT),
- move_behavior_param);
+ move_behavior = svn_move_behavior_from_word(move_behavior_param);
/* If we got an unspecified number then the user didn't send us anything,
so we assume no limit. If it's larger than INT_MAX then someone is
Modified: subversion/branches/fsfs-lock-many/subversion/svnserve/svnserve.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnserve/svnserve.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnserve/svnserve.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnserve/svnserve.c Thu Feb 27 12:51:04 2014
@@ -58,18 +58,8 @@
#include "private/svn_mutex.h"
#include "private/svn_subr_private.h"
-/* Alas! old APR-Utils don't provide thread pools */
#if APR_HAS_THREADS
-# if APR_VERSION_AT_LEAST(1,3,0)
# include <apr_thread_pool.h>
-# define HAVE_THREADPOOLS 1
-# define THREAD_ERROR_MSG _("Can't push task")
-# else
-# define HAVE_THREADPOOLS 0
-# define THREAD_ERROR_MSG _("Can't create thread")
-# endif
-#else
-# define HAVE_THREADPOOLS 0
#endif
#include "winservice.h"
@@ -540,8 +530,6 @@ serve_socket(connection_t *connection,
There should be at most THREADPOOL_MAX_SIZE such pools. */
static svn_root_pools__t *connection_pools;
-#if HAVE_THREADPOOLS
-
/* The global thread pool serving all connections. */
static apr_thread_pool_t *threads;
@@ -586,26 +574,6 @@ static void * APR_THREAD_FUNC serve_thre
return NULL;
}
-#else
-
-/* Fully serve the connection given by DATA. */
-static void * APR_THREAD_FUNC serve_thread(apr_thread_t *tid, void *data)
-{
- struct connection_t *connection = data;
- apr_pool_t *pool = svn_root_pools__acquire_pool(connection_pools);
-
- /* serve_socket() logs any error it returns, so ignore it. */
- svn_error_clear(serve_socket(connection, pool));
-
- svn_root_pools__release_pool(pool, connection_pools);
-
- /* destroy the connection object */
- close_connection(connection);
-
- return NULL;
-}
-#endif
-
#endif
/* Write the PID of the current process as a decimal number, followed by a
@@ -668,10 +636,6 @@ sub_main(int *exit_code, int argc, const
#ifndef WIN32
apr_proc_t proc;
#endif
-#if APR_HAS_THREADS && !HAVE_THREADPOOLS
- apr_threadattr_t *tattr;
- apr_thread_t *tid;
-#endif
svn_boolean_t is_multi_threaded;
enum connection_handling_mode handling_mode = CONNECTION_DEFAULT;
apr_hash_t *fs_config = NULL;
@@ -1224,9 +1188,7 @@ sub_main(int *exit_code, int argc, const
#if APR_HAS_THREADS
SVN_ERR(svn_root_pools__create(&connection_pools));
-#endif
-#if HAVE_THREADPOOLS
if (handling_mode == connection_mode_thread)
{
/* create the thread pool */
@@ -1295,26 +1257,11 @@ sub_main(int *exit_code, int argc, const
#if APR_HAS_THREADS
attach_connection(connection);
-#if HAVE_THREADPOOLS
status = apr_thread_pool_push(threads, serve_thread, connection,
0, NULL);
-#else
- status = apr_threadattr_create(&tattr, connection->pool);
if (status)
{
- return svn_error_wrap_apr(status, _("Can't create threadattr"));
- }
- status = apr_threadattr_detach_set(tattr, 1);
- if (status)
- {
- return svn_error_wrap_apr(status, _("Can't set detached state"));
- }
- status = apr_thread_create(&tid, tattr, serve_thread, connection,
- connection->pool);
-#endif
- if (status)
- {
- return svn_error_wrap_apr(status, THREAD_ERROR_MSG);
+ return svn_error_wrap_apr(status, _("Can't push task"));
}
#endif
break;
@@ -1357,7 +1304,7 @@ main(int argc, const char *argv[])
svn_cmdline_handle_exit_error(err, NULL, "svnserve: ");
}
-#if HAVE_THREADPOOLS
+#if APR_HAS_THREADS
/* Explicitly wait for all threads to exit. As we found out with similar
code in our C test framework, the memory pool cleanup below cannot be
trusted to do the right thing. */
Modified: subversion/branches/fsfs-lock-many/subversion/tests/cmdline/authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/cmdline/authz_tests.py?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/cmdline/authz_tests.py (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/cmdline/authz_tests.py Thu Feb 27 12:51:04 2014
@@ -1535,7 +1535,6 @@ def authz_del_from_subdir(sbox):
@SkipUnless(svntest.main.is_ra_type_dav) # dontdothat is dav only
-@SkipUnless(svntest.main.is_os_windows) # until the buildbots are configured
def log_diff_dontdothat(sbox):
"log --diff on dontdothat"
sbox.build(create_wc = False)
Modified: subversion/branches/fsfs-lock-many/subversion/tests/cmdline/commit_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/cmdline/commit_tests.py?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/cmdline/commit_tests.py (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/cmdline/commit_tests.py Thu Feb 27 12:51:04 2014
@@ -3015,7 +3015,64 @@ def commit_cp_with_deep_delete(sbox):
None,
wc_dir)
-
+def commit_deep_deleted(sbox):
+ "try to commit a deep descendant of a deleted node"
+
+ sbox.build()
+
+ sbox.simple_move('A', 'AA')
+
+ sbox.simple_propset('k', 'v', 'AA/D/G')
+
+ # Committing some added descendant returns a proper error
+ expected_err = ('svn: E200009: \'%s\' is not known to exist in the ' +
+ 'repository and is not part of the commit, yet its ' +
+ 'child \'%s\' is part of the commit') % (
+ re.escape(os.path.abspath(sbox.ospath('AA'))),
+ re.escape(os.path.abspath(sbox.ospath('AA/D/G'))))
+
+ svntest.actions.run_and_verify_commit(sbox.wc_dir,
+ None,
+ None,
+ expected_err,
+ sbox.ospath('AA/D/G'))
+
+ sbox.simple_propdel('k', 'AA/D/G')
+ sbox.simple_rm('AA/D/G')
+
+ # But a delete fails..
+ # This used to trigger an assertion in Subversion 1.8.0-1.8.8, because
+ # the status walker couldn't find the repository path for AA/D/G
+ svntest.actions.run_and_verify_commit(sbox.wc_dir,
+ None,
+ None,
+ expected_err,
+ sbox.ospath('AA/D/G'))
+
+ # And now commit like how a GUI client would do it, but forgetting the move
+ expected_err = ('svn: E200009: Cannot commit \'%s\' because it was moved ' +
+ 'from \'%s\' which is not part of the commit; both sides ' +
+ 'of the move must be committed together') % (
+ re.escape(os.path.abspath(sbox.ospath('AA'))),
+ re.escape(os.path.abspath(sbox.ospath('A'))))
+ svntest.actions.run_and_verify_commit(sbox.wc_dir,
+ None,
+ None,
+ expected_err,
+ '--depth', 'empty',
+ sbox.ospath('AA/D/G'),
+ sbox.ospath('AA'))
+
+
+ # And now how it works
+ svntest.actions.run_and_verify_commit(sbox.wc_dir,
+ None,
+ None,
+ [],
+ '--depth', 'empty',
+ sbox.ospath('AA/D/G'),
+ sbox.ospath('AA'),
+ sbox.ospath('A'))
########################################################################
# Run the tests
@@ -3090,6 +3147,7 @@ test_list = [ None,
last_changed_of_copied_subdir,
commit_unversioned,
commit_cp_with_deep_delete,
+ commit_deep_deleted,
]
if __name__ == '__main__':
Modified: subversion/branches/fsfs-lock-many/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/cmdline/davautocheck.sh?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/cmdline/davautocheck.sh Thu Feb 27 12:51:04 2014
@@ -224,15 +224,19 @@ fi
if [ ${MODULE_PATH:+set} ]; then
MOD_DAV_SVN="$MODULE_PATH/mod_dav_svn.so"
MOD_AUTHZ_SVN="$MODULE_PATH/mod_authz_svn.so"
+ MOD_DONTDOTHAT="$MODULE_PATH/mod_dontdothat.so"
else
MOD_DAV_SVN="$ABS_BUILDDIR/subversion/mod_dav_svn/.libs/mod_dav_svn.so"
MOD_AUTHZ_SVN="$ABS_BUILDDIR/subversion/mod_authz_svn/.libs/mod_authz_svn.so"
+ MOD_DONTDOTHAT="$ABS_BUILDDIR/tools/server-side/mod_dontdothat/.libs/mod_dontdothat.so"
fi
[ -r "$MOD_DAV_SVN" ] \
|| fail "dav_svn_module not found, please use '--enable-shared --enable-dso --with-apxs' with your 'configure' script"
[ -r "$MOD_AUTHZ_SVN" ] \
|| fail "authz_svn_module not found, please use '--enable-shared --enable-dso --with-apxs' with your 'configure' script"
+[ -r "$MOD_DONTDOTHAT" ] \
+ || fail "dontdothat_module not found, please use '--enable-shared --enable-dso --with-apxs' with your 'configure' script"
for d in "$ABS_BUILDDIR"/subversion/*/.libs; do
if [ -z "$BUILDDIR_LIBRARY_PATH" ]; then
@@ -332,6 +336,7 @@ HTTPD_PID="$HTTPD_ROOT/pid"
HTTPD_ACCESS_LOG="$HTTPD_ROOT/access_log"
HTTPD_ERROR_LOG="$HTTPD_ROOT/error_log"
HTTPD_MIME_TYPES="$HTTPD_ROOT/mime.types"
+HTTPD_DONTDOTHAT="$HTTPD_ROOT/dontdothat"
if [ -z "$BASE_URL" ]; then
BASE_URL="http://localhost:$HTTPD_PORT"
else
@@ -403,6 +408,12 @@ $HTPASSWD -b $HTTPD_USERS jconstant ray
touch $HTTPD_MIME_TYPES
+cat > "$HTTPD_DONTDOTHAT" <<__EOF__
+[recursive-actions]
+/ = deny
+
+__EOF__
+
cat > "$HTTPD_CFG" <<__EOF__
$LOAD_MOD_MPM
$LOAD_MOD_SSL
@@ -419,6 +430,7 @@ $LOAD_MOD_AUTHZ_CORE
$LOAD_MOD_AUTHZ_USER
$LOAD_MOD_AUTHZ_HOST
LoadModule authz_svn_module "$MOD_AUTHZ_SVN"
+LoadModule dontdothat_module "$MOD_DONTDOTHAT"
__EOF__
@@ -498,6 +510,19 @@ CustomLog "$HTTPD_ROOT/ops" "%
SVNCacheRevProps ${CACHE_REVPROPS_SETTING}
${SVN_PATH_AUTHZ_LINE}
</Location>
+<Location /ddt-test-work/repositories>
+ DAV svn
+ SVNParentPath "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/repositories"
+ AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
+ AuthType Basic
+ AuthName "Subversion Repository"
+ AuthUserFile $HTTPD_USERS
+ Require valid-user
+ SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
+ SVNCacheRevProps ${CACHE_REVPROPS_SETTING}
+ ${SVN_PATH_AUTHZ_LINE}
+ DontDoThatConfigFile "$HTTPD_DONTDOTHAT"
+</Location>
<Location /svn-test-work/local_tmp/repos>
DAV svn
SVNPath "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp/repos"
Modified: subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests.py?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests.py (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests.py Thu Feb 27 12:51:04 2014
@@ -74,6 +74,15 @@ del_lines_res = [
re.compile(r" - with Cyrus SASL authentication"),
re.compile(r" - using serf \d+\.\d+\.\d+"),
re.compile(r"\* fs_(base|fs) :"),
+
+ # Remove 'svn --version' list of platform-specific
+ # auth cache providers.
+ re.compile(r"\* Wincrypt cache.*"),
+ re.compile(r"\* Plaintext cache.*"),
+ re.compile(r"\* Gnome Keyring"),
+ re.compile(r"\* GPG-Agent"),
+ re.compile(r"\* Mac OS X Keychain"),
+ re.compile(r"\* Kwallet \(KDE\)"),
]
# This is a list of lines to search and replace text on.
Modified: subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout Thu Feb 27 12:51:04 2014
@@ -10,6 +10,7 @@ command, it recurses on the current dire
Available subcommands:
add
+ auth
blame (praise, annotate, ann)
cat
changelist (cl)
Modified: subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout Thu Feb 27 12:51:04 2014
@@ -1,5 +1,5 @@
-svn, version 1.8.0-dev (under development)
- compiled Sep 10 2012, 14:00:24 on i386-apple-darwin11.4.0
+svn, version 1.9.0-dev (under development)
+ compiled Feb 26 2014, 15:15:42 on x86_64-unknown-openbsd5.5
Copyright (C) 2012 The Apache Software Foundation.
This software consists of contributions made by many people;
@@ -14,9 +14,16 @@ The following repository access (RA) mod
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
+ - using serf 1.3.3
- handles 'http' scheme
- handles 'https' scheme
+The following authentication credential caches are available:
+
+* Plaintext cache in /home/stsp/.subversion
+* Gnome Keyring
+* GPG-Agent
+
System information:
* running on i386-apple-darwin11.4.0
Modified: subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--version_stdout
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--version_stdout?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--version_stdout (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn--version_stdout Thu Feb 27 12:51:04 2014
@@ -1,18 +1,26 @@
-svn, version 0.16.0 (r3987)
- compiled Dec 5 2002, 00:02:51
+svn, version 1.9.0-dev (under development)
+ compiled Feb 26 2014, 15:15:42 on x86_64-unknown-openbsd5.5
-Copyright (C) 2010 The Apache Software Foundation.
+Copyright (C) 2014 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:
-* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- - handles 'http' scheme
- - handles 'https' scheme
-* ra_local : Module for accessing a repository on local disk.
- - handles 'file' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
+ - with Cyrus SASL authentication
- handles 'svn' scheme
+* ra_local : Module for accessing a repository on local disk.
+ - handles 'file' scheme
+* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
+ - using serf 1.3.3
+ - handles 'http' scheme
+ - handles 'https' scheme
+
+The following authentication credential caches are available:
+
+* Plaintext cache in /home/stsp/.subversion
+* Gnome Keyring
+* GPG-Agent
Modified: subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout Thu Feb 27 12:51:04 2014
@@ -10,6 +10,7 @@ command, it recurses on the current dire
Available subcommands:
add
+ auth
blame (praise, annotate, ann)
cat
changelist (cl)
Modified: subversion/branches/fsfs-lock-many/subversion/tests/cmdline/upgrade_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/cmdline/upgrade_tests.py?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/cmdline/upgrade_tests.py (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/cmdline/upgrade_tests.py Thu Feb 27 12:51:04 2014
@@ -1427,6 +1427,17 @@ def changelist_upgrade_1_6(sbox):
if paths != expected_paths:
raise svntest.Failure("changelist not matched")
+
+def upgrade_1_7_dir_external(sbox):
+ "upgrade from 1.7 with dir external"
+
+ sbox.build(create_wc = False)
+ replace_sbox_with_tarfile(sbox, 'upgrade_1_7_dir_external.tar.bz2')
+
+ # This fails for 'make check EXCLUSIVE_WC_LOCKS=1' giving an error:
+ # svn: warning: W200033: sqlite[S5]: database is locked
+ svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+
########################################################################
# Run the tests
@@ -1482,6 +1493,7 @@ test_list = [ None,
iprops_upgrade,
iprops_upgrade1_6,
changelist_upgrade_1_6,
+ upgrade_1_7_dir_external,
]
Modified: subversion/branches/fsfs-lock-many/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/libsvn_repos/repos-test.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/libsvn_repos/repos-test.c Thu Feb 27 12:51:04 2014
@@ -2971,7 +2971,7 @@ get_logs(const svn_test_opts_t *opts,
"Log with start=%ld,end=%ld,limit=%d "
"returned %ld entries (expected %ld)",
start_arg, end_arg, limit,
- num_logs, max_logs);
+ num_logs, num_expected);
}
}
}
Modified: subversion/branches/fsfs-lock-many/subversion/tests/libsvn_subr/io-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/libsvn_subr/io-test.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/libsvn_subr/io-test.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/libsvn_subr/io-test.c Thu Feb 27 12:51:04 2014
@@ -555,13 +555,8 @@ aligned_seek(apr_file_t *file,
*/
if (buffered)
{
-#if APR_VERSION_AT_LEAST(1,3,0)
SVN_TEST_ASSERT(block_start % block_size == 0);
SVN_TEST_ASSERT(offset - block_start < block_size);
-#else
- SVN_TEST_ASSERT(block_start % 0x1000 == 0);
- SVN_TEST_ASSERT(offset - block_start < 0x1000);
-#endif
}
/* we must be at the desired offset */
Modified: subversion/branches/fsfs-lock-many/tools/dev/unix-build/Makefile.svn
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/tools/dev/unix-build/Makefile.svn?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/tools/dev/unix-build/Makefile.svn (original)
+++ subversion/branches/fsfs-lock-many/tools/dev/unix-build/Makefile.svn Thu Feb 27 12:51:04 2014
@@ -72,7 +72,7 @@ GNU_ICONV_VER = 1.14
APR_UTIL_VER = 1.4.1
HTTPD_VER = 2.2.26
NEON_VER = 0.29.6
-SERF_VER = 1.3.3
+SERF_VER = 1.3.4
SERF_OLD_VER = 0.3.1
CYRUS_SASL_VER = 2.1.25
SQLITE_VER = 3080200
Modified: subversion/branches/fsfs-lock-many/tools/server-side/fsfs-stats.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/tools/server-side/fsfs-stats.c?rev=1572541&r1=1572540&r2=1572541&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/tools/server-side/fsfs-stats.c (original)
+++ subversion/branches/fsfs-lock-many/tools/server-side/fsfs-stats.c Thu Feb 27 12:51:04 2014
@@ -355,7 +355,6 @@ get_content(svn_stringbuf_t **content,
*content = svn_stringbuf_create_ensure(len, pool);
(*content)->len = len;
-#if APR_VERSION_AT_LEAST(1,3,0)
/* for better efficiency use larger buffers on large reads */
if ( (len >= large_buffer_size)
&& (apr_file_buffer_size_get(file) < large_buffer_size))
@@ -363,7 +362,6 @@ get_content(svn_stringbuf_t **content,
apr_palloc(apr_file_pool_get(file),
large_buffer_size),
large_buffer_size);
-#endif
SVN_ERR(svn_io_file_seek(file, APR_SET, &offset, pool));
SVN_ERR(svn_io_file_read_full2(file, (*content)->data, len,