public static Create ( string repoUri ) : |
||
repoUri | string | |
return |
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); }
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); }