public async Task CheckoutAsync(FilePath targetLocalPath, Revision rev, bool recurse, ProgressMonitor monitor) { var metadata = new MultipathOperationMetadata(VersionControlSystem) { Recursive = recurse }; using (var tracker = Instrumentation.CheckoutCounter.BeginTiming(metadata, monitor.CancellationToken)) { try { ClearCachedVersionInfo(targetLocalPath); await OnCheckoutAsync(targetLocalPath, rev, recurse, monitor); if (!Directory.Exists(targetLocalPath)) { metadata.SetFailure(); } else { metadata.SetSuccess(); } } catch { metadata.SetFailure(); throw; } } }
// Locks a file in the repository so no other users can change it public void Lock(ProgressMonitor monitor, params FilePath[] localPaths) { var metadata = new MultipathOperationMetadata(VersionControlSystem) { PathsCount = localPaths.Length }; using (var tracker = Instrumentation.LockCounter.BeginTiming(metadata, monitor.CancellationToken)) { try { ClearCachedVersionInfo(localPaths); OnLock(monitor, localPaths); } catch { metadata.SetFailure(); throw; } } }
// Commits changes in a set of files or directories into the repository public async Task CommitAsync(ChangeSet changeSet, ProgressMonitor monitor) { var metadata = new MultipathOperationMetadata(VersionControlSystem) { PathsCount = changeSet.Count }; using (var tracker = Instrumentation.CommitCounter.BeginTiming(metadata, monitor.CancellationToken)) { try { ClearCachedVersionInfo(changeSet.BaseLocalPath); await OnCommitAsync(changeSet, monitor); } catch { metadata.SetFailure(); throw; } } }
// Unignores a file for version control operations. public async Task UnignoreAsync(FilePath[] localPath, CancellationToken cancellationToken = default) { var metadata = new MultipathOperationMetadata(VersionControlSystem) { PathsCount = localPath.Length }; using (var tracker = Instrumentation.UnignoreCounter.BeginTiming(metadata)) { try { ClearCachedVersionInfo(localPath); await OnUnignoreAsync(localPath, cancellationToken); } catch { metadata.SetFailure(); throw; } } }
public void Update(FilePath[] localPaths, bool recurse, ProgressMonitor monitor) { var metadata = new MultipathOperationMetadata(VersionControlSystem) { PathsCount = localPaths.Length, Recursive = recurse }; using (var tracker = Instrumentation.UpdateCounter.BeginTiming(metadata, monitor.CancellationToken)) { try { OnUpdate(localPaths, recurse, monitor); ClearCachedVersionInfo(localPaths); } catch { metadata.SetFailure(); throw; } } }
// Unignores a file for version control operations. public void Unignore(FilePath[] localPath) { var metadata = new MultipathOperationMetadata(VersionControlSystem) { PathsCount = localPath.Length }; using (var tracker = Instrumentation.UnignoreCounter.BeginTiming(metadata)) { try { ClearCachedVersionInfo(localPath); OnUnignore(localPath); } catch { metadata.SetFailure(); throw; } } }
public async Task AddAsync(FilePath [] localPaths, bool recurse, ProgressMonitor monitor) { var metadata = new MultipathOperationMetadata(VersionControlSystem) { PathsCount = localPaths.Length, Recursive = recurse }; using (var tracker = Instrumentation.AddCounter.BeginTiming(metadata, monitor.CancellationToken)) { try { await OnAddAsync(localPaths, recurse, monitor); } catch (Exception e) { LoggingService.LogError("Failed to add file", e); metadata.SetFailure(); } finally { ClearCachedVersionInfo(localPaths); } } }