2010-05-15 173 views
4

我有以下腳本,我使用當我運行此腳本它返回一個空的字典對象[<PysvnLog ''>, <PysvnLog ''>, <PysvnLog ''>,..pysvn client.log()返回空的字典

獲得從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() 

日誌消息

任何想法我在這裏做錯了嗎? 我使用內置再次SVN版本1.6.5 歡呼 納什

pysvn版本1.7.2

回答

7

pysvn.Client.log方法返回的日誌條目列表;每個日誌條目都是一本字典。 (見pysvn Programmer's reference

可以打印登錄在你的代碼的消息是這樣的:

for info in log: 
    print info.revision.number, 
    print info.author, 
    print time.ctime(info.date), 
    print info.message 
2

終於得到了這個工作,而且我似乎並沒有完全理解這個特殊的功能是如何工作的,總之......以爲我會與我的同伴分享!

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'}