[Svnmerge] problem with non-interactive

Giovanni Bajo rasky at develer.com
Fri Mar 20 09:54:59 PDT 2009


On 3/20/2009 4:34 PM, Jon Schewe wrote:
> Giovanni Bajo wrote:
>> On 3/20/2009 3:27 PM, Jon Schewe wrote:
>>> Giovanni Bajo wrote:
>>>> On 3/20/2009 2:41 PM, Jon Schewe wrote:
>>>>> Recent versions of subversion integrate with OsX's keychain in a
>>>>> really
>>>>> nice way. My auth file no longer has a password in it and looks like
>>>>> below.  It does this automatically, with no special interaction. The
>>>>> problem now is that svnmerge.py calls svn with the --non-interactive
>>>>> argument, however it seems that the keychain authentication doesn't
>>>>> work, so my merges now fail. Any ideas?
>>>>>
>>>>> K 8
>>>>> passtype
>>>>> V 8
>>>>> keychain
>>>>> K 15
>>>>> svn:realmstring
>>>>> V 53
>>>>> <http://boomerang-dev.bbn.com:80> Authorization Realm
>>>>> K 8
>>>>> username
>>>>> V 7
>>>>> jschewe
>>>>> END
>>>>>
>>>> Not specifically. What happens if you call svn --non-interactive
>>>> yourself?
>>> authorization failed, just like svnmerge.
>>>
>> So it looks like a SVN bug. Try reporting it to the SVN user list.
> I suspect the answer is that keychain may prompt the user for a password
> for the keychain, so this is works as expected behavior.

Well, I can see the technical problem, but I wouldn't call it "expected 
behaviour". With normal authentication, you can use SVN if you have your 
password saved; if the password is not present and --non-interactive was 
specified, it will fail; but it will not fail always just because it 
might have had to ask the password.

> Could svnmerge
> be run without non-interactive?

The problem is that normally you don't want to see the output of svn 
beacuse (eg) it's been read by the program itself. If you don't see the 
output, you can't really interact with it.

Eg: svnmerge.py executes "svn info" and parses its output. If I run it 
without --non-interactive, it might ask for a password. But since I'm 
redirecting svn's output to a pipe, the user would not see it, and 
wouldn't be able to reply to the password prompt.

OTOH, since svn 1.5 got its interactive conflict resolution helper 
during merge, it would be very useful to be able to expose such 
interaction to the end user.

I personally can't think of a solution. I was exploring the idea of 
running the actual merge step with the output on the console and full 
interaction (so to enable interactive conflict resolution to work). But 
that's only for the merge step. Other svn invocations shouldn't really 
go the console.

IOW, I still think that svn is at fault here; it *has* the credentials 
available, but it refuses to work just because it cannot detect whether 
they are available or not.
-- 
Giovanni Bajo
Develer S.r.l.
http://www.develer.com



More information about the Svnmerge mailing list