Mercurial > hgsubversion
comparison svnwrap/svn_swig_wrapper.py @ 97:0d3a2a7cefa3
hg_delta_editor: fix symlink prefix confusion
- SubversionRepo.get_file() strips the symlink prefix
- Enforce that hg_delta_editor symlink data always contains the prefix. The
alternative was seducing and more consistent with hg content but it makes the
code more complicated since svn:special can be set before or after the content
is set, and we need it in apply_textdelta()
This issue fixes jQuery repository conversion at r3674.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Thu, 20 Nov 2008 22:41:15 -0600 |
parents | 7486c6f6cccc |
children | 04c92c2c4501 |
comparison
equal
deleted
inserted
replaced
96:9b5e528f67f8 | 97:0d3a2a7cefa3 |
---|---|
429 os.chdir(old_cwd) | 429 os.chdir(old_cwd) |
430 | 430 |
431 def get_file(self, path, revision): | 431 def get_file(self, path, revision): |
432 """Return content and mode of file at given path and revision. | 432 """Return content and mode of file at given path and revision. |
433 | 433 |
434 Content is raw svn content, symlinks content is still prefixed | 434 "link " prefix is dropped from symlink content. Mode is 'x' if |
435 by 'link '. Mode is 'x' if file is executable, 'l' if a symlink, | 435 file is executable, 'l' if a symlink, the empty string |
436 the empty string otherwise. If the file does not exist at this | 436 otherwise. If the file does not exist at this revision, raise |
437 revision, raise IOError. | 437 IOError. |
438 """ | 438 """ |
439 mode = '' | 439 mode = '' |
440 out = cStringIO.StringIO() | 440 out = cStringIO.StringIO() |
441 try: | 441 try: |
442 info = ra.get_file(self.ra, path, revision, out) | 442 info = ra.get_file(self.ra, path, revision, out) |
449 core.SVN_ERR_RA_DAV_PATH_NOT_FOUND) | 449 core.SVN_ERR_RA_DAV_PATH_NOT_FOUND) |
450 if e.apr_err in notfound: # File not found | 450 if e.apr_err in notfound: # File not found |
451 raise IOError() | 451 raise IOError() |
452 raise | 452 raise |
453 data = out.getvalue() | 453 data = out.getvalue() |
454 if mode == 'l': | |
455 linkprefix = "link " | |
456 if data.startswith(linkprefix): | |
457 data = data[len(linkprefix):] | |
454 return data, mode | 458 return data, mode |
455 | 459 |
456 def proplist(self, path, revision, recurse=False): | 460 def proplist(self, path, revision, recurse=False): |
457 if path[-1] == '/': | 461 if path[-1] == '/': |
458 path = path[:-1] | 462 path = path[:-1] |