Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 37e9acf

Browse files
committed
Merge branch 'master' into feature/open-from-uri-clone-ui
2 parents ca1a215 + b189196 commit 37e9acf

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

src/GitHub.App/Services/RepositoryCloneService.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,12 @@ public async Task CloneRepository(
173173
{
174174
await vsGitServices.Clone(cloneUrl, repositoryPath, true, progress);
175175
await usageTracker.IncrementCounter(x => x.NumberOfClones);
176+
177+
if (repositoryPath.StartsWith(DefaultClonePath, StringComparison.OrdinalIgnoreCase))
178+
{
179+
// Count the number of times users clone into the Default Repository Location
180+
await usageTracker.IncrementCounter(x => x.NumberOfClonesToDefaultClonePath);
181+
}
176182
}
177183
catch (Exception ex)
178184
{

src/GitHub.Exports/Models/UsageModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ public class MeasuresModel
9393
public int NumberOfEnterpriseClones { get; set; }
9494
public int NumberOfGitHubOpens { get; set; }
9595
public int NumberOfEnterpriseOpens { get; set; }
96+
public int NumberOfClonesToDefaultClonePath { get; set; }
9697
}
9798
}
9899
}

test/GitHub.App.UnitTests/Services/RepositoryCloneServiceTests.cs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,36 @@ public async Task UpdatesMetricsWhenCloneOrOpenRepositoryAsync(string cloneUrl,
7373
var teamExplorerServices = Substitute.For<ITeamExplorerServices>();
7474
var graphqlFactory = Substitute.For<IGraphQLClientFactory>();
7575
var usageTracker = Substitute.For<IUsageTracker>();
76-
var cloneService = new RepositoryCloneService(operatingSystem, vsGitServices, teamExplorerServices, graphqlFactory, usageTracker);
76+
var cloneService = new RepositoryCloneService(operatingSystem, vsGitServices, teamExplorerServices,
77+
graphqlFactory, usageTracker);
7778

7879
await cloneService.CloneOrOpenRepository(cloneDialogResult);
7980

8081
await usageTracker.Received(numberOfCalls).IncrementCounter(
8182
Arg.Is<Expression<Func<UsageModel.MeasuresModel, int>>>(x =>
8283
((MemberExpression)x.Body).Member.Name == counterName));
8384
}
85+
86+
[TestCase(@"c:\default\repo", @"c:\default", 1, nameof(UsageModel.MeasuresModel.NumberOfClonesToDefaultClonePath))]
87+
[TestCase(@"c:\not_default\repo", @"c:\default", 0, nameof(UsageModel.MeasuresModel.NumberOfClonesToDefaultClonePath))]
88+
public async Task UpdatesMetricsWhenDefaultClonePath(string targetPath, string defaultPath, int numberOfCalls, string counterName)
89+
{
90+
var serviceProvider = Substitutes.ServiceProvider;
91+
var operatingSystem = serviceProvider.GetOperatingSystem();
92+
var vsGitServices = serviceProvider.GetVSGitServices();
93+
var teamExplorerServices = Substitute.For<ITeamExplorerServices>();
94+
vsGitServices.GetLocalClonePathFromGitProvider().Returns(defaultPath);
95+
var graphqlFactory = Substitute.For<IGraphQLClientFactory>();
96+
var usageTracker = Substitute.For<IUsageTracker>();
97+
var cloneService = new RepositoryCloneService(operatingSystem, vsGitServices, teamExplorerServices,
98+
graphqlFactory, usageTracker);
99+
100+
await cloneService.CloneRepository("https://github.com/foo/bar", targetPath);
101+
var model = UsageModel.Create(Guid.NewGuid());
102+
103+
await usageTracker.Received(numberOfCalls).IncrementCounter(
104+
Arg.Is<Expression<Func<UsageModel.MeasuresModel, int>>>(x =>
105+
((MemberExpression)x.Body).Member.Name == counterName));
106+
}
84107
}
85108
}

0 commit comments

Comments
 (0)