これが私のコードです
#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys
import pysvn
def main():
client = pysvn.Client()
client.callback_get_login = lambda realm, username, may_save:(True, "myusername", "mypasswd", True)
print client.cat('http://svn.mydomain.com/file1.py')
print client.cat('http://svn.mydomain.com/file2.py')
return 0
if __name__ == "__main__":
sys.exit(main())
pysvnが2つのHTTPセッションを確立したことに気付きましたが、各セッションで、最初に「Authorization」ヘッダーなしでOPTIONメソッドを試し、サーバー応答401の後、「Authorization」ヘッダーを送信しました。
2つのURLは同じドメインにあるので、pysvnがサブシーケンスセッションでユーザー名/ passwdを直接送信しないのはなぜですか?
401が多すぎると、svnサーバーが応答しなくなったのではないかと思われるため、この質問があります。また、eclipseのsvnkitは正常に機能し、「Authorization」ヘッダーを自動的に送信します。
編集:アレックスマルテッリに:
Clientを呼び出すときに、書き込み可能であることがわかっている構成ディレクトリに明示的なパスを渡してみてください。
試したが、うまくいかなかった
サービングが2つのファイルに対して異なるレルムを送信している可能性があります
2つの応答の領域は同じです。
pysvnがlibsvnから「svn_client_cat2()」を呼び出しているように見えます。この関数は、同じURLと同じレルムに対しても、呼び出しの間にユーザー名/passwdをキャッシュしません。したがって、この問題に対してこれ以上できることはないと思います。libsvnに新しいインターフェイスを追加し、将来のアクションのためにusername / passwdをキャッシュすると、タスクに時間がかかりすぎます。とにかくありがとう!