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

Commit 87d2ed6

Browse files
authored
Merge pull request #139 from github-for-unity/fixes/refactor-repository-manager
Refactoring RepositoryManager to have move obvious event handler names
2 parents 284f80c + a676b48 commit 87d2ed6

File tree

9 files changed

+63
-71
lines changed

9 files changed

+63
-71
lines changed

src/GitHub.Api/Git/IRepository.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ interface IRepository : IEquatable<IRepository>
5252
IUser User { get; set; }
5353
IEnumerable<GitLock> CurrentLocks { get; }
5454

55-
event Action<GitStatus> OnRepositoryChanged;
55+
event Action<GitStatus> OnStatusUpdated;
5656
event Action<string> OnActiveBranchChanged;
5757
event Action<string> OnActiveRemoteChanged;
5858
event Action OnLocalBranchListChanged;
59-
event Action OnCommitChanged;
59+
event Action OnHeadChanged;
6060
event Action<IEnumerable<GitLock>> OnLocksUpdated;
6161
}
6262
}

src/GitHub.Api/Git/Repository.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ class Repository : IRepository, IEquatable<Repository>
1313
private readonly IGitClient gitClient;
1414
private readonly IRepositoryManager repositoryManager;
1515

16-
public event Action<GitStatus> OnRepositoryChanged;
16+
public event Action<GitStatus> OnStatusUpdated;
1717
public event Action<string> OnActiveBranchChanged;
1818
public event Action<string> OnActiveRemoteChanged;
1919
public event Action OnLocalBranchListChanged;
20-
public event Action OnCommitChanged;
20+
public event Action OnHeadChanged;
2121
public event Action<IEnumerable<GitLock>> OnLocksUpdated;
2222

2323
public IEnumerable<GitBranch> LocalBranches => repositoryManager.LocalBranches.Values.Select(
@@ -46,7 +46,7 @@ public Repository(IGitClient gitClient, IRepositoryManager repositoryManager, st
4646
CloneUrl = cloneUrl;
4747
LocalPath = localPath;
4848

49-
repositoryManager.OnRepositoryChanged += RepositoryManager_OnRepositoryChanged;
49+
repositoryManager.OnStatusUpdated += RepositoryManager_OnStatusUpdated;
5050
repositoryManager.OnActiveBranchChanged += RepositoryManager_OnActiveBranchChanged;
5151
repositoryManager.OnActiveRemoteChanged += RepositoryManager_OnActiveRemoteChanged;
5252
repositoryManager.OnLocalBranchListChanged += RepositoryManager_OnLocalBranchListChanged;
@@ -125,7 +125,7 @@ private void RepositoryManager_OnRemoteOrTrackingChanged()
125125

126126
private void RepositoryManager_OnHeadChanged()
127127
{
128-
OnCommitChanged?.Invoke();
128+
OnHeadChanged?.Invoke();
129129
}
130130

131131
private void RepositoryManager_OnLocalBranchListChanged()
@@ -143,11 +143,10 @@ private void RepositoryManager_OnActiveBranchChanged()
143143
OnActiveBranchChanged?.Invoke(CurrentBranch);
144144
}
145145

146-
private void RepositoryManager_OnRepositoryChanged(GitStatus status)
146+
private void RepositoryManager_OnStatusUpdated(GitStatus status)
147147
{
148148
CurrentStatus = status;
149-
//Logger.Debug("Got STATUS 2 {0} {1}", OnRepositoryChanged, status);
150-
OnRepositoryChanged?.Invoke(CurrentStatus);
149+
OnStatusUpdated?.Invoke(CurrentStatus);
151150
}
152151

153152
private void RepositoryManager_OnLocksUpdated(IEnumerable<GitLock> locks)

src/GitHub.Api/Git/RepositoryManager.cs

Lines changed: 38 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ interface IRepositoryManager : IDisposable
1313
event Action OnActiveRemoteChanged;
1414
event Action OnRemoteBranchListChanged;
1515
event Action OnLocalBranchListChanged;
16-
event Action<GitStatus> OnRepositoryChanged;
16+
event Action<GitStatus> OnStatusUpdated;
1717
event Action OnHeadChanged;
1818
event Action<bool> OnIsBusyChanged;
1919
event Action OnRemoteOrTrackingChanged;
@@ -120,7 +120,6 @@ class RepositoryManager : IRepositoryManager
120120

121121
private ConfigBranch? activeBranch;
122122
private ConfigRemote? activeRemote;
123-
private Action repositoryUpdateCallback;
124123
private string head;
125124
private bool isBusy;
126125
private Dictionary<string, Dictionary<string, ConfigBranch>> remoteBranches = new Dictionary<string, Dictionary<string, ConfigBranch>>();
@@ -131,7 +130,7 @@ class RepositoryManager : IRepositoryManager
131130
public event Action OnActiveRemoteChanged;
132131
public event Action OnRemoteBranchListChanged;
133132
public event Action OnLocalBranchListChanged;
134-
public event Action<GitStatus> OnRepositoryChanged;
133+
public event Action<GitStatus> OnStatusUpdated;
135134
public event Action OnHeadChanged;
136135
public event Action<bool> OnIsBusyChanged;
137136
public event Action OnRemoteOrTrackingChanged;
@@ -152,21 +151,15 @@ public RepositoryManager(IPlatform platform, ITaskManager taskManager, IUsageTra
152151

153152
watcher = repositoryWatcher;
154153

155-
watcher.HeadChanged += HeadChanged;
156-
watcher.IndexChanged += OnIndexChanged;
157-
watcher.ConfigChanged += OnConfigChanged;
158-
watcher.LocalBranchChanged += OnLocalBranchChanged;
159-
watcher.LocalBranchCreated += OnLocalBranchCreated;
160-
watcher.LocalBranchDeleted += OnLocalBranchDeleted;
161-
watcher.RepositoryChanged += OnRepositoryUpdated;
162-
watcher.RemoteBranchCreated += OnRemoteBranchCreated;
163-
watcher.RemoteBranchDeleted += OnRemoteBranchDeleted;
164-
165-
const int debounceTimeout = 0;
166-
167-
repositoryUpdateCallback = debounceTimeout == 0 ?
168-
OnRepositoryUpdatedHandler
169-
: TaskExtensions.Debounce(OnRepositoryUpdatedHandler, debounceTimeout);
154+
watcher.HeadChanged += Watcher_OnHeadChanged;
155+
watcher.IndexChanged += Watcher_OnIndexChanged;
156+
watcher.ConfigChanged += Watcher_OnConfigChanged;
157+
watcher.LocalBranchChanged += Watcher_OnLocalBranchChanged;
158+
watcher.LocalBranchCreated += Watcher_OnLocalBranchCreated;
159+
watcher.LocalBranchDeleted += Watcher_OnLocalBranchDeleted;
160+
watcher.RepositoryChanged += Watcher_OnRepositoryChanged;
161+
watcher.RemoteBranchCreated += Watcher_OnRemoteBranchCreated;
162+
watcher.RemoteBranchDeleted += Watcher_OnRemoteBranchDeleted;
170163

171164
var remote = config.GetRemote("origin");
172165
if (!remote.HasValue)
@@ -205,7 +198,8 @@ public void Stop()
205198

206199
public void Refresh()
207200
{
208-
OnRepositoryUpdated();
201+
Logger.Trace("Refresh");
202+
UpdateGitStatus();
209203
}
210204

211205
public ITask CommitFiles(List<string> files, string message, string body)
@@ -247,7 +241,7 @@ public ITask RemoteAdd(string remote, string url)
247241
HookupHandlers(task);
248242
if (!platform.Environment.IsWindows)
249243
{
250-
task.Then(_ => OnConfigChanged());
244+
task.Then(_ => UpdateConfigData());
251245
}
252246
return task;
253247
}
@@ -258,7 +252,7 @@ public ITask RemoteRemove(string remote)
258252
HookupHandlers(task);
259253
if (!platform.Environment.IsWindows)
260254
{
261-
task.Then(_ => OnConfigChanged());
255+
task.Then(_ => UpdateConfigData());
262256
}
263257
return task;
264258
}
@@ -350,80 +344,79 @@ private ITask HookupHandlers(ITask task, bool disableWatcher = false)
350344
return task;
351345
}
352346

353-
private void OnRemoteBranchDeleted(string remote, string name)
347+
private void Watcher_OnRemoteBranchDeleted(string remote, string name)
354348
{
355349
RemoveRemoteBranch(remote, name);
356350
}
357351

358-
private void OnRemoteBranchChanged(string remote, string name)
359-
{}
360-
361-
private void OnRemoteBranchCreated(string remote, string name)
352+
private void Watcher_OnRemoteBranchCreated(string remote, string name)
362353
{
363354
AddRemoteBranch(remote, name);
364355
}
365356

366-
private void OnRepositoryUpdated()
357+
private void Watcher_OnRepositoryChanged()
367358
{
368-
Logger.Trace("OnRepositoryUpdated Trigger OnRepositoryUpdatedHandler");
369-
repositoryUpdateCallback.Invoke();
359+
UpdateGitStatus();
370360
}
371361

372-
private void OnRepositoryUpdatedHandler()
362+
private void UpdateGitStatus()
373363
{
374-
Logger.Trace("Starting OnRepositoryUpdatedHandler");
364+
Logger.Trace("Updating Git Status");
375365

376366
var task = GitClient.Status()
377367
.Finally((success, ex, data) =>
378368
{
379369
if (success && data.HasValue)
380370
{
381-
OnRepositoryChanged?.Invoke(data.Value);
371+
OnStatusUpdated?.Invoke(data.Value);
382372
}
383-
Logger.Trace("Ending OnRepositoryUpdatedHandler");
373+
Logger.Trace("Updated Git Status");
384374
});
375+
385376
HookupHandlers(task).Start();
386377
}
387378

388-
private void OnConfigChanged()
379+
private void Watcher_OnConfigChanged()
380+
{
381+
UpdateConfigData();
382+
}
383+
384+
private void UpdateConfigData()
389385
{
390386
config.Reset();
391387
RefreshConfigData();
392-
393-
Logger.Trace("OnRemoteOrTrackingChanged");
394-
OnRemoteOrTrackingChanged?.Invoke();
395388
}
396389

397-
private void HeadChanged(string contents)
390+
private void Watcher_OnHeadChanged(string contents)
398391
{
399-
Logger.Trace("HeadChanged");
392+
Logger.Trace("Watcher_OnHeadChanged");
400393
head = contents;
401394
ActiveBranch = GetActiveBranch();
402395
ActiveRemote = GetActiveRemote();
403396
OnHeadChanged?.Invoke();
404-
OnRepositoryUpdatedHandler();
397+
UpdateGitStatus();
405398
}
406399

407-
private void OnIndexChanged()
400+
private void Watcher_OnIndexChanged()
408401
{
409402
}
410403

411-
private void OnLocalBranchCreated(string name)
404+
private void Watcher_OnLocalBranchCreated(string name)
412405
{
413406
AddLocalBranch(name);
414407
}
415408

416-
private void OnLocalBranchDeleted(string name)
409+
private void Watcher_OnLocalBranchDeleted(string name)
417410
{
418411
RemoveLocalBranch(name);
419412
}
420413

421-
private void OnLocalBranchChanged(string name)
414+
private void Watcher_OnLocalBranchChanged(string name)
422415
{
423416
if (name == this.Repository.CurrentBranch)
424417
{
425418
OnActiveBranchChanged?.Invoke();
426-
OnRepositoryUpdatedHandler();
419+
UpdateGitStatus();
427420
}
428421
}
429422

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public override void OnEnable()
4040
return;
4141

4242
OnStatusUpdate(Repository.CurrentStatus);
43-
Repository.OnRepositoryChanged += RunStatusUpdateOnMainThread;
43+
Repository.OnStatusUpdated += RunStatusUpdateOnMainThread;
4444
Repository.Refresh();
4545
}
4646

@@ -49,7 +49,7 @@ public override void OnDisable()
4949
base.OnDisable();
5050
if (Repository == null)
5151
return;
52-
Repository.OnRepositoryChanged -= RunStatusUpdateOnMainThread;
52+
Repository.OnStatusUpdated -= RunStatusUpdateOnMainThread;
5353
}
5454

5555
private void RunStatusUpdateOnMainThread(GitStatus status)

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/HistoryView.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ public override void OnEnable()
8989
base.OnEnable();
9090
if (Repository != null)
9191
{
92-
Repository.OnCommitChanged += UpdateLogOnMainThread;
93-
Repository.OnRepositoryChanged += UpdateStatusOnMainThread;
92+
Repository.OnHeadChanged += UpdateLogOnMainThread;
93+
Repository.OnStatusUpdated += UpdateStatusOnMainThread;
9494
}
9595
UpdateLog();
9696
}
@@ -100,8 +100,8 @@ public override void OnDisable()
100100
base.OnDisable();
101101
if (Repository != null)
102102
{
103-
Repository.OnCommitChanged -= UpdateLogOnMainThread;
104-
Repository.OnRepositoryChanged -= UpdateStatusOnMainThread;
103+
Repository.OnHeadChanged -= UpdateLogOnMainThread;
104+
Repository.OnStatusUpdated -= UpdateStatusOnMainThread;
105105
}
106106
}
107107

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ProjectWindowInterface.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public static void Initialize(IRepository repo)
2828
repository = repo;
2929
if (repository != null)
3030
{
31-
repository.OnRepositoryChanged += RunStatusUpdateOnMainThread;
31+
repository.OnStatusUpdated += RunStatusUpdateOnMainThread;
3232
repository.OnLocksUpdated += RunLocksUpdateOnMainThread;
3333
}
3434
}

src/tests/IntegrationTests/Events/RepositoryManagerTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public async Task ShouldDetectFileChanges()
3535
};
3636

3737
var result = new GitStatus();
38-
RepositoryManager.OnRepositoryChanged += status => { result = status; };
38+
RepositoryManager.OnStatusUpdated += status => { result = status; };
3939

4040
Logger.Trace("Issuing Changes");
4141

@@ -97,7 +97,7 @@ public async Task ShouldAddAndCommitFiles()
9797
};
9898

9999
var result = new GitStatus();
100-
RepositoryManager.OnRepositoryChanged += status => {
100+
RepositoryManager.OnStatusUpdated += status => {
101101
result = status;
102102
};
103103

@@ -166,7 +166,7 @@ public async Task ShouldDetectBranchChange()
166166
};
167167

168168
var result = new GitStatus();
169-
RepositoryManager.OnRepositoryChanged += status => { result = status; };
169+
RepositoryManager.OnStatusUpdated += status => { result = status; };
170170

171171
Logger.Trace("Issuing Command");
172172

@@ -349,7 +349,7 @@ public async Task ShouldDetectGitPull()
349349
};
350350

351351
var result = new GitStatus();
352-
RepositoryManager.OnRepositoryChanged += status => { result = status; };
352+
RepositoryManager.OnStatusUpdated += status => { result = status; };
353353

354354
Logger.Trace("Issuing Command");
355355

src/tests/TestUtils/Events/IRepositoryManagerListener.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ public static void AttachListener(this IRepositoryManagerListener listener, IRep
4545
managerAutoResetEvent?.OnIsBusyChanged.Set();
4646
};
4747

48-
repositoryManager.OnRepositoryChanged += status => {
49-
logger?.Debug("OnRepositoryChanged: {0}", status);
48+
repositoryManager.OnStatusUpdated += status => {
49+
logger?.Debug("OnStatusUpdated: {0}", status);
5050
listener.OnRepositoryChanged(status);
5151
managerAutoResetEvent?.OnRepositoryChanged.Set();
5252
};

src/tests/UnitTests/Repository/RepositoryManagerTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ public async Task ShouldRefreshAndReturnCombinedStatusAndLockInformation1()
169169
repositoryManagerListener.AttachListener(repositoryManager);
170170

171171
GitStatus? result = null;
172-
repositoryManager.OnRepositoryChanged += s => { result = s; };
172+
repositoryManager.OnStatusUpdated += s => { result = s; };
173173

174174
repositoryManager.Refresh();
175175

@@ -232,7 +232,7 @@ public void ShouldRefreshAndReturnCombinedStatusAndLockInformation2()
232232
repositoryManagerListener.AttachListener(repositoryManager);
233233

234234
GitStatus? result = null;
235-
repositoryManager.OnRepositoryChanged += s => { result = s; };
235+
repositoryManager.OnStatusUpdated += s => { result = s; };
236236

237237
repositoryManager.Refresh();
238238

@@ -272,7 +272,7 @@ public void ShouldRefreshAndReturnWithEmptyGitLockResponse()
272272
repositoryManagerListener.AttachListener(repositoryManager);
273273

274274
GitStatus? result = null;
275-
repositoryManager.OnRepositoryChanged += s => { result = s; };
275+
repositoryManager.OnStatusUpdated += s => { result = s; };
276276

277277
repositoryManager.Refresh();
278278

@@ -312,7 +312,7 @@ public void ShouldRefreshAndReturnWithNoGitLockResponse()
312312
repositoryManagerListener.AttachListener(repositoryManager);
313313

314314
GitStatus? result = null;
315-
repositoryManager.OnRepositoryChanged += s => { result = s; };
315+
repositoryManager.OnStatusUpdated += s => { result = s; };
316316

317317
repositoryManager.Refresh();
318318

0 commit comments

Comments
 (0)