diff options
Diffstat (limited to 'project.py')
| -rw-r--r-- | project.py | 16 |
1 files changed, 15 insertions, 1 deletions
| @@ -49,6 +49,9 @@ MAXIMUM_RETRY_SLEEP_SEC = 3600.0 | |||
| 49 | # +-10% random jitter is added to each Fetches retry sleep duration. | 49 | # +-10% random jitter is added to each Fetches retry sleep duration. |
| 50 | RETRY_JITTER_PERCENT = 0.1 | 50 | RETRY_JITTER_PERCENT = 0.1 |
| 51 | 51 | ||
| 52 | # Whether to use alternates. | ||
| 53 | # TODO(vapier): Remove knob once behavior is verified. | ||
| 54 | _ALTERNATES = os.environ.get('REPO_USE_ALTERNATES') == '1' | ||
| 52 | 55 | ||
| 53 | def _lwrite(path, content): | 56 | def _lwrite(path, content): |
| 54 | lock = '%s.lock' % path | 57 | lock = '%s.lock' % path |
| @@ -460,7 +463,7 @@ class RemoteSpec(object): | |||
| 460 | 463 | ||
| 461 | class Project(object): | 464 | class Project(object): |
| 462 | # These objects can be shared between several working trees. | 465 | # These objects can be shared between several working trees. |
| 463 | shareable_dirs = ['hooks', 'objects', 'rr-cache'] | 466 | shareable_dirs = ['hooks', 'rr-cache'] |
| 464 | 467 | ||
| 465 | def __init__(self, | 468 | def __init__(self, |
| 466 | manifest, | 469 | manifest, |
| @@ -1143,6 +1146,17 @@ class Project(object): | |||
| 1143 | self._UpdateHooks(quiet=quiet) | 1146 | self._UpdateHooks(quiet=quiet) |
| 1144 | self._InitRemote() | 1147 | self._InitRemote() |
| 1145 | 1148 | ||
| 1149 | if _ALTERNATES or self.manifest.is_multimanifest: | ||
| 1150 | # If gitdir/objects is a symlink, migrate it from the old layout. | ||
| 1151 | gitdir_objects = os.path.join(self.gitdir, 'objects') | ||
| 1152 | if platform_utils.islink(gitdir_objects): | ||
| 1153 | platform_utils.remove(gitdir_objects, missing_ok=True) | ||
| 1154 | gitdir_alt = os.path.join(self.gitdir, 'objects/info/alternates') | ||
| 1155 | if not os.path.exists(gitdir_alt): | ||
| 1156 | os.makedirs(os.path.dirname(gitdir_alt), exist_ok=True) | ||
| 1157 | _lwrite(gitdir_alt, os.path.join( | ||
| 1158 | os.path.relpath(self.objdir, gitdir_objects), 'objects') + '\n') | ||
| 1159 | |||
| 1146 | if is_new: | 1160 | if is_new: |
| 1147 | alt = os.path.join(self.objdir, 'objects/info/alternates') | 1161 | alt = os.path.join(self.objdir, 'objects/info/alternates') |
| 1148 | try: | 1162 | try: |
