Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 3f828db

Browse files
Calling update methods on RepositoryManager from Repository
1 parent de66fac commit 3f828db

File tree

5 files changed

+80
-55
lines changed

5 files changed

+80
-55
lines changed

src/GitHub.Api/Git/Repository.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -259,15 +259,15 @@ private void CacheContainer_OnCacheInvalidated(CacheType cacheType)
259259
break;
260260

261261
case CacheType.GitLogCache:
262-
UpdateGitLog();
262+
repositoryManager.UpdateGitLog();
263263
break;
264264

265265
case CacheType.GitStatusCache:
266-
UpdateGitStatus();
266+
repositoryManager.UpdateGitStatus();
267267
break;
268268

269269
case CacheType.GitLocksCache:
270-
UpdateLocks();
270+
repositoryManager.UpdateLocks();
271271
break;
272272

273273
case CacheType.GitUserCache:

src/GitHub.Api/Git/RepositoryManager.cs

Lines changed: 47 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public interface IRepositoryManager : IDisposable
1010
event Action<bool> IsBusyChanged;
1111
event Action<ConfigBranch?, ConfigRemote?> CurrentBranchUpdated;
1212
event Action<GitStatus> GitStatusUpdated;
13+
event Action<List<GitLock>> GitLocksUpdated;
1314
event Action<List<GitLogEntry>> GitLogUpdated;
1415
event Action<Dictionary<string, ConfigBranch>> LocalBranchesUpdated;
1516
event Action<Dictionary<string, ConfigRemote>, Dictionary<string, Dictionary<string, ConfigBranch>>> RemoteBranchesUpdated;
@@ -19,8 +20,6 @@ public interface IRepositoryManager : IDisposable
1920
void Stop();
2021
ITask CommitAllFiles(string message, string body);
2122
ITask CommitFiles(List<string> files, string message, string body);
22-
ITask<List<GitLogEntry>> Log();
23-
ITask<GitStatus> Status();
2423
ITask Fetch(string remote);
2524
ITask Pull(string remote, string branch);
2625
ITask Push(string remote, string branch);
@@ -31,9 +30,11 @@ public interface IRepositoryManager : IDisposable
3130
ITask SwitchBranch(string branch);
3231
ITask DeleteBranch(string branch, bool deleteUnmerged = false);
3332
ITask CreateBranch(string branch, string baseBranch);
34-
ITask<List<GitLock>> ListLocks(bool local);
3533
ITask LockFile(string file);
3634
ITask UnlockFile(string file, bool force);
35+
void UpdateGitLog();
36+
void UpdateGitStatus();
37+
void UpdateLocks();
3738
int WaitForEvents();
3839

3940
IGitConfig Config { get; }
@@ -99,6 +100,7 @@ class RepositoryManager : IRepositoryManager
99100
public event Action<ConfigBranch?, ConfigRemote?> CurrentBranchUpdated;
100101
public event Action<bool> IsBusyChanged;
101102
public event Action<GitStatus> GitStatusUpdated;
103+
public event Action<List<GitLock>> GitLocksUpdated;
102104
public event Action<List<GitLogEntry>> GitLogUpdated;
103105
public event Action<Dictionary<string, ConfigBranch>> LocalBranchesUpdated;
104106
public event Action<Dictionary<string, ConfigRemote>, Dictionary<string, Dictionary<string, ConfigBranch>>> RemoteBranchesUpdated;
@@ -178,20 +180,6 @@ public ITask CommitFiles(List<string> files, string message, string body)
178180
.Finally(() => IsBusy = false);
179181
}
180182

181-
public ITask<List<GitLogEntry>> Log()
182-
{
183-
var task = GitClient.Log();
184-
HookupHandlers(task);
185-
return task;
186-
}
187-
188-
public ITask<GitStatus> Status()
189-
{
190-
var task = GitClient.Status();
191-
HookupHandlers(task);
192-
return task;
193-
}
194-
195183
public ITask Fetch(string remote)
196184
{
197185
var task = GitClient.Fetch(remote);
@@ -266,13 +254,6 @@ public ITask CreateBranch(string branch, string baseBranch)
266254
return HookupHandlers(task);
267255
}
268256

269-
public ITask<List<GitLock>> ListLocks(bool local)
270-
{
271-
var task = GitClient.ListLocks(local);
272-
HookupHandlers(task);
273-
return task;
274-
}
275-
276257
public ITask LockFile(string file)
277258
{
278259
var task = GitClient.Lock(file);
@@ -285,6 +266,45 @@ public ITask UnlockFile(string file, bool force)
285266
return HookupHandlers(task);
286267
}
287268

269+
public void UpdateGitLog()
270+
{
271+
var task = GitClient.Log();
272+
HookupHandlers(task);
273+
task.Then((success, logEntries) =>
274+
{
275+
if (success)
276+
{
277+
GitLogUpdated?.Invoke(logEntries);
278+
}
279+
}).Start();
280+
}
281+
282+
public void UpdateGitStatus()
283+
{
284+
var task = GitClient.Status();
285+
HookupHandlers(task);
286+
task.Then((success, status) =>
287+
{
288+
if (success)
289+
{
290+
GitStatusUpdated?.Invoke(status);
291+
}
292+
}).Start();
293+
}
294+
295+
public void UpdateLocks()
296+
{
297+
var task = GitClient.ListLocks(false);
298+
HookupHandlers(task);
299+
task.Then((success, locks) =>
300+
{
301+
if (success)
302+
{
303+
GitLocksUpdated?.Invoke(locks);
304+
}
305+
}).Start();
306+
}
307+
288308
private void SetupWatcher()
289309
{
290310
watcher.HeadChanged += WatcherOnHeadChanged;
@@ -385,13 +405,13 @@ private void WatcherOnLocalBranchesChanged()
385405
private void WatcherOnRepositoryCommitted()
386406
{
387407
Logger.Trace("WatcherOnRepositoryCommitted");
388-
UpdateLog();
408+
UpdateGitLog();
389409
}
390410

391411
private void WatcherOnRepositoryChanged()
392412
{
393413
Logger.Trace("WatcherOnRepositoryChanged");
394-
UpdateStatus();
414+
UpdateGitStatus();
395415
}
396416

397417
private void WatcherOnConfigChanged()
@@ -409,29 +429,7 @@ private void WatcherOnHeadChanged()
409429
private void WatcherOnIndexChanged()
410430
{
411431
Logger.Trace("WatcherOnIndexChanged");
412-
UpdateStatus();
413-
}
414-
415-
private void UpdateLog()
416-
{
417-
Log().Then((success, logEntries) =>
418-
{
419-
if (success)
420-
{
421-
GitLogUpdated?.Invoke(logEntries);
422-
}
423-
}).Start();
424-
}
425-
426-
private void UpdateStatus()
427-
{
428-
Status().Then((success, status) =>
429-
{
430-
if (success)
431-
{
432-
GitStatusUpdated?.Invoke(status);
433-
}
434-
}).Start();
432+
UpdateGitStatus();
435433
}
436434

437435
private void UpdateConfigData(bool resetConfig = false)

src/tests/IntegrationTests/Events/RepositoryManagerTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public async Task ShouldDoNothingOnInitialize()
3636
repositoryManagerListener.DidNotReceive().OnIsBusyChanged(Args.Bool);
3737
repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
3838
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
39+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
3940
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
4041
repositoryManagerListener.DidNotReceive().LocalBranchesUpdated(Args.LocalBranchDictionary);
4142
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -60,6 +61,7 @@ public async Task ShouldDetectFileChanges()
6061
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
6162
repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
6263
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
64+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
6365
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
6466
repositoryManagerListener.DidNotReceive().LocalBranchesUpdated(Args.LocalBranchDictionary);
6567
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -89,6 +91,7 @@ public async Task ShouldAddAndCommitFiles()
8991
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
9092
repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
9193
repositoryManagerListener.Received().GitStatusUpdated(Args.GitStatus);
94+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
9295
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
9396
repositoryManagerListener.DidNotReceive().LocalBranchesUpdated(Args.LocalBranchDictionary);
9497
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -110,6 +113,7 @@ await RepositoryManager
110113
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
111114
repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
112115
repositoryManagerListener.Received().GitStatusUpdated(Args.GitStatus);
116+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
113117
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
114118
repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary);
115119
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -137,6 +141,7 @@ public async Task ShouldAddAndCommitAllFiles()
137141
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
138142
repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
139143
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
144+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
140145
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
141146
repositoryManagerListener.DidNotReceive().LocalBranchesUpdated(Args.LocalBranchDictionary);
142147
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -158,6 +163,7 @@ await RepositoryManager
158163
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
159164
repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
160165
repositoryManagerListener.Received().GitStatusUpdated(Args.GitStatus);
166+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
161167
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
162168
repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary);
163169
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -182,6 +188,7 @@ public async Task ShouldDetectBranchChange()
182188
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
183189
repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
184190
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
191+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
185192
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
186193
repositoryManagerListener.DidNotReceive().LocalBranchesUpdated(Args.LocalBranchDictionary);
187194
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -208,6 +215,7 @@ public async Task ShouldDetectBranchDelete()
208215
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
209216
repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
210217
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
218+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
211219
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
212220
repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary);
213221
repositoryManagerListener.Received().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -233,6 +241,7 @@ public async Task ShouldDetectBranchCreate()
233241
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
234242
repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
235243
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
244+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
236245
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
237246
repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary);
238247
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -251,6 +260,7 @@ public async Task ShouldDetectBranchCreate()
251260
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
252261
repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
253262
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
263+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
254264
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
255265
repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary);
256266
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -277,6 +287,7 @@ public async Task ShouldDetectChangesToRemotes()
277287
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
278288
repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
279289
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
290+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
280291
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
281292
repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary);
282293
repositoryManagerListener.Received().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -297,6 +308,7 @@ public async Task ShouldDetectChangesToRemotes()
297308
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
298309
repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
299310
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
311+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
300312
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
301313
repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary);
302314
repositoryManagerListener.Received().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -324,6 +336,7 @@ await RepositoryManager.CreateBranch("branch2", "another/master")
324336
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
325337
repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
326338
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
339+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
327340
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
328341
repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary);
329342
repositoryManagerListener.Received().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -343,6 +356,7 @@ await RepositoryManager.SwitchBranch("branch2")
343356
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
344357
repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
345358
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
359+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
346360
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
347361
repositoryManagerListener.DidNotReceive().LocalBranchesUpdated(Args.LocalBranchDictionary);
348362
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -367,6 +381,7 @@ public async Task ShouldDetectGitPull()
367381
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
368382
repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
369383
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
384+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
370385
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
371386
repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary);
372387
repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);
@@ -395,6 +410,7 @@ public async Task ShouldDetectGitFetch()
395410
repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool);
396411
repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote);
397412
repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus);
413+
repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks);
398414
repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs);
399415
repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary);
400416
repositoryManagerListener.Received().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary);

0 commit comments

Comments
 (0)