On Mon, Nov 7, 2011 at 10:04 AM, <neels_at_apache.org> wrote:
> Author: neels
> Date: Mon Nov 7 15:03:59 2011
> New Revision: 1198765
> URL: http://svn.apache.org/viewvc?rev=1198765&view=rev
> Introduce the commit argument --include-externals.
> Most prominent changes:
> - File externals are no longer committed by default.
> - When option --include-externals is passed to 'svn commit', *all* externals
> reached by recursion are included in the commit (dir & file alike).
> - Dir externals nested "behind" unversioned dirs or "foreign" WCs are
> now reached by recursion.
> Previous default was to include all file externals, not dirs. On the API
> level, separate dir/file arguments allow for this previous behavior, mainly
> for keeping svn_client_commit5()'s behavior unchanged.
> See also http://svn.haxx.se/dev/archive-2011-08/0620.shtml
> ### The commit API can't handle file externals inside unversioned dirs
> properly yet. Additional SQL currently deliberately excludes them (see
> * subversion/include/private/svn_wc_private.h
> (svn_wc__committable_external_info_t): New struct for:
> (svn_wc__committable_externals_below): New function.
> * subversion/include/svn_client.h,
> New function, adding INCLUDE_FILE_EXTERNALS and INCLUDE_DIR_EXTERNALS
> arguments over svn_client_commit5().
> * subversion/libsvn_client/commit.c
> (append_externals_as_explicit_targets): New static function.
> (svn_client_commit6): New function, see svn_client.h ^.
> Call svn_client_commit6() with INCLUDE_FILE_EXTERNALS = TRUE and
> INCLUDE_DIR_EXTERNALS = FALSE.
> * subversion/libsvn_client/commit_util.c
> New argument IS_EXPLICIT_TARGET; pass as FALSE upon recursion. Skip file
> externals that are not explicit targets, so this function now skips all
> externals during recursion (see docstring).
> Pass IS_EXPLICIT_TARGET as TRUE: initial harvest_committables() call.
> Pass IS_EXPLICIT_TARGET as TRUE, but has no effect since, inside
> harvest_committables(), COPY_MODE will be TRUE and all file externals will
> be excluded anyway.
> * subversion/libsvn_wc/externals.c
> (is_external_rolled_out): New static function.
> (svn_wc__committable_externals_below): New function, see svn_wc_private.h ^.
> * subversion/libsvn_wc/wc_db.h,
> * subversion/libsvn_wc/wc_db.c
> New function for STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW.
> * subversion/libsvn_wc/wc-queries.sql
> (STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW): New SQL.
> * subversion/svn/cl.h
> (svn_cl__opt_state_t): Add INCLUDE_EXTERNALS for --include-externals.
> * subversion/svn/commit-cmd.c
> (svn_cl__commit): Call svn_client_commit6() instead of &5().
> * subversion/svn/main.c
> (svn_cl__longopt_t, svn_cl__options, svn_cl__cmd_table, main):
> Add OPT_INCLUDE_EXTERNALS, enable --include-externals for 'commit'.
> * subversion/tests/cmdline/externals_tests.py
> (include_externals): New test, PASS.
> (include_immediate_dir_externals): New test, XFAIL.
I'm churning through all our XFailing tests to determine what are true
1.8 blockers. This test had no associated issue, so I created issue
#4252 to track it. I set the target milestone to 1.8-consider since
1.7 didn't work either. Does that sound reasonable? Also, did you
have any plans to follow-up on this?
Paul T. Burba
CollabNet, Inc. -- www.collab.net -- Enterprise Cloud Development
Received on 2012-11-02 22:30:13 CET