Show More
@@ -31,6 +31,7 b' import os' | |||
|
31 | 31 | import re |
|
32 | 32 | import time |
|
33 | 33 | import warnings |
|
34 | import shutil | |
|
34 | 35 | |
|
35 | 36 | from zope.cachedescriptors.property import Lazy as LazyProperty |
|
36 | 37 | |
@@ -521,6 +522,9 b' class BaseRepository(object):' | |||
|
521 | 522 | """ |
|
522 | 523 | raise NotImplementedError |
|
523 | 524 | |
|
525 | def _get_shadow_repository_path(self, workspace_id): | |
|
526 | raise NotImplementedError | |
|
527 | ||
|
524 | 528 | def cleanup_merge_workspace(self, workspace_id): |
|
525 | 529 | """ |
|
526 | 530 | Remove merge workspace. |
@@ -530,7 +534,23 b' class BaseRepository(object):' | |||
|
530 | 534 | |
|
531 | 535 | :param workspace_id: `workspace_id` unique identifier. |
|
532 | 536 | """ |
|
533 | raise NotImplementedError | |
|
537 | shadow_repository_path = self._get_shadow_repository_path(workspace_id) | |
|
538 | shadow_repository_path_del = '{}.{}.delete'.format( | |
|
539 | shadow_repository_path, time.time()) | |
|
540 | ||
|
541 | # move the shadow repo, so it never conflicts with the one used. | |
|
542 | # we use this method because shutil.rmtree had some edge case problems | |
|
543 | # removing symlinked repositories | |
|
544 | if not os.path.isdir(shadow_repository_path): | |
|
545 | return | |
|
546 | ||
|
547 | shutil.move(shadow_repository_path, shadow_repository_path_del) | |
|
548 | try: | |
|
549 | shutil.rmtree(shadow_repository_path_del, ignore_errors=False) | |
|
550 | except Exception: | |
|
551 | log.exception('Failed to gracefully remove shadow repo under %s', | |
|
552 | shadow_repository_path_del) | |
|
553 | shutil.rmtree(shadow_repository_path_del, ignore_errors=True) | |
|
534 | 554 | |
|
535 | 555 | # ========== # |
|
536 | 556 | # COMMIT API # |
@@ -25,7 +25,6 b' GIT repository module' | |||
|
25 | 25 | import logging |
|
26 | 26 | import os |
|
27 | 27 | import re |
|
28 | import shutil | |
|
29 | 28 | |
|
30 | 29 | from zope.cachedescriptors.property import Lazy as LazyProperty |
|
31 | 30 | |
@@ -983,7 +982,3 b' class GitRepository(BaseRepository):' | |||
|
983 | 982 | shadow_repository_path, target_ref.name, source_ref.name) |
|
984 | 983 | |
|
985 | 984 | return shadow_repository_path |
|
986 | ||
|
987 | def cleanup_merge_workspace(self, workspace_id): | |
|
988 | shadow_repository_path = self._get_shadow_repository_path(workspace_id) | |
|
989 | shutil.rmtree(shadow_repository_path, ignore_errors=True) |
@@ -24,7 +24,6 b' HG repository module' | |||
|
24 | 24 | import os |
|
25 | 25 | import logging |
|
26 | 26 | import binascii |
|
27 | import shutil | |
|
28 | 27 | import urllib |
|
29 | 28 | |
|
30 | 29 | from zope.cachedescriptors.property import Lazy as LazyProperty |
@@ -711,10 +710,6 b' class MercurialRepository(BaseRepository' | |||
|
711 | 710 | |
|
712 | 711 | return shadow_repository_path |
|
713 | 712 | |
|
714 | def cleanup_merge_workspace(self, workspace_id): | |
|
715 | shadow_repository_path = self._get_shadow_repository_path(workspace_id) | |
|
716 | shutil.rmtree(shadow_repository_path, ignore_errors=True) | |
|
717 | ||
|
718 | 713 | def _merge_repo(self, shadow_repository_path, target_ref, |
|
719 | 714 | source_repo, source_ref, merge_message, |
|
720 | 715 | merger_name, merger_email, dry_run=False, |
General Comments 0
You need to be logged in to leave comments.
Login now