pysvn client.log () возвращает пустой словарь - PullRequest
4 голосов
/ 15 мая 2010

У меня есть следующий скрипт, который я использую для получения сообщений журнала от SVN

import pysvn
class  svncheck(): 
    def __init__(self, svn_root="http://10.11.25.3/svn/Moodle/modules", svn_user=None, svn_password=None):
        self.user = svn_user
        self.password = svn_password
        self.root = svn_root

    def diffrence(self): 
        client = pysvn.Client()
        client.commit_info_style = 1
        client.callback_notify = self.notify
        client.callback_get_login = self.credentials
        log  = client.log(
        self.root, 
        revision_start=pysvn.Revision( pysvn.opt_revision_kind.number, 0),
        revision_end=pysvn.Revision( pysvn.opt_revision_kind.number, 5829),
        discover_changed_paths=True,
        strict_node_history=True,
        limit=0,
        include_merged_revisions=False,
        )
        print log
    def notify( event_dict ):
        print event_dict
        return   

    def credentials(realm, username, may_save):
           return True, self.user, self.password, True



s = svncheck()
s.diffrence()

когда я запускаю этот скрипт, он возвращает пустой словарный объект [<PysvnLog ''>, <PysvnLog ''>, <PysvnLog ''>,..

Есть идеи, что я здесь делаю не так? я использую pysvn версии 1.7.2, снова собрал svn версии 1.6.5 ура Nash

Ответы [ 2 ]

8 голосов
/ 08 сентября 2010

Метод pysvn.Client.log возвращает список записей журнала; каждая запись журнала представляет собой словарь. (см. pysvn Справочник программиста )

вы можете распечатать сообщения журнала в вашем коде так:

for info in log:
    print info.revision.number,
    print info.author,
    print time.ctime(info.date),
    print info.message
2 голосов
/ 23 февраля 2012

наконец-то заставил это работать, и, похоже, я не до конца понял, как работает эта функция, во всяком случае ... думал, что поделюсь с друзьями!

    start_rev = 10
    end_rev = 30
    url = http://dipidi.do.da/svn/foobar
    log_dict = dict((log.revision.number, log["message"]) for log in pysvn.Client().log(url,
                            revision_start=pysvn.Revision( pysvn.opt_revision_kind.number, start_rev ),
                            revision_end=pysvn.Revision( pysvn.opt_revision_kind.number, end_rev ),
                            discover_changed_paths=True,
                            strict_node_history=True,
                            limit=0))
    pprint(log_dict)

если вам не нравятся понимания

    for log in pysvn.Client().log(url,
        revision_start=pysvn.Revision( pysvn.opt_revision_kind.number, start_rev ),
        revision_end=pysvn.Revision( pysvn.opt_revision_kind.number, end_rev ),
        discover_changed_paths=True,
        strict_node_history=True,
        limit=0):
    print log.revision.number, log["author"], log["message"]

опция понимания дает мне следующее

    {10: 'testing my commits',
     11: 'whohooo this stuff is fun'}
...