protected VersionControlSystem(ISourceControlConnectionSettingsSource settings,
		                               ICheckConnectionErrorResolver errorResolver, IActivityLogger logger)
		{
			_settings = settings;
			_errorResolver = errorResolver;
			_logger = logger;
		}
        public IVersionControlSystem Get(ISourceControlConnectionSettingsSource settings)
        {
            var vcsArgs = new ExplicitArguments();

            vcsArgs.Set(settings);
            return(ObjectFactory.GetInstance <IVersionControlSystem>(vcsArgs));
        }
 protected VersionControlSystem(ISourceControlConnectionSettingsSource settings,
                                ICheckConnectionErrorResolver errorResolver, IActivityLogger logger)
 {
     _settings      = settings;
     _errorResolver = errorResolver;
     _logger        = logger;
 }
		public GitVersionControlSystem(ISourceControlConnectionSettingsSource settings,
		                               ICheckConnectionErrorResolver errorResolver, IActivityLogger logger,
		                               IDiffProcessor diffProcessor, IStorageRepository profile)
			: base(settings, errorResolver, logger)
		{
			_diffProcessor = diffProcessor;
			_git = new GitClient(settings, profile.Get<GitRepositoryFolder>());
		}
Пример #5
0
 private TfsVersionControlSystem CreateTfs(ISourceControlConnectionSettingsSource settings)
 {
     return(new TfsVersionControlSystem(
                settings,
                ObjectFactory.GetInstance <ICheckConnectionErrorResolver>(),
                ObjectFactory.GetInstance <IActivityLogger>(),
                ObjectFactory.GetInstance <IDiffProcessor>()));
 }
		protected VersionControlSystemProcessorBase(IRevisionIdComparer revisionComparer, IStorageRepository storage, ISourceControlConnectionSettingsSource settingsSource, IVersionControlSystem versionControlSystem, ILocalBus bus, IActivityLogger logger)
		{
			RevisionComparer = revisionComparer;
			Storage = storage;
			VersionControlSystem = versionControlSystem;
			Bus = bus;
			Logger = logger;
			StartRevision = revisionComparer.ConvertToRevisionId(settingsSource.StartRevision);
		}
 public GitVersionControlSystem(ISourceControlConnectionSettingsSource settings,
                                ICheckConnectionErrorResolver errorResolver, IActivityLogger logger,
                                IDiffProcessor diffProcessor, IStorageRepository profile, IRevisionIdComparer revisionComparer)
     : base(settings, errorResolver, logger)
 {
     _diffProcessor    = diffProcessor;
     _revisionComparer = revisionComparer;
     _git = new GitClient(settings, profile.Get <GitRepositoryFolder>());
 }
 private MercurialVersionControlSystem CreateMercurial(ISourceControlConnectionSettingsSource settings)
 {
     return(new MercurialVersionControlSystem(
                settings,
                ObjectFactory.GetInstance <ICheckConnectionErrorResolver>(),
                ObjectFactory.GetInstance <IActivityLogger>(),
                ObjectFactory.GetInstance <IDiffProcessor>(),
                ObjectFactory.GetInstance <IStorageRepository>()));
 }
Пример #9
0
        public static TfsConnectionParameters GetTfsConnectionParameters(ISourceControlConnectionSettingsSource settings)
        {
            try
            {
                var parameters = new TfsConnectionParameters {
                    Credential = CreateCredential(settings)
                };

                var      uri = new Uri(settings.Uri);
                string[] absolutePathSegments     = uri.LocalPath.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
                string   possibleVirtualDirectory = absolutePathSegments[0];
                string[] segements          = settings.Uri.Split('/');
                string[] serverPathSegments = segements.TakeWhile(x => !x.Equals(possibleVirtualDirectory, StringComparison.OrdinalIgnoreCase)).ToArray();
                string   serverPath         = String.Join("/", serverPathSegments);

                if (CheckTfsServerPath(serverPath, parameters.Credential))
                {
                    parameters.TfsCollectionUri = new Uri(serverPath + "/" + possibleVirtualDirectory);

                    if (absolutePathSegments.Length > 1)
                    {
                        parameters.TeamProjectName = absolutePathSegments[1];
                    }

                    parameters.SegmentsCount = absolutePathSegments.Length;

                    return(parameters);
                }

                serverPath += "/" + possibleVirtualDirectory;

                if (!CheckTfsServerPath(serverPath, parameters.Credential))
                {
                    throw new TeamFoundationServiceUnavailableException("Could not connect to server.");
                }

                string[] pathSegments = absolutePathSegments.SkipWhile(x => !x.Equals(absolutePathSegments[1], StringComparison.OrdinalIgnoreCase)).ToArray();

                parameters.TfsCollectionUri = new Uri(serverPath + "/" + pathSegments[0]);

                if (pathSegments.Length > 1)
                {
                    parameters.TeamProjectName = pathSegments[1];
                }

                parameters.SegmentsCount = pathSegments.Length;
                return(parameters);
            }
            catch (TeamFoundationServiceUnavailableException)
            {
                throw;
            }
            catch
            {
                throw new Exception("Wrong URI format.");
            }
        }
Пример #10
0
 public TfsVersionControlSystem(
     ISourceControlConnectionSettingsSource settings,
     ICheckConnectionErrorResolver errorResolver,
     IActivityLogger logger,
     IDiffProcessor diffProcessor)
     : base(settings, errorResolver, logger)
 {
     _diffProcessor = diffProcessor;
     _tfsClient     = new TfsClient(settings);
 }
 public MercurialVersionControlSystem(
     ISourceControlConnectionSettingsSource settings, 
     ICheckConnectionErrorResolver errorResolver, 
     IActivityLogger logger, 
     IDiffProcessor diffProcessor)
     : base(settings, errorResolver, logger)
 {
     _diffProcessor = diffProcessor;
     _mercurial = new MercurialClient(settings);
 }
Пример #12
0
 public MercurialVersionControlSystem(
     ISourceControlConnectionSettingsSource settings,
     ICheckConnectionErrorResolver errorResolver,
     IActivityLogger logger,
     IDiffProcessor diffProcessor,
     IStorageRepository profile) : base(settings, errorResolver, logger)
 {
     _diffProcessor = diffProcessor;
     _mercurial     = new MercurialClient(settings, profile.Get <MercurialRepositoryFolder>());
 }
		private static WorkItemStore GetWorkItemStore(ISourceControlConnectionSettingsSource settings)
		{
			TfsConnectionParameters parameters = TfsConnectionHelper.GetTfsConnectionParameters(settings);

			var teamProjectCollection = new TfsTeamProjectCollection(parameters.TfsCollectionUri, parameters.Credential);
			teamProjectCollection.EnsureAuthenticated();

			var workItemStore = teamProjectCollection.GetService<WorkItemStore>();

			return workItemStore;
		}
        private static WorkItemStore GetWorkItemStore(ISourceControlConnectionSettingsSource settings)
        {
            TfsConnectionParameters parameters = TfsConnectionHelper.GetTfsConnectionParameters(settings);

            var teamProjectCollection = new TfsTeamProjectCollection(parameters.TfsCollectionUri, parameters.Credential);

            teamProjectCollection.EnsureAuthenticated();

            var workItemStore = teamProjectCollection.GetService <WorkItemStore>();

            return(workItemStore);
        }
        public static TeamProject[] GetAvailableTeamProjects(ISourceControlConnectionSettingsSource settings)
        {
            var parameters = GetTfsConnectionParameters(settings);

            var collection = new TfsTeamProjectCollection(parameters.TfsCollectionUri, parameters.Credential);
            var vcs = collection.GetService<VersionControlServer>();

            if (string.IsNullOrEmpty(parameters.TeamProjectName))
                return vcs.GetAllTeamProjects(false);

            TeamProject teamProject = vcs.GetTeamProject(parameters.TeamProjectName);
            return new[] { teamProject };
        }
        public static TfsConnectionParameters GetTfsConnectionParameters(ISourceControlConnectionSettingsSource settings)
        {
            try
            {
                var parameters = new TfsConnectionParameters {Credential = CreateCredential(settings)};

                var uri = new Uri(settings.Uri);
                string[] absolutePathSegments = uri.LocalPath.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
                string possibleVirtualDirectory = absolutePathSegments[0];
                string[] segements = settings.Uri.Split('/');
                string[] serverPathSegments = segements.TakeWhile(x => !x.Equals(possibleVirtualDirectory, StringComparison.OrdinalIgnoreCase)).ToArray();
                string serverPath = String.Join("/", serverPathSegments);

                if (CheckTfsServerPath(serverPath, parameters.Credential))
                {
                    parameters.TfsCollectionUri = new Uri(serverPath + "/" + possibleVirtualDirectory);

                    if (absolutePathSegments.Length > 1)
                        parameters.TeamProjectName = absolutePathSegments[1];

                    parameters.SegmentsCount = absolutePathSegments.Length;

                    return parameters;
                }

                serverPath += "/" + possibleVirtualDirectory;

                if (!CheckTfsServerPath(serverPath, parameters.Credential))
                    throw new TeamFoundationServiceUnavailableException("Could not connect to server.");

                string[] pathSegments = absolutePathSegments.SkipWhile(x => !x.Equals(absolutePathSegments[1], StringComparison.OrdinalIgnoreCase)).ToArray();

                parameters.TfsCollectionUri = new Uri(serverPath + "/" + pathSegments[0]);

                if (pathSegments.Length > 1)
                    parameters.TeamProjectName = pathSegments[1];

                parameters.SegmentsCount = pathSegments.Length;
                return parameters;
            }
            catch (TeamFoundationServiceUnavailableException)
            {
                throw;
            }
            catch
            {
                throw new Exception("Wrong URI format.");
            }
        }
        private Repository GetClient(ISourceControlConnectionSettingsSource settings)
        {
            var repositoryFolder = GetLocalRepository(settings);

            if (IsRepositoryUriChanged(repositoryFolder, settings))
            {
                repositoryFolder.Delete();
                repositoryFolder = MercurialRepositoryFolder.Create(settings.Uri);
                _folder.ReplaceWith(repositoryFolder);
            }

            Repository repository;

            try
            {
                if (repositoryFolder.Exists())
                {
                    string path = repositoryFolder.GetAbsolutePath();
                    repository = new Repository(path, new NonPersistentClientFactory());
                    repository.Pull(settings.Uri);
                }
                else
                {
                    string path = repositoryFolder.GetAbsolutePath();
                    Directory.CreateDirectory(path);
                    CloneCommand cloneCommand = new CloneCommand().WithUpdate(false);
                    repository = new Repository(path, new NonPersistentClientFactory());
                    repository.Clone(settings.Uri, cloneCommand);
                }
            }
            catch (ArgumentNullException e)
            {
                throw new ArgumentException(
                          MercurialCheckConnectionErrorResolver.INVALID_URI_OR_INSUFFICIENT_ACCESS_RIGHTS_ERROR_MESSAGE, e);
            }
            catch (FileNotFoundException e)
            {
                throw new ArgumentException(
                          MercurialCheckConnectionErrorResolver.INVALID_URI_OR_INSUFFICIENT_ACCESS_RIGHTS_ERROR_MESSAGE, e);
            }
            catch (MercurialMissingException e)
            {
                throw new ArgumentException(
                          MercurialCheckConnectionErrorResolver.MERCURIAL_IS_NOT_INSTALLED_ERROR_MESSAGE, e);
            }

            return(repository);
        }
Пример #18
0
        public static TeamProject[] GetAvailableTeamProjects(ISourceControlConnectionSettingsSource settings)
        {
            var parameters = GetTfsConnectionParameters(settings);

            var collection = new TfsTeamProjectCollection(parameters.TfsCollectionUri, parameters.Credential);
            var vcs        = collection.GetService <VersionControlServer>();

            if (string.IsNullOrEmpty(parameters.TeamProjectName))
            {
                return(vcs.GetAllTeamProjects(false));
            }

            TeamProject teamProject = vcs.GetTeamProject(parameters.TeamProjectName);

            return(new[] { teamProject });
        }
Пример #19
0
        public static NetworkCredential CreateCredential(ISourceControlConnectionSettingsSource settings)
        {
            string domen = string.Empty;
            string login;

            if (settings.Login.IndexOf('\\') > 0)
            {
                domen = settings.Login.Substring(0, settings.Login.IndexOf('\\'));
                login = settings.Login.Substring(settings.Login.IndexOf('\\') + 1);
            }
            else
            {
                login = settings.Login;
            }

            NetworkCredential credential = string.IsNullOrEmpty(domen) ? new NetworkCredential(login, settings.Password) : new NetworkCredential(login, settings.Password, domen);

            return(credential);
        }
        private NGit.Api.Git GetClient(ISourceControlConnectionSettingsSource settings)
        {
            var repositoryFolder = GetLocalRepository(settings);

            if (IsRepositoryUriChanged(repositoryFolder, settings))
            {
                repositoryFolder.Delete();
                repositoryFolder = GitRepositoryFolder.Create(settings.Uri);
                _folder.ReplaceWith(repositoryFolder);
            }

            NGit.Api.Git nativeGit;

            try
            {
                var credentialsProvider = new UsernamePasswordCredentialsProvider(settings.Login, settings.Password);
                if (repositoryFolder.Exists())
                {
                    string path = repositoryFolder.GetAbsolutePath();
                    nativeGit = NGit.Api.Git.Open(path);
                }
                else
                {
                    string path = repositoryFolder.GetAbsolutePath();
                    nativeGit = NGit.Api.Git.CloneRepository()
                                .SetURI(settings.Uri)
                                .SetNoCheckout(true)
                                .SetCredentialsProvider(credentialsProvider)
                                .SetDirectory(path).Call();
                }
            }
            catch (EOFException ex)
            {
                throw new InvalidOperationException("Unable to connect to repository. Run 'git fsck' in the repository to check for possible errors.", ex);
            }
            catch (ArgumentNullException exception)
            {
                throw new ArgumentException(
                          GitCheckConnectionErrorResolver.INVALID_URI_OR_INSUFFICIENT_ACCESS_RIGHTS_ERROR_MESSAGE, exception);
            }

            return(nativeGit);
        }
        public static NetworkCredential CreateCredential(ISourceControlConnectionSettingsSource settings)
        {
            string domen = string.Empty;
            string login;

            if (settings.Login.IndexOf('\\') > 0)
            {
                domen = settings.Login.Substring(0, settings.Login.IndexOf('\\'));
                login = settings.Login.Substring(settings.Login.IndexOf('\\') + 1);
            }
            else
            {
                login = settings.Login;
            }

            NetworkCredential credential = string.IsNullOrEmpty(domen) ? new NetworkCredential(login, settings.Password) : new NetworkCredential(login, settings.Password, domen);

            return credential;
        }
        private GitRepositoryFolder GetLocalRepository(ISourceControlConnectionSettingsSource settings)
        {
            if (_folder.Empty())
            {
                var repositoryFolder = GitRepositoryFolder.Create(settings.Uri);
                _folder.ReplaceWith(repositoryFolder);
                return(repositoryFolder);
            }

            GitRepositoryFolder folder = _folder.Single();

            if (!folder.CheckFolder(_folder))
            {
                var repositoryFolder = GitRepositoryFolder.Create(settings.Uri);
                _folder.ReplaceWith(repositoryFolder);
                return(repositoryFolder);
            }

            return(folder);
        }
Пример #23
0
        public static TfsClientCredentials CreateCredential(ISourceControlConnectionSettingsSource settings)
        {
            var    domen = string.Empty;
            string login;

            if (settings.Login.IndexOf('\\') > 0)
            {
                domen = settings.Login.Substring(0, settings.Login.IndexOf('\\'));
                login = settings.Login.Substring(settings.Login.IndexOf('\\') + 1);
            }
            else
            {
                login = settings.Login;
            }

            var credential = string.IsNullOrEmpty(domen) ?
                             new TfsClientCredentials(new BasicAuthCredential(new NetworkCredential(login, settings.Password))) :
                             new TfsClientCredentials(new WindowsCredential(new NetworkCredential(login, settings.Password, domen)));

            return(credential);
        }
Пример #24
0
        private VersionControlServer GetVersionControl(ISourceControlConnectionSettingsSource settings)
        {
            VersionControlServer versionControl = null;

            TfsConnectionParameters parameters = TfsConnectionHelper.GetTfsConnectionParameters(settings);

            switch (parameters.SegmentsCount)
            {
            case UriTfsProjectCollection:
            {
                _teamProjectCollection = new TfsTeamProjectCollection(parameters.TfsCollectionUri, parameters.Credential);
                _teamProjectCollection.EnsureAuthenticated();

                versionControl = _teamProjectCollection.GetService <VersionControlServer>();
                _teamProjects  = versionControl.GetAllTeamProjects(false);

                break;
            }

            case UriTfsTeamProject:
            {
                _teamProjectCollection = new TfsTeamProjectCollection(parameters.TfsCollectionUri, parameters.Credential);
                _teamProjectCollection.EnsureAuthenticated();

                versionControl = _teamProjectCollection.GetService <VersionControlServer>();
                _teamProjects  = new TeamProject[] { versionControl.GetTeamProject(parameters.TeamProjectName) };

                break;
            }

            default:
                throw new Exception("Wrong URI format.");
            }

            return(versionControl);
        }
 private static bool IsRepositoryUriChanged(GitRepositoryFolder repositoryFolder,
                                            ISourceControlConnectionSettingsSource settings)
 {
     return((settings.Uri.ToLower() != repositoryFolder.RepoUri.ToLower()) && repositoryFolder.Exists());
 }
		public TfsWorkItemsStore(ISourceControlConnectionSettingsSource settings)
		{
			_workItemStore = new TfsWorkItemStoreClient(settings);
		}
Пример #27
0
		private GitRepositoryFolder GetLocalRepository(ISourceControlConnectionSettingsSource settings)
		{
			if (_folder.Empty())
			{
				var repositoryFolder = GitRepositoryFolder.Create(settings.Uri);
				_folder.ReplaceWith(repositoryFolder);
				return repositoryFolder;
			}

            GitRepositoryFolder folder = _folder.Single();
            if (!folder.CheckFolder(_folder))
            {
                var repositoryFolder = GitRepositoryFolder.Create(settings.Uri);
                _folder.ReplaceWith(repositoryFolder);
                return repositoryFolder;
            }

            return folder;
		}
Пример #28
0
		private NGit.Api.Git GetClient(ISourceControlConnectionSettingsSource settings)
		{
			var repositoryFolder = GetLocalRepository(settings);
			if (IsRepositoryUriChanged(repositoryFolder, settings))
			{
				repositoryFolder.Delete();
				repositoryFolder = GitRepositoryFolder.Create(settings.Uri);
				_folder.ReplaceWith(repositoryFolder);
			}

			NGit.Api.Git nativeGit;

			try
			{
				var credentialsProvider = new UsernamePasswordCredentialsProvider(settings.Login, settings.Password);
				if (repositoryFolder.Exists())
				{
                    string path = repositoryFolder.GetAbsolutePath();
					nativeGit = NGit.Api.Git.Open(path);
				}
				else
				{
                    string path = repositoryFolder.GetAbsolutePath();
					nativeGit = NGit.Api.Git.CloneRepository()
						.SetURI(settings.Uri)
						.SetNoCheckout(true)
						.SetCredentialsProvider(credentialsProvider)
						.SetDirectory(path).Call();
				}
			}
			catch (EOFException ex)
			{
				throw new InvalidOperationException("Unable to connect to repository. Run 'git fsck' in the repository to check for possible errors.", ex);
			}
			catch (ArgumentNullException exception)
			{
				throw new ArgumentException(
					GitCheckConnectionErrorResolver.INVALID_URI_OR_INSUFFICIENT_ACCESS_RIGHTS_ERROR_MESSAGE, exception);
			}

			return nativeGit;
		}
		public Subversion(ISourceControlConnectionSettingsSource settings, ICheckConnectionErrorResolver errorResolver, IActivityLogger logger, IDiffProcessor diffProcessor)
			: base(settings, errorResolver, logger)
		{
			_diffProcessor = diffProcessor;
			Connect();
		}
		public static TfsClientCredentials CreateCredential(ISourceControlConnectionSettingsSource settings)
		{
			var domen = string.Empty;
			string login;

			if (settings.Login.IndexOf('\\') > 0)
			{
				domen = settings.Login.Substring(0, settings.Login.IndexOf('\\'));
				login = settings.Login.Substring(settings.Login.IndexOf('\\') + 1);
			}
			else
			{
				login = settings.Login;
			}

			var credential = string.IsNullOrEmpty(domen) ? 
				new TfsClientCredentials(new BasicAuthCredential(new NetworkCredential(login, settings.Password))) : 
				new TfsClientCredentials(new WindowsCredential(new NetworkCredential(login, settings.Password, domen)));

			return credential;
		}
 public TfsWorkItemsStore(ISourceControlConnectionSettingsSource settings)
 {
     _workItemStore = new TfsWorkItemStoreClient(settings);
 }
 public MercurialClient(ISourceControlConnectionSettingsSource settings, IStorage <MercurialRepositoryFolder> folder)
 {
     _settings   = settings;
     _folder     = folder;
     _repository = GetClient(settings);
 }
 public TfsWorkItemStoreClient(ISourceControlConnectionSettingsSource settings)
 {
     _settings      = settings as TfsCurrentProfileToConnectionSettingsAdapter;
     _workItemStore = GetWorkItemStore(_settings);
 }
Пример #34
0
 private MercurialVersionControlSystem CreateMercurial(ISourceControlConnectionSettingsSource settings)
 {
     return new MercurialVersionControlSystem(
         settings,
         ObjectFactory.GetInstance<ICheckConnectionErrorResolver>(),
         ObjectFactory.GetInstance<IActivityLogger>(),
         ObjectFactory.GetInstance<IDiffProcessor>(),
         ObjectFactory.GetInstance<IStorageRepository>());
 }
		private VersionControlServer GetVersionControl(ISourceControlConnectionSettingsSource settings)
		{
			VersionControlServer versionControl;

			TfsConnectionParameters parameters = TfsConnectionHelper.GetTfsConnectionParameters(settings);

			switch (parameters.SegmentsCount)
			{
				case UriTfsProjectCollection:
					{
						_teamProjectCollection = new TfsTeamProjectCollection(parameters.TfsCollectionUri, parameters.Credential);
						_teamProjectCollection.EnsureAuthenticated();

						versionControl = _teamProjectCollection.GetService<VersionControlServer>();
						_teamProjects = versionControl.GetAllTeamProjects(false);

						break;
					}
				case UriTfsTeamProject:
					{
						_teamProjectCollection = new TfsTeamProjectCollection(parameters.TfsCollectionUri, parameters.Credential);
						_teamProjectCollection.EnsureAuthenticated();

						try
						{
							versionControl = _teamProjectCollection.GetService<VersionControlServer>();
							_teamProjects = new[] { versionControl.GetTeamProject(parameters.TeamProjectName) };
						}
						catch (Microsoft.TeamFoundation.VersionControl.Client.VersionControlException)
						{
							var gitRepositoryService = _teamProjectCollection.GetService<GitRepositoryService>();
							var gitRepositories = gitRepositoryService.QueryRepositories(parameters.TeamProjectName);
							var gitRepository = gitRepositories.Single(gr => gr.Name.Equals(parameters.TeamProjectName));
							if (gitRepository != null)
							{
								throw new VersionControlException($"Git team project is not supported, use Git plugin with '{gitRepository.RemoteUrl}' instead.");
							}
							throw;
						}
						break;
					}
				default:
					throw new Exception("Wrong URI format.");
			}

			return versionControl;
		}
Пример #36
0
 public RepositoryRescanInitiatedMessageHandler(IVersionControlSystem versionControlSystem, IRevisionIdComparer revisionComparer, ILocalBus bus, ISourceControlConnectionSettingsSource settingsSource, IStorageRepository storage, IActivityLogger logger)
     : base(revisionComparer, storage, settingsSource, versionControlSystem, bus, logger)
 {
 }
Пример #37
0
 public TfsClient(ISourceControlConnectionSettingsSource settings)
 {
     _settings       = settings;
     _versionControl = GetVersionControl(_settings);
 }
		public TfsWorkItemStoreClient(ISourceControlConnectionSettingsSource settings)
		{
			_settings = settings as TfsCurrentProfileToConnectionSettingsAdapter;
			_workItemStore = GetWorkItemStore(_settings);
		}
Пример #39
0
 public VersionControlSystemListener(IVersionControlSystem versionControlSystem, IRevisionIdComparer revisionComparer, ILocalBus bus,
                                     IStorageRepository storage, ISourceControlConnectionSettingsSource settingsSource, IActivityLogger logger)
     : base(revisionComparer, storage, settingsSource, versionControlSystem, bus, logger)
 {
 }
 public MercurialClient(ISourceControlConnectionSettingsSource settings)
 {
     _settings = settings;
     _repository = GetClient(settings);
 }
        private Repository GetClient(ISourceControlConnectionSettingsSource settings)
        {
            var repositoryFolder = GetLocalRepository(settings);
            if (IsRepositoryUriChanged(repositoryFolder, settings))
            {
                repositoryFolder.Delete();
                repositoryFolder = MercurialRepositoryFolder.Create(settings.Uri);
                _folder.ReplaceWith(repositoryFolder);
            }

            Repository repository;

            try
            {
                if (repositoryFolder.Exists())
                {
                    string path = repositoryFolder.GetAbsolutePath();
                    repository = new Repository(path, new NonPersistentClientFactory());
                    repository.Pull(settings.Uri);
                }
                else
                {
                    string path = repositoryFolder.GetAbsolutePath();
                    Directory.CreateDirectory(path);
                    CloneCommand cloneCommand = new CloneCommand().WithUpdate(false);
                    repository = new Repository(path, new NonPersistentClientFactory());
                    repository.Clone(settings.Uri, cloneCommand);
                }
            }
            catch (ArgumentNullException e)
            {
                throw new ArgumentException(
                    MercurialCheckConnectionErrorResolver.INVALID_URI_OR_INSUFFICIENT_ACCESS_RIGHTS_ERROR_MESSAGE, e);
            }
            catch (FileNotFoundException e)
            {
                throw new ArgumentException(
                    MercurialCheckConnectionErrorResolver.INVALID_URI_OR_INSUFFICIENT_ACCESS_RIGHTS_ERROR_MESSAGE, e);
            }
            catch (MercurialMissingException e)
            {
                throw new ArgumentException(
                    MercurialCheckConnectionErrorResolver.MERCURIAL_IS_NOT_INSTALLED_ERROR_MESSAGE, e);
            }
            
            return repository;
        }
		private VersionControlServer GetVersionControl(ISourceControlConnectionSettingsSource settings)
		{
			VersionControlServer versionControl = null;

			TfsConnectionParameters parameters = TfsConnectionHelper.GetTfsConnectionParameters(settings);

			switch (parameters.SegmentsCount)
			{
				case UriTfsProjectCollection:
					{
						_teamProjectCollection = new TfsTeamProjectCollection(parameters.TfsCollectionUri, parameters.Credential);
						_teamProjectCollection.EnsureAuthenticated();

						versionControl = _teamProjectCollection.GetService<VersionControlServer>();
						_teamProjects = versionControl.GetAllTeamProjects(false);

						break;
					}
				case UriTfsTeamProject:
					{
						_teamProjectCollection = new TfsTeamProjectCollection(parameters.TfsCollectionUri, parameters.Credential);
						_teamProjectCollection.EnsureAuthenticated();

						versionControl = _teamProjectCollection.GetService<VersionControlServer>();
						_teamProjects = new TeamProject[] { versionControl.GetTeamProject(parameters.TeamProjectName) };

						break;
					}
				default:
					throw new Exception("Wrong URI format.");
			}

			return versionControl;
		}
        public MercurialClient(ISourceControlConnectionSettingsSource settings, IStorage<MercurialRepositoryFolder> folder)
		{
            _settings = settings;
            _folder = folder;
			_repository = GetClient(settings);
		}
Пример #44
0
 public Subversion(ISourceControlConnectionSettingsSource settings, ICheckConnectionErrorResolver errorResolver, IActivityLogger logger, IDiffProcessor diffProcessor)
     : base(settings, errorResolver, logger)
 {
     _diffProcessor = diffProcessor;
     Connect();
 }
		public IVersionControlSystem Get(ISourceControlConnectionSettingsSource settings)
		{
			var vcsArgs = new ExplicitArguments();
			vcsArgs.Set(settings);
			return ObjectFactory.GetInstance<IVersionControlSystem>(vcsArgs);
		}
Пример #46
0
		private static bool IsRepositoryUriChanged(GitRepositoryFolder repositoryFolder,
		                                           ISourceControlConnectionSettingsSource settings)
		{
			return (settings.Uri.ToLower() != repositoryFolder.RepoUri.ToLower()) && repositoryFolder.Exists();
		}
 public GitClient(ISourceControlConnectionSettingsSource settings, IStorage <GitRepositoryFolder> folder)
 {
     _settings = settings;
     _folder   = folder;
     _git      = GetClient(_settings);
 }
Пример #48
0
		public GitClient(ISourceControlConnectionSettingsSource settings, IStorage<GitRepositoryFolder> folder)
		{
			_settings = settings;
			_folder = folder;
			_git = GetClient(_settings);
		}
Пример #49
0
        private MercurialRepositoryFolder GetLocalRepository(ISourceControlConnectionSettingsSource settings)
        {
            if (_folder.Empty())
            {
                var repositoryFolder = MercurialRepositoryFolder.Create(settings.Uri);
                _folder.ReplaceWith(repositoryFolder);
                return repositoryFolder;
            }

            return _folder.Single();
        }
		private TfsVersionControlSystem CreateTfs(ISourceControlConnectionSettingsSource settings)
		{
			return new TfsVersionControlSystem(
				settings,
				ObjectFactory.GetInstance<ICheckConnectionErrorResolver>(),
				ObjectFactory.GetInstance<IActivityLogger>(),
				ObjectFactory.GetInstance<IDiffProcessor>());
		}
 public GitClient(ISourceControlConnectionSettingsSource settings)
 {
     _settings = settings;
     _git = GetClient(settings);
 }
        private static NGit.Api.Git GetClient(ISourceControlConnectionSettingsSource settings)
        {
            var repositoryFolder = GetLocalRepository(settings);
            if (IsRepositoryUriChanged(repositoryFolder, settings))
            {
                repositoryFolder.Delete();
                repositoryFolder = GitRepositoryFolder.Create(settings.Uri);
                var repoFolderStorage = Repository.Get<GitRepositoryFolder>();
                repoFolderStorage.ReplaceWith(repositoryFolder);
            }

            NGit.Api.Git nativeGit;

            try
            {
                var credentialsProvider = new UsernamePasswordCredentialsProvider(settings.Login, settings.Password);
                if (repositoryFolder.Exists())
                {
                    nativeGit = NGit.Api.Git.Open(repositoryFolder.Value);
                }
                else
                {
                    nativeGit = NGit.Api.Git.CloneRepository()
                        .SetURI(settings.Uri)
                        .SetNoCheckout(true)
                        .SetCredentialsProvider(credentialsProvider)
                        .SetDirectory(repositoryFolder.Value).Call();
                }
            }
            catch (ArgumentNullException exception)
            {
                throw new ArgumentException(
                    GitCheckConnectionErrorResolver.INVALID_URI_OR_INSUFFICIENT_ACCESS_RIGHTS_ERROR_MESSAGE, exception);
            }

            return nativeGit;
        }
		public TfsClient(ISourceControlConnectionSettingsSource settings)
		{
			_versionControl = GetVersionControl(settings);
		}
Пример #54
0
 protected VersionControlSystemProcessorBase(IRevisionIdComparer revisionComparer, IStorageRepository storage, ISourceControlConnectionSettingsSource settingsSource, IVersionControlSystem versionControlSystem, ILocalBus bus, IActivityLogger logger)
 {
     RevisionComparer     = revisionComparer;
     Storage              = storage;
     VersionControlSystem = versionControlSystem;
     Bus           = bus;
     Logger        = logger;
     StartRevision = revisionComparer.ConvertToRevisionId(settingsSource.StartRevision);
 }
        private static GitRepositoryFolder GetLocalRepository(ISourceControlConnectionSettingsSource settings)
        {
            var repoFolderStorage = Repository.Get<GitRepositoryFolder>();
            if (repoFolderStorage.Empty())
            {
                var repositoryFolder = GitRepositoryFolder.Create(settings.Uri);
                repoFolderStorage.ReplaceWith(repositoryFolder);
                return repositoryFolder;
            }

            return repoFolderStorage.Single();
        }