使用svn + python

时间:2018-02-20 12:25:07

标签: python svn

我想弄清楚如何执行以下操作

svn diff –r REVNO:HEAD FilePath

使用svn python包装器。我尝试过以下方法:

import svn.local
l = svn.local.LocalClient(FilePath)
ModifiedFiles = l.diff_summary(6382,6383) #List of dicts containing modified files and some attributes
Difference = l.diff(6382, 6383, FilePath) #throws error

我收到错误:

  

Traceback(最近一次调用最后一次):文件   " D:/TEMP/SVN/comparison/GetLines.py" ;,第6行,在       差异= l.diff(6382,6383)文件" C:\ Python35 \ lib \ site-packages \ svn \ common.py",第447行,差异       for filter中的non_empty_diff(无,diff_result.decode(' utf8')。split('索引:')):UnicodeDecodeError:   ' UTF-8'编解码器不能解码位置396852中的字节0xda:无效   继续字节

在subversion命令行中,它工作正常。

如何使用python包装器获取特定文件的更改?

1 个答案:

答案 0 :(得分:0)

这似乎是pysvn中的错误。函数diff默默地假设文件的utf8编码,但是如果文件具有不同的编码(例如ISO 8859-1,也称为Latin-1),则使用ASCII码的字符> 127 = 0x7f(例如0xda中的Latin-1 ='Ö')被错误地解释为多字节字符,在许多情况下,这将导致不存在字节组合,因此出现解码错误。

我本人和filed a bug刚遇到此错误。