Return-Path: X-Original-To: apmail-subversion-commits-archive@minotaur.apache.org Delivered-To: apmail-subversion-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id F291611A6D for ; Wed, 24 Sep 2014 16:08:45 +0000 (UTC) Received: (qmail 62815 invoked by uid 500); 24 Sep 2014 16:08:45 -0000 Delivered-To: apmail-subversion-commits-archive@subversion.apache.org Received: (qmail 62786 invoked by uid 500); 24 Sep 2014 16:08:45 -0000 Mailing-List: contact commits-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@subversion.apache.org Delivered-To: mailing list commits@subversion.apache.org Received: (qmail 62772 invoked by uid 99); 24 Sep 2014 16:08:45 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 24 Sep 2014 16:08:45 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 24 Sep 2014 16:08:21 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id A1D28238899C; Wed, 24 Sep 2014 16:08:19 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1627352 - in /subversion/branches/move-tracking-2/subversion: include/private/svn_editor3.h libsvn_delta/compat3.c libsvn_ra/ra_loader.c libsvn_ra_local/ra_plugin.c libsvn_repos/commit.c libsvn_wc/util.c libsvn_wc/wc.h Date: Wed, 24 Sep 2014 16:08:19 -0000 To: commits@subversion.apache.org From: julianfoad@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140924160819.A1D28238899C@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: julianfoad Date: Wed Sep 24 16:08:18 2014 New Revision: 1627352 URL: http://svn.apache.org/r1627352 Log: On the 'move-tracking-2' branch: Extend the editor shim 'fetch' callbacks to support fetching a directory's children. The facility is not yet used, but my in-progress move-tracking demo code might want to use it. * subversion/include/private/svn_editor3.h (svn_editor3__shim_fetch_func_t): Add a 'children_names' output. * subversion/libsvn_delta/compat3.c (...everywhere...): Pass NULL for the new parameter. * subversion/libsvn_ra_local/ra_plugin.c (fetch_func): Implement fetching children's names. * subversion/libsvn_ra/ra_loader.c (fetch): Same. * subversion/libsvn_repos/commit.c (fetch_func): Same. * subversion/libsvn_wc/wc.h, subversion/libsvn_wc/util.c (svn_wc__fetch_func): Add the new parameter, but not implemented. Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_editor3.h subversion/branches/move-tracking-2/subversion/libsvn_delta/compat3.c subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.c subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c subversion/branches/move-tracking-2/subversion/libsvn_repos/commit.c subversion/branches/move-tracking-2/subversion/libsvn_wc/util.c subversion/branches/move-tracking-2/subversion/libsvn_wc/wc.h Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_editor3.h URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_editor3.h?rev=1627352&r1=1627351&r2=1627352&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/include/private/svn_editor3.h (original) +++ subversion/branches/move-tracking-2/subversion/include/private/svn_editor3.h Wed Sep 24 16:08:18 2014 @@ -1446,6 +1446,7 @@ typedef svn_error_t *(*svn_editor3__shim svn_node_kind_t *kind, apr_hash_t **props, svn_stringbuf_t **file_text, + apr_hash_t **children_names, void *baton, const char *repos_relpath, svn_revnum_t revision, Modified: subversion/branches/move-tracking-2/subversion/libsvn_delta/compat3.c URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_delta/compat3.c?rev=1627352&r1=1627351&r2=1627352&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/libsvn_delta/compat3.c (original) +++ subversion/branches/move-tracking-2/subversion/libsvn_delta/compat3.c Wed Sep 24 16:08:18 2014 @@ -977,7 +977,7 @@ apply_propedit(struct ev3_edit_baton *eb Otherwise, we get the properties from BASE. */ if (copyfrom_path) { - SVN_ERR(eb->fetch_func(NULL, &change->props, NULL, + SVN_ERR(eb->fetch_func(NULL, &change->props, NULL, NULL, eb->fetch_baton, copyfrom_path, copyfrom_rev, eb->edit_pool, scratch_pool)); @@ -994,7 +994,7 @@ apply_propedit(struct ev3_edit_baton *eb if (! SVN_IS_VALID_REVNUM(base_revision)) SVN_DBG(("apply_propedit('%s@%ld') ### need to resolve to HEAD?", relpath, base_revision)); - SVN_ERR(eb->fetch_func(NULL, &change->props, NULL, + SVN_ERR(eb->fetch_func(NULL, &change->props, NULL, NULL, eb->fetch_baton, relpath, base_revision, eb->edit_pool, scratch_pool)); @@ -1194,7 +1194,7 @@ ev3_add_file(const char *path, fb->eb->edit_pool); change->copyfrom_rev = copyfrom_revision; - SVN_ERR(fb->eb->fetch_func(NULL, NULL, &fb->delta_base_text, + SVN_ERR(fb->eb->fetch_func(NULL, NULL, &fb->delta_base_text, NULL, fb->eb->fetch_baton, change->copyfrom_path, change->copyfrom_rev, @@ -1250,14 +1250,14 @@ ev3_open_file(const char *path, fb->copyfrom_relpath = copyfrom_relpath; fb->copyfrom_rev = pb->copyfrom_rev; - SVN_ERR(fb->eb->fetch_func(NULL, NULL, &fb->delta_base_text, + SVN_ERR(fb->eb->fetch_func(NULL, NULL, &fb->delta_base_text, NULL, fb->eb->fetch_baton, copyfrom_relpath, pb->copyfrom_rev, result_pool, scratch_pool)); } else { - SVN_ERR(fb->eb->fetch_func(NULL, NULL, &fb->delta_base_text, + SVN_ERR(fb->eb->fetch_func(NULL, NULL, &fb->delta_base_text, NULL, fb->eb->fetch_baton, relpath, base_revision, result_pool, scratch_pool)); @@ -1864,7 +1864,7 @@ fetch_base_props(apr_hash_t **base_props if (source_path) { - SVN_ERR(fetch_func(NULL, base_props, NULL, + SVN_ERR(fetch_func(NULL, base_props, NULL, NULL, fetch_baton, source_path, source_rev, result_pool, scratch_pool)); } @@ -2257,7 +2257,7 @@ editor3_cp(void *baton, change->copyfrom_rev = from_peg_loc.rev; /* We need the source's kind to know whether to call add_directory() or add_file() later on. */ - SVN_ERR(eb->fetch_func(&change->kind, NULL, NULL, + SVN_ERR(eb->fetch_func(&change->kind, NULL, NULL, NULL, eb->fetch_baton, from_peg_loc.relpath, from_peg_loc.rev, scratch_pool, scratch_pool)); @@ -2296,7 +2296,7 @@ editor3_mv(void *baton, already recorded a change -- an earlier move, I suppose -- then the 'kind' has already been recorded there and we could potentially re-use it here. But we have no need yet to optimise that case.) */ - SVN_ERR(eb->fetch_func(&change->kind, NULL, NULL, eb->fetch_baton, + SVN_ERR(eb->fetch_func(&change->kind, NULL, NULL, NULL, eb->fetch_baton, from_loc.relpath, from_loc.rev, scratch_pool, scratch_pool)); Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.c URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.c?rev=1627352&r1=1627351&r2=1627352&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.c (original) +++ subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.c Wed Sep 24 16:08:18 2014 @@ -768,6 +768,7 @@ static svn_error_t * fetch(svn_node_kind_t *kind_p, apr_hash_t **props_p, svn_stringbuf_t **file_text, + apr_hash_t **children_names, void *baton, const char *repos_relpath, svn_revnum_t revision, @@ -778,6 +779,13 @@ fetch(svn_node_kind_t *kind_p, svn_node_kind_t kind; apr_hash_index_t *hi; + if (props_p) + *props_p = NULL; + if (file_text) + *file_text = NULL; + if (children_names) + *children_names = NULL; + SVN_ERR(svn_ra_check_path(fbb->session, repos_relpath, revision, &kind, scratch_pool)); if (kind_p) @@ -798,13 +806,17 @@ fetch(svn_node_kind_t *kind_p, SVN_ERR(svn_stream_close(file_stream)); } } - else if (props_p) + else if (kind == svn_node_dir && (props_p || children_names)) { - SVN_ERR(svn_ra_get_dir(fbb->session, repos_relpath, revision, - NULL /*dirents*/, NULL, props_p, result_pool)); + SVN_ERR(svn_ra_get_dir2(fbb->session, + children_names, NULL, props_p, + repos_relpath, revision, + 0 /*minimal child info*/, + result_pool)); } + /* Remove non-regular props */ - if (props_p) + if (props_p && *props_p) { for (hi = apr_hash_first(scratch_pool, *props_p); hi; hi = apr_hash_next(hi)) { Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c?rev=1627352&r1=1627351&r2=1627352&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c (original) +++ subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c Wed Sep 24 16:08:18 2014 @@ -918,6 +918,7 @@ static svn_error_t * fetch_func(svn_node_kind_t *kind_p, apr_hash_t **props_p, svn_stringbuf_t **file_text, + apr_hash_t **children_names, void *baton, const char *repos_relpath, svn_revnum_t revision, @@ -968,7 +969,7 @@ fetch_func(svn_node_kind_t *kind_p, else if (kind == svn_node_dir && props_p) { SVN_ERR(svn_ra_local__get_dir(fb->session, - NULL /*dirents*/, NULL /*fetched_rev*/, + children_names, NULL /*fetched_rev*/, props_p, session_relpath, revision, 0 /*dirent_fields*/, result_pool)); } Modified: subversion/branches/move-tracking-2/subversion/libsvn_repos/commit.c URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_repos/commit.c?rev=1627352&r1=1627351&r2=1627352&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/libsvn_repos/commit.c (original) +++ subversion/branches/move-tracking-2/subversion/libsvn_repos/commit.c Wed Sep 24 16:08:18 2014 @@ -841,6 +841,7 @@ static svn_error_t * fetch_func(svn_node_kind_t *kind, apr_hash_t **props, svn_stringbuf_t **file_text, + apr_hash_t **children_names, void *baton, const char *repos_relpath, svn_revnum_t revision, @@ -854,6 +855,13 @@ fetch_func(svn_node_kind_t *kind, if (!SVN_IS_VALID_REVNUM(revision)) revision = svn_fs_txn_base_revision(eb->txn); + if (props) + *props = NULL; + if (file_text) + *file_text = NULL; + if (children_names) + *children_names = NULL; + SVN_ERR(svn_fs_revision_root(&fs_root, eb->fs, revision, scratch_pool)); if (kind) @@ -891,6 +899,18 @@ fetch_func(svn_node_kind_t *kind, SVN_ERR(svn_stringbuf_from_stream(file_text, contents, 0, result_pool)); } + if (children_names) + { + err = svn_fs_dir_entries(children_names, fs_root, repos_relpath, + scratch_pool); + if (err && err->apr_err == SVN_ERR_FS_NOT_FOUND) + { + svn_error_clear(err); + return SVN_NO_ERROR; + } + else if (err) + return svn_error_trace(err); + } return SVN_NO_ERROR; } Modified: subversion/branches/move-tracking-2/subversion/libsvn_wc/util.c URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_wc/util.c?rev=1627352&r1=1627351&r2=1627352&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/libsvn_wc/util.c (original) +++ subversion/branches/move-tracking-2/subversion/libsvn_wc/util.c Wed Sep 24 16:08:18 2014 @@ -421,6 +421,7 @@ svn_error_t * svn_wc__fetch_func(svn_node_kind_t *kind, apr_hash_t **props, svn_stringbuf_t **file_text, + apr_hash_t **children_names, /* ### unimplemented */ void *baton, const char *repos_relpath, svn_revnum_t revision, Modified: subversion/branches/move-tracking-2/subversion/libsvn_wc/wc.h URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_wc/wc.h?rev=1627352&r1=1627351&r2=1627352&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/libsvn_wc/wc.h (original) +++ subversion/branches/move-tracking-2/subversion/libsvn_wc/wc.h Wed Sep 24 16:08:18 2014 @@ -749,6 +749,7 @@ svn_error_t * svn_wc__fetch_func(svn_node_kind_t *kind, apr_hash_t **props, svn_stringbuf_t **file_text, + apr_hash_t **children_names, void *baton, const char *repos_relpath, svn_revnum_t revision,