Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        // 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;
                }
            }
        }
Ejemplo n.º 3
0
        // 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;
                }
            }
        }
Ejemplo n.º 4
0
        // 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;
                }
            }
        }
Ejemplo n.º 5
0
        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;
                }
            }
        }
Ejemplo n.º 6
0
        // 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;
                }
            }
        }
Ejemplo n.º 7
0
        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);
                }
            }
        }