2010-05-15 6 views
4

j'ai le script suivant que j'utilise pour obtenir les messages du journal de svnpysvn client.log() retour dictionnaire vide

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() 

quand je lance ce script son retour un objet dictionnaire vide [<PysvnLog ''>, <PysvnLog ''>, <PysvnLog ''>,..

une idée de ce que je fais mal ici? J'utilise la version 1.7.2 pysvn construit à nouveau svn Version 1.6.5 acclamations Nash

Répondre

7

méthode pysvn.Client.log retourne une liste d'entrées de journal; chaque entrée de journal est un dictionnaire. (Voir pysvn Programmer's reference)

vous pouvez imprimer des messages de journal dans votre code comme ceci:

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

finalement obtenu cela fonctionne, et il semble que je ne comprends pas bien comment cette fonction particulière a travaillé, de toute façon ... pensé que je partagerais avec mes camarades!

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) 

si vous ne l'aimez pas compréhensions

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"] 

l'option de compréhension me donne ce qui suit

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