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

Commit 1b75f40

Browse files
Tracking metrics
1 parent 53f18c1 commit 1b75f40

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

src/GitHub.App/Services/RepositoryForkService.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Reactive.Linq;
44
using System.Threading.Tasks;
55
using GitHub.Api;
6+
using GitHub.Extensions;
67
using GitHub.Logging;
78
using GitHub.Models;
89
using LibGit2Sharp;
@@ -21,12 +22,14 @@ public class RepositoryForkService : IRepositoryForkService
2122

2223
readonly IGitClient gitClient;
2324
readonly IVSGitServices vsGitServices;
25+
readonly IUsageTracker usageTracker;
2426

2527
[ImportingConstructor]
26-
public RepositoryForkService(IGitClient gitClient, IVSGitServices vsGitServices)
28+
public RepositoryForkService(IGitClient gitClient, IVSGitServices vsGitServices, IUsageTracker usageTracker)
2729
{
2830
this.gitClient = gitClient;
2931
this.vsGitServices = vsGitServices;
32+
this.usageTracker = usageTracker;
3033
}
3134

3235
public IObservable<Repository> ForkRepository(IApiClient apiClient, IRepositoryModel sourceRepository, NewRepositoryFork repositoryFork, bool updateOrigin, bool addUpstream, bool trackMasterUpstream)
@@ -43,11 +46,33 @@ public IObservable<Repository> ForkRepository(IApiClient apiClient, IRepositoryM
4346

4447
await SwitchRemotes(repo.ActiveRepo, originUri, upstreamUri, trackMasterUpstream);
4548

49+
RecordForkRepositoryUsage(updateOrigin, addUpstream, trackMasterUpstream).Forget();
50+
4651
return repo.RemoteRepo;
4752
}
4853
});
4954
}
5055

56+
private async Task RecordForkRepositoryUsage(bool updateOrigin, bool addUpstream, bool trackMasterUpstream)
57+
{
58+
await usageTracker.IncrementCounter(model => model.NumberOfReposForked);
59+
60+
if (updateOrigin)
61+
{
62+
await usageTracker.IncrementCounter(model => model.NumberOfOriginsUpdatedWhenForkingRepo);
63+
}
64+
65+
if (addUpstream)
66+
{
67+
await usageTracker.IncrementCounter(model => model.NumberOfUpstreamsAddedWhenForkingRepo);
68+
}
69+
70+
if (trackMasterUpstream)
71+
{
72+
await usageTracker.IncrementCounter(model => model.NumberOfTrackMasterUpstreamWhenForkingRepo);
73+
}
74+
}
75+
5176
public IObservable<object> SwitchRemotes(IRepositoryModel destinationRepository, bool updateOrigin, bool addUpstream, bool trackMasterUpstream)
5277
{
5378
return Observable.Defer(() => Observable.Return(new object())

src/GitHub.Exports/Models/UsageModel.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ public class MeasuresModel
7070
public int NumberOfShowCurrentPullRequest { get; set; }
7171
public int NumberOfStatusBarOpenPullRequestList { get; set; }
7272
public int NumberOfTeamExplorerHomeOpenPullRequestList { get; set; }
73+
public int NumberOfShowRepoForkDialogClicks { get; set; }
74+
public int NumberOfReposForked { get; set; }
75+
public int NumberOfOriginsUpdatedWhenForkingRepo { get; set; }
76+
public int NumberOfUpstreamsAddedWhenForkingRepo { get; set; }
77+
public int NumberOfTrackMasterUpstreamWhenForkingRepo { get; set; }
7378
}
7479
}
7580
}

src/GitHub.TeamFoundation.14/Home/ForkNavigationItem.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,22 @@ public class ForkNavigationItem : TeamExplorerNavigationItemBase
2828

2929
readonly IDialogService dialogService;
3030
readonly IPackageSettings packageSettings;
31+
readonly IUsageTracker usageTracker;
32+
3133
IConnectionManager connectionManager;
3234

3335
[ImportingConstructor]
3436
public ForkNavigationItem(IGitHubServiceProvider serviceProvider,
3537
ISimpleApiClientFactory apiFactory,
3638
ITeamExplorerServiceHolder holder,
3739
IDialogService dialogService,
38-
IPackageSettings packageSettings)
40+
IPackageSettings packageSettings,
41+
IUsageTracker usageTracker)
3942
: base(serviceProvider, apiFactory, holder, Octicon.repo_forked)
4043
{
4144
this.dialogService = dialogService;
4245
this.packageSettings = packageSettings;
46+
this.usageTracker = usageTracker;
4347

4448
Text = Resources.ForkNavigationItemText;
4549
ArgbColor = Colors.PurpleNavigationItem.ToInt32();
@@ -82,6 +86,7 @@ public override async void Execute()
8286

8387
if (connection?.IsLoggedIn == true)
8488
{
89+
usageTracker.IncrementCounter(model => model.NumberOfShowRepoForkDialogClicks).Forget();
8590
await dialogService.ShowForkDialog(ActiveRepo, connection);
8691
}
8792
}

0 commit comments

Comments
 (0)