[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r1874634 [3/3] - in /subversion/branches/decouple-shelving-cli/subversion: include/private/svn_client_shelf2.h libsvn_client/shelf2.c svn/shelf2-cmd.c svn/shelf2-cmd.h svn/svn.c tests/cmdline/shelf2_tests.pyj

From: Daniel Shahaf <d.s_at_daniel.shahaf.name>
Date: Fri, 28 Feb 2020 23:09:51 +0000

julianfoad_at_apache.org wrote on Fri, 28 Feb 2020 22:15 -0000:
> Author: julianfoad
> Date: Fri Feb 28 22:15:15 2020
> New Revision: 1874634
>
> URL: http://svn.apache.org/viewvc?rev=1874634&view=rev
> Log:
> Add the shelving v2 implementation from Subversion 1.11, as an alternative
> to the shelving v3 implementation from Subversion 1.12.
>
> They have substantially different pros and cons, so it is beneficial for the
> user to be able to choose.
>
> Make the shelving CLI version selectable by an environment variable:
> env. var. not set => shelving v3 enabled
> SVN_EXPERIMENTAL_COMMANDS=shelf3 => shelving v3 enabled
> SVN_EXPERIMENTAL_COMMANDS=shelf2 => shelving v2 enabled
> SVN_EXPERIMENTAL_COMMANDS= => no shelving CLI
>
> * subversion/svn/svn.c
> Enable shelving v3 or v2 or neither, depending on the environment variable
> SVN_EXPERIMENTAL_COMMANDS.

julianfoad_at_apache.org wrote on Fri, 28 Feb 2020 22:15 -0000:
> +++ subversion/branches/decouple-shelving-cli/subversion/svn/svn.c Fri Feb 28 22:15:15 2020
> @@ -2066,8 +2068,16 @@ sub_main(int *exit_code, int argc, const
> /* Init the temporary buffer. */
> svn_membuf__create(&buf, 0, pool);
>
> - /* Add externally defined commands */
> - add_commands(svn_cl__cmd_table_shelf3, pool);
> + /* Add experimental commands, if requested */
> + exp_cmds = getenv("SVN_EXPERIMENTAL_COMMANDS");
> + if (!exp_cmds || strstr(exp_cmds, "shelf3"))
> + {
> + add_commands(svn_cl__cmd_table_shelf3, pool);
> + }
> + else if (exp_cmds && strstr(exp_cmds, "shelf2"))
> + {
> + add_commands(svn_cl__cmd_table_shelf2, pool);
> + }

This doesn't seem forward-compatible: if in 1.15 we add
SVN_EXPERIMENTAL_COMMANDS=foo, using that environment variable setting
on 1.14 (assuming the above branch is merged by 1.14) would disable
shelving. I'm aware that compatibility is a lesser concern for experimental
features, but still, this sort of compatibility seems achievable.

TIMTOWTDI; for example, «os.putenv('SVN_EXPERIMENTAL_COMMANDS', 'shelf=3 foo=1')»,
or check «strstr(exp_cmds, "shelf")» in addition to whether exp_cmds is not NULL.

(I'm not sure whether you intend the envvar-based API to be released or
just to be an interim development phase, but I'm assuming the former
since the log message didn't say otherwise.)

Cheers,

Daniel
Received on 2020-02-29 00:10:05 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.