Hi Phil,

Thanks for the fast answer. A small update of mine.
The issue with servers file was because I put it in the wrong folder, blame on 
me.

But at least I solved for the caching of the credentials.

The solution is to create the folder via svn_config_ensure,
somewhere before svn_cmdline_setup_auth_baton.

Credentials should be stored userwise so we reuse svn's user path in
svn_cmdline_setup_auth_baton. I hope thats OK for fsvs in all remote access
scenarios.

Thats only this small change in racallback.c, line 47:

>       cfg = apr_hash_get(cfg_hash, SVN_CONFIG_CATEGORY_CONFIG,
>                       APR_HASH_KEY_STRING);
> 
>       /* get svn's user configuration path */
>       STOPIF_SVNERR( svn_config_get_user_config_path, (&cfg_usr_path, NULL, 
> NULL, pool ) );
> 
>        /* make sure that folders for storing authentications credentials are 
> created */
>       STOPIF_SVNERR( svn_config_ensure, (cfg_usr_path, pool));
> 
>       /* Set up Authentication stuff. */
>       STOPIF_SVNERR( svn_cmdline_setup_auth_baton,
>                       (&cb__cb_table.auth_baton,
>                        !(isatty(STDIN_FILENO) && isatty(STDOUT_FILENO)),
>                        opt__get_int(OPT__AUTHOR) ? 
>                        opt__get_string(OPT__AUTHOR) : NULL,
>                        NULL, /* Password */
>                        cfg_usr_path,
>                        0, /* no_auth_cache */
>                        cfg,
>                        NULL, /* cancel function */
>                        NULL, /* cancel baton */
>                        pool)
>                       );

The servers file is still globally stored and used via the conf_dir option (or
not) in the hlp__get_svn_config.

What do you think, can we go with this?

Best,
Gunnar

Ph. Marek wrote:
> Hello Gunnar!
> 
> On Friday 12 February 2010 Gunnar Thielebein wrote:
>>>> When putting the option definition in options.c, options.h and
>>>> options.dox it builds but it don't accept the option.
>>> Maybe the name is too long?
>> Indeed, its the length of the optionname. Is there any reason for a
>>  restriction of optionname length?
> Only because it's inline in the structure.
> Just change the "char [16]" to a "char*".
>  
>>>> It looks like repeating the filter behaviour again. I only wonder where
>>>> to start because I don't find a function to extend with the exclude
>>>> check. Can you give me a small hint where to start?
>>> Do the above hints help?
>> Yes, that helps a lot. I was wondering if it does make sense to update the
>>  mtime of directories if this option is active. It's best to reduce it to
>>  status only st__action() for now.
> Ok, fine.
> Maybe the option name should reflect that? But perhaps not, in case this 
> option will be used on commit, too.
> 
> 
>> Another issue regarding config_dir.
>> I did a test against ssl setup (the same you find in branch).
>>
>> With no config_dir option set the search path for credential information is 
> now:
>>> /etc/fsvs/svn/auth/svn.ssl.server/06efd6678d902375072f17361922b4b2
>> Is the "svn" before "auth" intentional? I could live with that just want to
>>  know.
> Yes, it is. But this is used only if no config_dir option is given, so a 
> "config_dir=/etc/fsvs" would use "/etc/fsvs/auth".
> 
> Is that bad? To hard to explain?
> 
>> When config_dir option is set to:
>>> config_dir=/etc/fsvs
>> I get this warning:
>>> An error occurred: Malformed file (200002)
>>>   in hlp__get_svn_config: svn_config_get_config: /etc/fsvs/config:1:
>>> Section header expected
> Yes, that's why I installed this directory in-between.
> Because SVN tries to read the "config" file, which has the wrong format.
> 
> My bad; but I don't think that the syntax should be changed now.
> 
> BTW, the subversion "config" file is important, because things like "store-
> password" and similar can/must be defined there.
> 
> 
>> When I use:
>>> config_dir=/home/gthielebein/.subversion
>> It correctly identifies the folder. But a) it ignores my global server file
>>  in /etc/fsvs/(svn/)auth/server 
> Yes, there's only a single config directory.
> I don't know whether svn_config_get_config() (in hlp__get_svn_config()) can 
> be 
> called multiple times, to use multiple directories.
> 
> How about a symlink from /home/.../server to /etc/...?
> 
>>  and b) storing of password and ssl-credentials failed:
>>> 14:00:45.898952
>>> open("/home/gthielebein/.subversion/auth/svn.ssl.client-passphrase/d8354b
>>> a99a7d33871875f62b3bfb303e", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOENT
>>> (No such file or directory) 14:02:16.320384
>>> open("/home/gthielebein/.subversion/auth/svn.ssl.client-passphrase/d8354b
>>> a99a7d33871875f62b3bfb303e", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOENT
>>> (No such file or directory)
> Ah, another authentication directory.
>  
>> Is it hard to create the parent folders within fsvs when they do not
>>  exists. This would mimic the behaviour of the svn client.
> Hmm, always create all directories on a "fsvs url" run? FSVS doesn't know 
> which kind of authentication is used.
> 
> I have the various "mkdir -p" in "make install", but this wasn't there yet.
> 
> 
> Regards,
> 
> Phil
> 
>

------------------------------------------------------
http://fsvs.tigris.org/ds/viewMessage.do?dsForumId=3923&dsMessageId=2447157

To unsubscribe from this discussion, e-mail: [[email protected]].

Reply via email to