#!/usr/bin/env python # -*- Mode: python coding: utf-8 -*- # # author diverKon # version 0.1 # Copyright(C) KK.Kon # licenes http://opensource.org/licenses/bsd-license.php New BSD License # since 2012-01-13 import os import sys #print(sys.path) from svn import fs, repos, core, client, delta from svn.core import SubversionException if ( 2 != len(sys.argv) ): print( 'Usage: repo_path' ) quit() #import codecs #sys.stdout = codecs.getwriter('utf_8')(sys.stdout) #sys.stdout = codecs.getwriter('unicode')(sys.stdout) myrepos = repos.open( sys.argv[1] ); myfs = repos.fs( myrepos ) myrev = fs.youngest_rev( myfs ) def conv_encoding( data, to_enc="utf_8"): lookups = ('utf_8', 'euc_jp', 'cp932', 'ascii' ) for encoding in lookups: try: data = data.decode( encoding ) break except: pass if isinstance( data, unicode ): return data.encode( to_enc ) else: return data for rev in range(1, myrev): rev_log = fs.revision_prop( myfs, rev, 'svn:log' ) print 'revision=', rev #print 'rev_log=', rev_log if None == rev_log: continue svnlog_utf8 = conv_encoding( rev_log ) #print 'rev_log=', svnlog_utf8 print 'rev_log=', unicode( svnlog_utf8, 'utf_8' ) #fs.change_rev_prop( myfs, rev, 'svn:log', svnlog_utf8 ); #logs = [] #def addLog( paths, revision, author, date, message, pool): # if paths is not None: # print 'revision=', revision # print 'date=', date # #print 'message=', message # message_utf8 = conv_encoding( message ) # #print 'message_utf8=', message_utf8 # print 'message_utf8=', unicode(message_utf8, 'utf_8' ) # logs.append( paths ) # #repos.get_logs( myrepos, ['/'], myrev, 0, True, 0, addLog)