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