зеркало из https://github.com/github/VisualStudio.git
Merge branch 'master' into refactor/sdk-csproj
This commit is contained in:
Коммит
2e5ffb00cf
|
@ -24,11 +24,6 @@ test:
|
|||
categories:
|
||||
except:
|
||||
- Timings
|
||||
after_test:
|
||||
- ps: |
|
||||
choco install --no-progress opencover.portable codecov
|
||||
OpenCover.Console.exe --% "-target:nunit3-console.exe" "-targetargs: test\GitHub.Api.UnitTests\bin\Release\GitHub.Api.UnitTests.dll test\GitHub.App.UnitTests\bin\Release\GitHub.App.UnitTests.dll test\GitHub.Exports.Reactive.UnitTests\bin\Release\GitHub.Exports.Reactive.UnitTests.dll test\GitHub.Exports.UnitTests\bin\Release\GitHub.Exports.UnitTests.dll test\GitHub.Extensions.UnitTests\bin\Release\GitHub.Extensions.UnitTests.dll test\GitHub.InlineReviews.UnitTests\bin\Release\GitHub.InlineReviews.UnitTests.dll test\GitHub.Primitives.UnitTests\bin\Release\GitHub.Primitives.UnitTests.dll test\GitHub.TeamFoundation.UnitTests\bin\Release\GitHub.TeamFoundation.UnitTests.dll test\GitHub.UI.UnitTests\bin\Release\GitHub.UI.UnitTests.dll test\GitHub.VisualStudio.UnitTests\bin\Release\GitHub.VisualStudio.UnitTests.dll test\MetricsTests\MetricsTests\bin\Release\MetricsTests.dll test\TrackingCollectionTests\bin\Release\TrackingCollectionTests.dll --where cat!=Timings --inprocess --noresult" -filter:"+[GitHub*]* -[GitHub*UnitTests]*" -register:user -output:".\coverage.xml"
|
||||
codecov -f "coverage.xml"
|
||||
on_success:
|
||||
- ps: |
|
||||
if ($full_build) {
|
||||
|
|
|
@ -160,9 +160,6 @@
|
|||
<None Include="packages.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="source.extension.vsixmanifest">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\submodules\octokit.net\Octokit\Octokit.csproj">
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
|
||||
<Metadata>
|
||||
<Identity Id="GitHub.InlineReviews.56b6fdce-e5b1-4ec3-9837-af4545ba933e" Version="2.0" Language="en-US" Publisher="GitHub, Inc" />
|
||||
<DisplayName>GitHub Inline Reviews</DisplayName>
|
||||
<Description xml:space="preserve">Inline reviews for GitHub pull requests</Description>
|
||||
</Metadata>
|
||||
<Installation>
|
||||
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[14.0,15.0]" />
|
||||
</Installation>
|
||||
<Dependencies>
|
||||
<Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="[4.5,)" />
|
||||
<Dependency Id="Microsoft.VisualStudio.MPF.14.0" DisplayName="Visual Studio MPF 14.0" d:Source="Installed" Version="[14.0]" />
|
||||
</Dependencies>
|
||||
<Assets>
|
||||
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%|" />
|
||||
<Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%;PkgdefProjectOutputGroup|" />
|
||||
</Assets>
|
||||
</PackageManifest>
|
|
@ -74,9 +74,6 @@
|
|||
<None Include="packages.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="source.extension.vsixmanifest">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\submodules\reactiveui\ReactiveUI\ReactiveUI_Net45.csproj">
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
|
||||
<Metadata>
|
||||
<Identity Id="GitHub.StartPage.760cdaee-08cf-4807-8e49-227d5a3fdaf6" Version="0.2.0.0" Language="en-US" Publisher="GitHub, Inc" />
|
||||
<DisplayName>GitHub Start Page</DisplayName>
|
||||
<Description xml:space="preserve">GitHub on your Start Page, helping you clone!</Description>
|
||||
</Metadata>
|
||||
<Installation>
|
||||
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[15.0]" />
|
||||
</Installation>
|
||||
<Dependencies>
|
||||
<Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="[4.5,)" />
|
||||
<Dependency Id="Microsoft.VisualStudio.MPF.15.0" DisplayName="Visual Studio MPF 15.0" d:Source="Installed" Version="[15.0]" />
|
||||
</Dependencies>
|
||||
<Assets>
|
||||
<Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%;PkgdefProjectOutputGroup|" />
|
||||
</Assets>
|
||||
<Prerequisites>
|
||||
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0.25824.0,16.0)" DisplayName="Visual Studio core editor" />
|
||||
</Prerequisites>
|
||||
</PackageManifest>
|
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
@ -14,50 +15,42 @@ namespace GitHub.TeamFoundation
|
|||
internal class RegistryHelper
|
||||
{
|
||||
static readonly ILogger log = LogManager.ForContext<RegistryHelper>();
|
||||
const string TEGitKey = @"Software\Microsoft\VisualStudio\14.0\TeamFoundation\GitSourceControl";
|
||||
|
||||
static RegistryKey OpenGitKey(string path)
|
||||
{
|
||||
return Microsoft.Win32.Registry.CurrentUser.OpenSubKey(TEGitKey + "\\" + path, true);
|
||||
var keyName = $"Software\\Microsoft\\VisualStudio\\{MajorVersion}.0\\TeamFoundation\\GitSourceControl\\{path}";
|
||||
return Registry.CurrentUser.OpenSubKey(keyName, true);
|
||||
}
|
||||
|
||||
internal static IEnumerable<ILocalRepositoryModel> PokeTheRegistryForRepositoryList()
|
||||
{
|
||||
var key = OpenGitKey("Repositories");
|
||||
|
||||
if (key != null)
|
||||
using (var key = OpenGitKey("Repositories"))
|
||||
{
|
||||
using (key)
|
||||
if (key == null)
|
||||
{
|
||||
return key.GetSubKeyNames().Select(x =>
|
||||
{
|
||||
var subkey = key.OpenSubKey(x);
|
||||
|
||||
if (subkey != null)
|
||||
{
|
||||
using (subkey)
|
||||
{
|
||||
try
|
||||
{
|
||||
var path = subkey?.GetValue("Path") as string;
|
||||
if (path != null && Directory.Exists(path))
|
||||
return new LocalRepositoryModel(path, GitService.GitServiceHelper);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// no sense spamming the log, the registry might have ton of stale things we don't care about
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
})
|
||||
.Where(x => x != null)
|
||||
.ToList();
|
||||
return Enumerable.Empty<ILocalRepositoryModel>();
|
||||
}
|
||||
}
|
||||
|
||||
return new ILocalRepositoryModel[0];
|
||||
return key.GetSubKeyNames().Select(x =>
|
||||
{
|
||||
using (var subkey = key.OpenSubKey(x))
|
||||
{
|
||||
try
|
||||
{
|
||||
var path = subkey?.GetValue("Path") as string;
|
||||
if (path != null && Directory.Exists(path))
|
||||
return new LocalRepositoryModel(path, GitService.GitServiceHelper);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// no sense spamming the log, the registry might have ton of stale things we don't care about
|
||||
}
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.Where(x => x != null)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
internal static string PokeTheRegistryForLocalClonePath()
|
||||
|
@ -68,15 +61,16 @@ namespace GitHub.TeamFoundation
|
|||
}
|
||||
}
|
||||
|
||||
const string NewProjectDialogKeyPath = @"Software\Microsoft\VisualStudio\14.0\NewProjectDialog";
|
||||
const string MRUKeyPath = "MRUSettingsLocalProjectLocationEntries";
|
||||
internal static string SetDefaultProjectPath(string path)
|
||||
{
|
||||
var newProjectDialogKeyPath = $"Software\\Microsoft\\VisualStudio\\{MajorVersion}.0\\NewProjectDialog";
|
||||
|
||||
var old = String.Empty;
|
||||
try
|
||||
{
|
||||
var newProjectKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(NewProjectDialogKeyPath, true) ??
|
||||
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(NewProjectDialogKeyPath);
|
||||
var newProjectKey = Registry.CurrentUser.OpenSubKey(newProjectDialogKeyPath, true) ??
|
||||
Registry.CurrentUser.CreateSubKey(newProjectDialogKeyPath);
|
||||
|
||||
if (newProjectKey == null)
|
||||
{
|
||||
|
@ -84,7 +78,7 @@ namespace GitHub.TeamFoundation
|
|||
string.Format(
|
||||
CultureInfo.CurrentCulture,
|
||||
"Could not open or create registry key '{0}'",
|
||||
NewProjectDialogKeyPath));
|
||||
newProjectDialogKeyPath));
|
||||
}
|
||||
|
||||
using (newProjectKey)
|
||||
|
@ -132,5 +126,8 @@ namespace GitHub.TeamFoundation
|
|||
}
|
||||
return old;
|
||||
}
|
||||
|
||||
// Major version number of the current devenv process
|
||||
static int MajorVersion => Process.GetCurrentProcess().MainModule.FileVersionInfo.FileMajorPart;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#if TEAMEXPLORER15
|
||||
#if !TEAMEXPLORER14
|
||||
// Microsoft.VisualStudio.Shell.Framework has an alias to avoid conflict with IAsyncServiceProvider
|
||||
extern alias SF15;
|
||||
using ServiceProgressData = SF15::Microsoft.VisualStudio.Shell.ServiceProgressData;
|
||||
|
|
|
@ -179,6 +179,9 @@
|
|||
<Compile Include="..\GitHub.TeamFoundation.14\Home\ForkNavigationItem.cs">
|
||||
<Link>Home\ForkNavigationItem.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GitHub.TeamFoundation.14\RegistryHelper.cs">
|
||||
<Link>RegistryHelper.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GitHub.TeamFoundation.14\Services\LocalRepositoryModelFactory.cs">
|
||||
<Link>Services\LocalRepositoryModelFactory.cs</Link>
|
||||
</Compile>
|
||||
|
@ -248,7 +251,6 @@
|
|||
<Compile Include="..\GitHub.TeamFoundation.14\Services\VSGitServices.cs">
|
||||
<Link>Services\VSGitServices.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="RegistryHelper.cs" />
|
||||
<Compile Include="..\common\SolutionInfo.cs">
|
||||
<Link>Properties\SolutionInfo.cs</Link>
|
||||
</Compile>
|
||||
|
|
|
@ -1,124 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using GitHub.Logging;
|
||||
using GitHub.Models;
|
||||
using GitHub.Services;
|
||||
using Microsoft.Win32;
|
||||
using Serilog;
|
||||
|
||||
namespace GitHub.TeamFoundation
|
||||
{
|
||||
internal class RegistryHelper
|
||||
{
|
||||
static readonly ILogger log = LogManager.ForContext<RegistryHelper>();
|
||||
const string TEGitKey = @"Software\Microsoft\VisualStudio\15.0\TeamFoundation\GitSourceControl";
|
||||
static RegistryKey OpenGitKey(string path)
|
||||
{
|
||||
return Microsoft.Win32.Registry.CurrentUser.OpenSubKey(TEGitKey + "\\" + path, true);
|
||||
}
|
||||
|
||||
internal static IEnumerable<ILocalRepositoryModel> PokeTheRegistryForRepositoryList()
|
||||
{
|
||||
using (var key = OpenGitKey("Repositories"))
|
||||
{
|
||||
return key.GetSubKeyNames().Select(x =>
|
||||
{
|
||||
using (var subkey = key.OpenSubKey(x))
|
||||
{
|
||||
try
|
||||
{
|
||||
var path = subkey?.GetValue("Path") as string;
|
||||
if (path != null)
|
||||
return new LocalRepositoryModel(path, GitService.GitServiceHelper);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// no sense spamming the log, the registry might have ton of stale things we don't care about
|
||||
}
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.Where(x => x != null)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
internal static string PokeTheRegistryForLocalClonePath()
|
||||
{
|
||||
using (var key = OpenGitKey("General"))
|
||||
{
|
||||
return (string)key?.GetValue("DefaultRepositoryPath", string.Empty, RegistryValueOptions.DoNotExpandEnvironmentNames);
|
||||
}
|
||||
}
|
||||
|
||||
const string NewProjectDialogKeyPath = @"Software\Microsoft\VisualStudio\15.0\NewProjectDialog";
|
||||
const string MRUKeyPath = "MRUSettingsLocalProjectLocationEntries";
|
||||
internal static string SetDefaultProjectPath(string path)
|
||||
{
|
||||
var old = String.Empty;
|
||||
try
|
||||
{
|
||||
var newProjectKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(NewProjectDialogKeyPath, true) ??
|
||||
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(NewProjectDialogKeyPath);
|
||||
|
||||
if (newProjectKey == null)
|
||||
{
|
||||
throw new GitHubLogicException(
|
||||
string.Format(
|
||||
CultureInfo.CurrentCulture,
|
||||
"Could not open or create registry key '{0}'",
|
||||
NewProjectDialogKeyPath));
|
||||
}
|
||||
|
||||
using (newProjectKey)
|
||||
{
|
||||
var mruKey = newProjectKey.OpenSubKey(MRUKeyPath, true) ??
|
||||
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(MRUKeyPath);
|
||||
|
||||
if (mruKey == null)
|
||||
{
|
||||
throw new GitHubLogicException(
|
||||
string.Format(
|
||||
CultureInfo.CurrentCulture,
|
||||
"Could not open or create registry key '{0}'",
|
||||
MRUKeyPath));
|
||||
}
|
||||
|
||||
using (mruKey)
|
||||
{
|
||||
// is this already the default path? bail
|
||||
old = (string)mruKey.GetValue("Value0", string.Empty, RegistryValueOptions.DoNotExpandEnvironmentNames);
|
||||
if (String.Equals(path.TrimEnd('\\'), old.TrimEnd('\\'), StringComparison.CurrentCultureIgnoreCase))
|
||||
return old;
|
||||
|
||||
// grab the existing list of recent paths, throwing away the last one
|
||||
var numEntries = (int)mruKey.GetValue("MaximumEntries", 5);
|
||||
var entries = new List<string>(numEntries);
|
||||
for (int i = 0; i < numEntries - 1; i++)
|
||||
{
|
||||
var val = (string)mruKey.GetValue("Value" + i, String.Empty, RegistryValueOptions.DoNotExpandEnvironmentNames);
|
||||
if (!String.IsNullOrEmpty(val))
|
||||
entries.Add(val);
|
||||
}
|
||||
|
||||
newProjectKey.SetValue("LastUsedNewProjectPath", path);
|
||||
mruKey.SetValue("Value0", path);
|
||||
// bump list of recent paths one entry down
|
||||
for (int i = 0; i < entries.Count; i++)
|
||||
mruKey.SetValue("Value" + (i + 1), entries[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
log.Error(ex, "Error setting the create project path in the registry");
|
||||
}
|
||||
return old;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -30,6 +30,7 @@ namespace GitHub.Services
|
|||
case 14:
|
||||
return Create(() => new VSGitExt14(asyncServiceProvider));
|
||||
case 15:
|
||||
case 16:
|
||||
return Create(() => new VSGitExt15(asyncServiceProvider));
|
||||
default:
|
||||
log.Error("There is no IVSGitExt implementation for DTE version {Version}", vsVersion);
|
||||
|
|
|
@ -13,13 +13,13 @@
|
|||
<Tags>GitHub;git;open source;source control;branch;pull request;team explorer;commit;publish</Tags>
|
||||
</Metadata>
|
||||
<Installation AllUsers="true" Experimental="false">
|
||||
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[14.0,15.0]" />
|
||||
<InstallationTarget Version="[15.0,16.0)" Id="Microsoft.VisualStudio.IntegratedShell" />
|
||||
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[14.0,17.0)" />
|
||||
<InstallationTarget Id="Microsoft.VisualStudio.IntegratedShell" Version="[15.0,17.0)" />
|
||||
</Installation>
|
||||
<Dependencies>
|
||||
<Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="[4.5,)" />
|
||||
<Dependency Id="Microsoft.VisualStudio.MPF.14.0" DisplayName="Visual Studio MPF 14.0" d:Source="Installed" Version="[14.0,]" />
|
||||
<Dependency Id="Microsoft.VisualStudio.TeamFoundation.TeamExplorer.Extensions" DisplayName="Team Explorer" d:Source="Installed" Version="[14.0,16.0)" />
|
||||
<Dependency Id="Microsoft.VisualStudio.MPF.14.0" DisplayName="Visual Studio MPF 14.0" d:Source="Installed" Version="[14.0,)" />
|
||||
<Dependency Id="Microsoft.VisualStudio.TeamFoundation.TeamExplorer.Extensions" DisplayName="Team Explorer" d:Source="Installed" Version="[14.0,)" />
|
||||
</Dependencies>
|
||||
<Assets>
|
||||
<Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%;PkgdefProjectOutputGroup|" />
|
||||
|
@ -30,7 +30,7 @@
|
|||
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="GitHub.App" Path="|GitHub.App|" />
|
||||
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="GitHub.Services.Vssdk" Path="|GitHub.Services.Vssdk|" />
|
||||
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="GitHub.TeamFoundation.14" TargetVersion="[14.0,15.0)" Path="|GitHub.TeamFoundation.14|" />
|
||||
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="GitHub.TeamFoundation.15" TargetVersion="[15.0,16.0)" Path="|GitHub.TeamFoundation.15|" />
|
||||
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="GitHub.TeamFoundation.15" TargetVersion="[15.0,17.0)" Path="|GitHub.TeamFoundation.15|" />
|
||||
<!-- Sometimes the version of `ServiceHub.VSDetouredHost.exe` is used when installing for Visual Studio 2017, see https://github.com/github/VisualStudio/pull/1875 -->
|
||||
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="GitHub.TeamFoundation.15" TargetVersion="[1.0,2.0)" Path="|GitHub.TeamFoundation.15|" />
|
||||
<Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="Project" d:ProjectName="GitHub.InlineReviewsPackage" Path="|GitHub.InlineReviews;PkgdefProjectOutputGroup|" />
|
||||
|
@ -39,6 +39,6 @@
|
|||
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="File" Path="Rothko.dll" />
|
||||
</Assets>
|
||||
<Prerequisites>
|
||||
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0.25824.0,16.0)" DisplayName="Visual Studio core editor" />
|
||||
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0.25824.0,)" DisplayName="Visual Studio core editor" />
|
||||
</Prerequisites>
|
||||
</PackageManifest>
|
||||
|
|
Загрузка…
Ссылка в новой задаче