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

Commit b189196

Browse files
authored
Merge pull request #1956 from github/metrics/NumberOfClonesToDefaultClonePath
Count the number of clones to the default clone path
2 parents efe148d + f5b7a05 commit b189196

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

src/GitHub.App/Services/RepositoryCloneService.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,12 @@ public async Task CloneRepository(
135135
// If it isn't a GitHub URL, assume it's an Enterprise URL
136136
await usageTracker.IncrementCounter(x => x.NumberOfEnterpriseClones);
137137
}
138+
139+
if (repositoryPath.StartsWith(DefaultClonePath, StringComparison.OrdinalIgnoreCase))
140+
{
141+
// Count the number of times users clone into the Default Repository Location
142+
await usageTracker.IncrementCounter(x => x.NumberOfClonesToDefaultClonePath);
143+
}
138144
}
139145
catch (Exception ex)
140146
{

src/GitHub.Exports/Models/UsageModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public class MeasuresModel
9191
public int NumberOfCloneViewUrlTab { get; set; }
9292
public int NumberOfGitHubClones { get; set; }
9393
public int NumberOfEnterpriseClones { get; set; }
94+
public int NumberOfClonesToDefaultClonePath { get; set; }
9495
}
9596
}
9697
}

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,25 @@ await usageTracker.Received(numberOfCalls).IncrementCounter(
4949
Arg.Is<Expression<Func<UsageModel.MeasuresModel, int>>>(x =>
5050
((MemberExpression)x.Body).Member.Name == counterName));
5151
}
52+
53+
[TestCase(@"c:\default\repo", @"c:\default", 1, nameof(UsageModel.MeasuresModel.NumberOfClonesToDefaultClonePath))]
54+
[TestCase(@"c:\not_default\repo", @"c:\default", 0, nameof(UsageModel.MeasuresModel.NumberOfClonesToDefaultClonePath))]
55+
public async Task UpdatesMetricsWhenDefaultClonePath(string targetPath, string defaultPath, int numberOfCalls, string counterName)
56+
{
57+
var serviceProvider = Substitutes.ServiceProvider;
58+
var operatingSystem = serviceProvider.GetOperatingSystem();
59+
var vsGitServices = serviceProvider.GetVSGitServices();
60+
vsGitServices.GetLocalClonePathFromGitProvider().Returns(defaultPath);
61+
var graphqlFactory = Substitute.For<IGraphQLClientFactory>();
62+
var usageTracker = Substitute.For<IUsageTracker>();
63+
var cloneService = new RepositoryCloneService(operatingSystem, vsGitServices, graphqlFactory, usageTracker);
64+
65+
await cloneService.CloneRepository("https://github.com/foo/bar", targetPath);
66+
var model = UsageModel.Create(Guid.NewGuid());
67+
68+
await usageTracker.Received(numberOfCalls).IncrementCounter(
69+
Arg.Is<Expression<Func<UsageModel.MeasuresModel, int>>>(x =>
70+
((MemberExpression)x.Body).Member.Name == counterName));
71+
}
5272
}
5373
}

0 commit comments

Comments
 (0)