mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
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:
parent
d6b5dd4cf7
commit
ae21ef395a
@ -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)
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user