我想弄清楚如何执行以下操作
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包装器获取特定文件的更改?
答案 0 :(得分:0)
这似乎是pysvn
中的错误。函数diff
默默地假设文件的utf8
编码,但是如果文件具有不同的编码(例如ISO 8859-1
,也称为Latin-1
),则使用ASCII码的字符> 127 = 0x7f
(例如0xda
中的Latin-1
='Ö')被错误地解释为多字节字符,在许多情况下,这将导致不存在字节组合,因此出现解码错误。
我本人和filed a bug刚遇到此错误。