46
50
# Attempt to get the diff for these revisons
48
svnclient = pysvn.Client()
52
svnclient = ivle.svn.create_auth_svn_client(username=ivle.conf.login,
53
password=ivle.conf.svn_pass)
49
54
svnclient.exception_style = 1
50
55
diff = svnclient.diff
51
diff_text = diff( '/tmp/svndiff',
57
# pysvn's diff tempfile behaviour changes with Subversion 1.6.x.
58
# < 1.6 wants a filename, >= 1.6 wants a directory.
59
if pysvn.svn_version > (1, 6):
62
tmp_path = '/tmp/svndiff'
64
diff_text = diff(tmp_path,
52
65
os.path.join('/home', sys.argv[1]),
56
print cjson.encode({'diff': diff_text})
69
print cjson.encode({'diff': diff_text.decode('utf-8')})
57
70
except pysvn.ClientError, e:
62
75
# See subversion/include/svn_error_codes.h.
76
# 150000: ERR_ENTRY_NOT_FOUND
63
77
# 155007: WC_NOT_DIRECTORY.
64
78
# 160013: FS_NOT_FOUND
65
79
# 200005: UNVERSIONED_RESOURCE
66
if code in (155007, 160013, 200005):
80
if code in (150000, 155007, 160013, 200005):
69
83
error = '%s (code %d)' % (error, code)