SubversionRepo: do not use temporary file in get_file()

Existing code says swig bindings do not support StringIO objects as output for
svn.ra.get_file(). This issue was never reported in the convert extension.
This commit is contained in:
Patrick Mezard 2008-11-09 18:08:35 -06:00
parent d6b5dd4cf7
commit ae21ef395a
2 changed files with 11 additions and 16 deletions

View File

@ -349,12 +349,8 @@ def stupid_svn_server_pull_rev(ui, svn, hg_editor, r):
f = open(file_path, 'w')
f.write(svn.get_file(diff_path+'/'+m, r.revnum))
f.close()
except core.SubversionException, e:
if (e.message.endswith("' path not found")
or e.message.startswith("File not found: revision")):
pass
else:
raise
except IOError:
pass
d2 = empty_file_patch_wont_make_re.sub('', d)
d2 = property_exec_set_re.sub('', d2)
d2 = property_exec_removed_re.sub('', d2)

View File

@ -391,17 +391,16 @@ class SubversionRepo(object):
def get_file(self, path, revision):
out = cStringIO.StringIO()
tmpdir = tempfile.mkdtemp('svnwrap_temp')
try:
# hot tip: the swig bridge doesn't like StringIO for these bad boys
out_path = os.path.join(tmpdir, 'diffout')
out = open(out_path, 'w')
ra.get_file(self.ra, path,revision, out , None)
out.close()
x = open(out_path).read()
return x
finally:
shutil.rmtree(tmpdir)
ra.get_file(self.ra, path, revision, out)
except core.SubversionException, e:
notfound = (core.SVN_ERR_FS_NOT_FOUND,
core.SVN_ERR_RA_DAV_PATH_NOT_FOUND)
if e.apr_err in notfound: # File not found
raise IOError()
raise
data = out.getvalue()
return data
def proplist(self, path, revision, recurse=False):
rev = core.svn_opt_revision_t()