private bool TryDownloadGitObjects(ITracer tracer, GVFSEnlistment enlistment) { string errorMessage = null; if (!this.ShowStatusWhileRunning( () => { RetryConfig retryConfig; if (!RetryConfig.TryLoadFromGitConfig(tracer, enlistment, out retryConfig, out errorMessage)) { errorMessage = "Failed to determine GVFS timeout and max retries: " + errorMessage; return(false); } CacheServerInfo cacheServer = new CacheServerInfo(enlistment.RepoUrl, null); using (GitObjectsHttpRequestor objectRequestor = new GitObjectsHttpRequestor(tracer, enlistment, cacheServer, retryConfig)) { PhysicalFileSystem fileSystem = new PhysicalFileSystem(); GitRepo gitRepo = new GitRepo(tracer, enlistment, fileSystem); GVFSGitObjects gitObjects = new GVFSGitObjects(new GVFSContext(tracer, fileSystem, gitRepo, enlistment), objectRequestor); GitProcess.Result revParseResult = enlistment.CreateGitProcess().RevParse("HEAD"); if (revParseResult.HasErrors) { errorMessage = "Unable to determine HEAD commit id: " + revParseResult.Errors; return(false); } string headCommit = revParseResult.Output.TrimEnd('\n'); if (!this.TryDownloadCommit(headCommit, enlistment, objectRequestor, gitObjects, gitRepo, out errorMessage) || !this.TryDownloadRootGitAttributes(enlistment, gitObjects, gitRepo, out errorMessage)) { return(false); } } return(true); }, "Downloading git objects", suppressGvfsLogMessage: true)) { this.WriteMessage(tracer, errorMessage); return(false); } return(true); }
protected bool TrySetGitConfig(ITracer tracer, string enlistmentRoot, Dictionary <string, string> configSettings, out string errorMessage) { errorMessage = null; GVFSEnlistment enlistment = GVFSEnlistment.CreateFromDirectory( enlistmentRoot, GVFSPlatform.Instance.GitInstallation.GetInstalledGitBinPath(), ProcessHelper.GetCurrentProcessLocation()); GitProcess git = enlistment.CreateGitProcess(); foreach (string key in configSettings.Keys) { GitProcess.Result result = git.SetInLocalConfig(key, configSettings[key]); if (result.HasErrors) { tracer.RelatedError("Could not set git config setting {0}. Error: {1}", key, result.Errors); return(false); } } return(true); }