Disclaimer: I haven't looked at this codebase in a reeeeeally long time.
But this code in cmdline.c reads differently than my now-naive eyes would
expect:
/* If neither --non-interactive nor --force-interactive was passed,
* be interactive if stdin is a terminal.
* If --force-interactive was passed, always be interactive. */
if (!force_interactive && !*non_interactive)
*non_interactive = svn_cmdline__stdin_is_a_terminal();
This looks to have been introduced relatively recently, in r1925937 (
https://svn.apache.org/viewvc/?view=revision&revision=1925937). I guess I
would expect it to read:
if (!force_interactive && !*non_interactive)
*non_interactive = !svn_cmdline__stdin_is_a_terminal();
That is, be non-interactive if stdin is NOT a terminal. But, yeah, see the
disclaimer above. :-)
-- Mike
On Wed, Jun 18, 2025 at 4:59 PM Branko Čibej <[email protected]> wrote:
> On 18. 6. 25 22:40, Branko Čibej wrote:
>
> This is with a fresh build of today's trunk:
>
> $ /Volumes/svn-test/trunk/subversion/svn/svn commit
> /Users/brane/src/svn/repos/trunk/subversion/svn/svn.c:3373:
> (apr_err=SVN_ERR_CL_INSUFFICIENT_ARGS)
> svn: E205001: Try 'svn help commit' for more information
> /Users/brane/src/svn/repos/trunk/subversion/svn/commit-cmd.c:185,
> /Users/brane/src/svn/repos/trunk/subversion/libsvn_client/commit.c:1097,
> /Users/brane/src/svn/repos/trunk/subversion/libsvn_client/commit.c:156:
> (apr_err=SVN_ERR_CL_INSUFFICIENT_ARGS)
> svn: E205001: Commit failed (details follow):
> /Users/brane/src/svn/repos/trunk/subversion/libsvn_client/commit.c:907,
> /Users/brane/src/svn/repos/trunk/subversion/svn/util.c:449:
> (apr_err=SVN_ERR_CL_INSUFFICIENT_ARGS)
> svn: E205001: Cannot invoke editor to get log message when non-interactive
>
>
> What? svn 1.14.5 works as expected, with the same ~/.subversion/config
> file. I have no clue where this 'non-interactive' thing came from.
>
> Note: I have local changes in the macOS Keychain auth provider, but it
> never gets that far, since it fails during argument parsing.
>
>
>
> Non-interactive is indeed on, I traced this to svn_cl__get_log_message()
> where the baton says: lmb->non_interactive = 1. Also note that lmb->editor_cmd
> = NULL, which is kind of impossible given that I have one defined in
> ~/.subversion/config.
>
>
> -- Brane
>
> (lldb)
> Process 3212 stopped
> * thread #1, queue = 'com.apple.main-thread', stop reason = step over
> frame #0: 0x0000000100036658
> svn`svn_cl__get_log_message(log_msg=0x000000016fdfe508,
> tmp_file=0x000000016fdfe3c8, commit_items=0x000000015a110d70,
> baton=0x000000015a027a68, pool=0x000000015a013028) at util.c:350:51
> 347 svn_stringbuf_t *message = NULL;
> 348
> 349 /* Set default message. */
> -> 350 default_msg = svn_stringbuf_create(APR_EOL_STR, pool);
> 351 svn_stringbuf_appendcstr(default_msg, EDITOR_EOF_PREFIX);
> 352 svn_stringbuf_appendcstr(default_msg, APR_EOL_STR
> APR_EOL_STR);
> 353
> Target 0: (svn) stopped.
> (lldb) p *lmb
> (log_msg_baton) {
> editor_cmd = 0x0000000000000000
> message = 0x0000000000000000
> message_encoding = 0x0000000000000000
> base_dir = 0x000000015a026e68 "/Users/brane/src/svn/repos/trunk"
> tmpfile_left = 0x0000000000000000
> non_interactive = 1
> config = 0x000000015a0138d0
> keep_locks = 0
> pool = 0x000000015a013028
> }
>
>