diff --git a/NuKeeper.Git/LibGit2SharpDiscoveryDriver.cs b/NuKeeper.Git/LibGit2SharpDiscoveryDriver.cs index 451577e39..43e64e6e2 100644 --- a/NuKeeper.Git/LibGit2SharpDiscoveryDriver.cs +++ b/NuKeeper.Git/LibGit2SharpDiscoveryDriver.cs @@ -1,15 +1,24 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using LibGit2Sharp; using NuKeeper.Abstractions; using NuKeeper.Abstractions.Formats; using NuKeeper.Abstractions.Git; +using NuKeeper.Abstractions.Logging; namespace NuKeeper.Git { public class LibGit2SharpDiscoveryDriver : IGitDiscoveryDriver { + private readonly INuKeeperLogger _logger; + + public LibGit2SharpDiscoveryDriver(INuKeeperLogger logger) + { + _logger = logger; + } + public bool IsGitRepo(Uri repositoryUri) { var discovered = DiscoverRepo(repositoryUri); @@ -35,12 +44,21 @@ public IEnumerable GetRemotes(Uri repositoryUri) { foreach (var remote in repo.Network.Remotes) { - var gitRemote = new GitRemote + Uri.TryCreate(remote.Url, UriKind.Absolute, out repositoryUri); + + if (repositoryUri != null) + { + var gitRemote = new GitRemote + { + Name = remote.Name, + Url = repositoryUri + }; + gitRemotes.Add(gitRemote); + } + else { - Name = remote.Name, - Url = new Uri(remote.Url) - }; - gitRemotes.Add(gitRemote); + _logger.Normal($"Cannot parse {remote.Url} to URI. SSH remote is currently not supported"); + } } return gitRemotes;