Mercurial > hgsubversion
comparison fetch_command.py @ 79:2e47623fa174
fetch_command: handle failing svn.diff3() on Windows, fetch full revision
| author | Patrick Mezard <pmezard@gmail.com> |
|---|---|
| date | Sun, 09 Nov 2008 18:08:35 -0600 |
| parents | ed3dd5bf45da |
| children | b033d74be76b |
comparison
equal
deleted
inserted
replaced
| 78:072010a271c6 | 79:2e47623fa174 |
|---|---|
| 338 parent_ha = hg_editor.get_parent_revision(r.revnum, b) | 338 parent_ha = hg_editor.get_parent_revision(r.revnum, b) |
| 339 files_touched = set() | 339 files_touched = set() |
| 340 link_files = {} | 340 link_files = {} |
| 341 exec_files = {} | 341 exec_files = {} |
| 342 try: | 342 try: |
| 343 if br_p == b: | 343 try: |
| 344 d = svn.get_unified_diff(diff_path, r.revnum, deleted=False, | 344 if br_p == b: |
| 345 # letting patch handle binaries sounded | 345 # letting patch handle binaries sounded |
| 346 # cool, but it breaks patch in sad ways | 346 # cool, but it breaks patch in sad ways |
| 347 ignore_type=False) | 347 d = svn.get_unified_diff(diff_path, r.revnum, deleted=False, |
| 348 else: | 348 ignore_type=False) |
| 349 d = svn.get_unified_diff(diff_path, r.revnum, | 349 else: |
| 350 other_path=make_diff_path(br_p), | 350 d = svn.get_unified_diff(diff_path, r.revnum, |
| 351 other_rev=parent_rev, | 351 other_path=make_diff_path(br_p), |
| 352 deleted=True, ignore_type=True) | 352 other_rev=parent_rev, |
| 353 if d: | 353 deleted=True, ignore_type=True) |
| 354 ui.status('Branch creation with mods, pulling full rev.\n') | 354 if d: |
| 355 raise BadPatchApply() | 355 ui.status('Branch creation with mods, pulling full rev.\n') |
| 356 raise BadPatchApply() | |
| 357 except core.SubversionException, e: | |
| 358 # "Can't write to stream: The handle is invalid." | |
| 359 # This error happens systematically under Windows, possibly | |
| 360 # related to file handles being non-write shareable by default. | |
| 361 if e.apr_err != 720006: | |
| 362 raise | |
| 363 raise BadPatchApply() | |
| 364 | |
| 356 for m in binary_file_re.findall(d): | 365 for m in binary_file_re.findall(d): |
| 357 # we have to pull each binary file by hand as a fulltext, | 366 # we have to pull each binary file by hand as a fulltext, |
| 358 # which sucks but we've got no choice | 367 # which sucks but we've got no choice |
| 359 file_path = os.path.join(our_tempdir, m) | 368 file_path = os.path.join(our_tempdir, m) |
| 360 files_touched.add(m) | 369 files_touched.add(m) |
