private void InitializeCachePathsFromRepoMetadata( ITracer tracer, GSDEnlistment enlistment) { string error; string gitObjectsRoot; if (!RepoMetadata.Instance.TryGetGitObjectsRoot(out gitObjectsRoot, out error)) { this.ReportErrorAndExit(tracer, "Failed to determine git objects root from repo metadata: " + error); } if (string.IsNullOrWhiteSpace(gitObjectsRoot)) { this.ReportErrorAndExit(tracer, "Invalid git objects root (empty or whitespace)"); } string localCacheRoot; if (!RepoMetadata.Instance.TryGetLocalCacheRoot(out localCacheRoot, out error)) { this.ReportErrorAndExit(tracer, "Failed to determine local cache path from repo metadata: " + error); } // Note: localCacheRoot is allowed to be empty, this can occur when upgrading from disk layout version 11 to 12 string blobSizesRoot; if (!RepoMetadata.Instance.TryGetBlobSizesRoot(out blobSizesRoot, out error)) { this.ReportErrorAndExit(tracer, "Failed to determine blob sizes root from repo metadata: " + error); } if (string.IsNullOrWhiteSpace(blobSizesRoot)) { this.ReportErrorAndExit(tracer, "Invalid blob sizes root (empty or whitespace)"); } enlistment.InitializeCachePaths(localCacheRoot, gitObjectsRoot, blobSizesRoot); }