diff --git a/src/GitHub.App/Extensions/RepositoryModelExtensions.cs b/src/GitHub.App/Extensions/RepositoryModelExtensions.cs
deleted file mode 100644
index 50d3a428e2..0000000000
--- a/src/GitHub.App/Extensions/RepositoryModelExtensions.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using GitHub.Models;
-using GitHub.VisualStudio;
-using Microsoft.VisualStudio.TeamFoundation.Git.Extensibility;
-using NullGuard;
-
-namespace GitHub.Extensions
-{
- public static class RepositoryModelExtensions
- {
- ///
- /// Create a SimpleRepositoryModel from a VS git repo object
- ///
- [return:AllowNull]
- public static ISimpleRepositoryModel ToModel([AllowNull] this IGitRepositoryInfo repo)
- {
- if (repo == null)
- return null;
- var uri = repo.GetUriFromRepository();
- var name = uri?.NameWithOwner;
- return name != null ? new SimpleRepositoryModel(name, uri, repo.RepositoryPath) : null;
- }
- }
-}
diff --git a/src/GitHub.App/GitHub.App.csproj b/src/GitHub.App/GitHub.App.csproj
index ccc90ff1e6..6cdb54ae08 100644
--- a/src/GitHub.App/GitHub.App.csproj
+++ b/src/GitHub.App/GitHub.App.csproj
@@ -126,7 +126,6 @@
-
diff --git a/src/GitHub.Exports/Extensions/GitHelpers.cs b/src/GitHub.Exports/Extensions/GitHelpers.cs
new file mode 100644
index 0000000000..8925fbb75a
--- /dev/null
+++ b/src/GitHub.Exports/Extensions/GitHelpers.cs
@@ -0,0 +1,46 @@
+using GitHub.Primitives;
+using LibGit2Sharp;
+using Microsoft.VisualStudio.TeamFoundation.Git.Extensibility;
+using System;
+using System.Linq;
+
+namespace GitHub.Extensions
+{
+ public static class GitHelpers
+ {
+ public static Repository GetRepoFromIGit(this IGitRepositoryInfo repoInfo)
+ {
+ var repoPath = Repository.Discover(repoInfo.RepositoryPath);
+ if (repoPath == null)
+ return null;
+ return new Repository(repoPath);
+ }
+
+ public static UriString GetUriFromRepository(this IGitRepositoryInfo repoInfo)
+ {
+ return repoInfo.GetRepoFromIGit()?.GetUri();
+ }
+
+ public static UriString GetUri(this Repository repo)
+ {
+ return UriString.ToUriString(GetUriFromRepository(repo)?.ToRepositoryUrl());
+ }
+
+ static UriString GetUriFromRepository(Repository repo)
+ {
+ return repo
+ ?.Network
+ .Remotes
+ .FirstOrDefault(x => x.Name.Equals("origin", StringComparison.Ordinal))
+ ?.Url;
+ }
+
+ public static Repository GetRepoFromPath(string path)
+ {
+ var repoPath = Repository.Discover(path);
+ if (repoPath == null)
+ return null;
+ return new Repository(repoPath);
+ }
+ }
+}
diff --git a/src/GitHub.Exports/Helpers/PropertyNotifierExtensions.cs b/src/GitHub.Exports/Extensions/PropertyNotifierExtensions.cs
similarity index 100%
rename from src/GitHub.Exports/Helpers/PropertyNotifierExtensions.cs
rename to src/GitHub.Exports/Extensions/PropertyNotifierExtensions.cs
diff --git a/src/GitHub.Exports/Helpers/SimpleRepositoryModelExtensions.cs b/src/GitHub.Exports/Extensions/SimpleRepositoryModelExtensions.cs
similarity index 58%
rename from src/GitHub.Exports/Helpers/SimpleRepositoryModelExtensions.cs
rename to src/GitHub.Exports/Extensions/SimpleRepositoryModelExtensions.cs
index d33b2e8ad4..08ce5bcf7d 100644
--- a/src/GitHub.Exports/Helpers/SimpleRepositoryModelExtensions.cs
+++ b/src/GitHub.Exports/Extensions/SimpleRepositoryModelExtensions.cs
@@ -2,18 +2,30 @@
using System;
using System.Linq;
using System.IO;
+using Microsoft.VisualStudio.TeamFoundation.Git.Extensibility;
namespace GitHub.Extensions
{
- using VisualStudio;
-
public static class SimpleRepositoryModelExtensions
{
+ ///
+ /// Create a SimpleRepositoryModel from a VS git repo object
+ ///
+ public static ISimpleRepositoryModel ToModel(this IGitRepositoryInfo repo)
+ {
+ if (repo == null)
+ return null;
+ var uri = repo.GetUriFromRepository();
+ var name = uri?.NameWithOwner;
+ return name != null ? new SimpleRepositoryModel(name, uri, repo.RepositoryPath) : null;
+ }
+
public static bool HasCommits(this ISimpleRepositoryModel repository)
{
- var repo = Services.GetRepoFromPath(repository.LocalPath);
+ var repo = GitHelpers.GetRepoFromPath(repository.LocalPath);
return repo?.Commits.Any() ?? false;
}
+
public static bool MightContainSolution(this ISimpleRepositoryModel repository)
{
var dir = new DirectoryInfo(repository.LocalPath);
diff --git a/src/GitHub.Exports/Services/VSExtensions.cs b/src/GitHub.Exports/Extensions/VSExtensions.cs
similarity index 100%
rename from src/GitHub.Exports/Services/VSExtensions.cs
rename to src/GitHub.Exports/Extensions/VSExtensions.cs
diff --git a/src/GitHub.Exports/GitHub.Exports.csproj b/src/GitHub.Exports/GitHub.Exports.csproj
index 63a5cacc55..ac9059889f 100644
--- a/src/GitHub.Exports/GitHub.Exports.csproj
+++ b/src/GitHub.Exports/GitHub.Exports.csproj
@@ -99,9 +99,10 @@
Key.snk
+
-
-
+
+
@@ -122,7 +123,7 @@
-
+
diff --git a/src/GitHub.Exports/Services/Services.cs b/src/GitHub.Exports/Services/Services.cs
index 2cdfc70938..0034f5f597 100644
--- a/src/GitHub.Exports/Services/Services.cs
+++ b/src/GitHub.Exports/Services/Services.cs
@@ -1,5 +1,4 @@
using System;
-using System.Linq;
using EnvDTE;
using EnvDTE80;
using GitHub.Services;
@@ -8,9 +7,9 @@
using Microsoft.VisualStudio.ComponentModelHost;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
-using Microsoft.VisualStudio.TeamFoundation.Git.Extensibility;
using GitHub.Info;
using GitHub.Primitives;
+using GitHub.Extensions;
namespace GitHub.VisualStudio
{
@@ -142,40 +141,5 @@ public static Repository GetRepoFromSolution(this IVsSolution solution)
return null;
return new Repository(repoPath);
}
-
- public static UriString GetUri(this Repository repo)
- {
- return UriString.ToUriString(GetUriFromRepository(repo)?.ToRepositoryUrl());
- }
-
- static UriString GetUriFromRepository(Repository repo)
- {
- return repo
- ?.Network
- .Remotes
- .FirstOrDefault(x => x.Name.Equals("origin", StringComparison.Ordinal))
- ?.Url;
- }
-
- public static Repository GetRepoFromIGit(this IGitRepositoryInfo repoInfo)
- {
- var repoPath = Repository.Discover(repoInfo.RepositoryPath);
- if (repoPath == null)
- return null;
- return new Repository(repoPath);
- }
-
- public static Repository GetRepoFromPath(string path)
- {
- var repoPath = Repository.Discover(path);
- if (repoPath == null)
- return null;
- return new Repository(repoPath);
- }
-
- public static UriString GetUriFromRepository(this IGitRepositoryInfo repoInfo)
- {
- return repoInfo.GetRepoFromIGit()?.GetUri();
- }
}
}
diff --git a/src/GitHub.Exports/Services/VSServices.cs b/src/GitHub.Exports/Services/VSServices.cs
index e851a48d3d..c90fa6c41e 100644
--- a/src/GitHub.Exports/Services/VSServices.cs
+++ b/src/GitHub.Exports/Services/VSServices.cs
@@ -120,7 +120,7 @@ static IEnumerable PokeTheRegistryForRepositoryList()
var path = subkey?.GetValue("Path") as string;
if (path != null)
{
- var uri = VisualStudio.Services.GetRepoFromPath(path)?.GetUri();
+ var uri = GitHelpers.GetRepoFromPath(path)?.GetUri();
var name = uri?.NameWithOwner;
if (name != null)
return new SimpleRepositoryModel(name, uri, path);
diff --git a/src/GitHub.Extensions/GitRepoExtensions.cs b/src/GitHub.Extensions/GitRepoExtensions.cs
index 252eaa9d2a..fb6508645e 100644
--- a/src/GitHub.Extensions/GitRepoExtensions.cs
+++ b/src/GitHub.Extensions/GitRepoExtensions.cs
@@ -1,10 +1,6 @@
using Microsoft.VisualStudio.TeamFoundation.Git.Extensibility;
using NullGuard;
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace GitHub.Extensions
{
diff --git a/src/GitHub.VisualStudio/Base/TeamExplorerItemBase.cs b/src/GitHub.VisualStudio/Base/TeamExplorerItemBase.cs
index 7ef7fc1887..27893aaf6a 100644
--- a/src/GitHub.VisualStudio/Base/TeamExplorerItemBase.cs
+++ b/src/GitHub.VisualStudio/Base/TeamExplorerItemBase.cs
@@ -7,6 +7,7 @@
using GitHub.VisualStudio.Helpers;
using NullGuard;
using Octokit;
+using GitHub.Extensions;
namespace GitHub.VisualStudio.Base
{