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

Commit 6f0d6ab

Browse files
Making all the unit tests pass
1 parent c497641 commit 6f0d6ab

File tree

7 files changed

+157
-114
lines changed

7 files changed

+157
-114
lines changed

src/GitHub.Api/Git/IRepository.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ public interface IRepository : IEquatable<IRepository>
5252
ConfigBranch? CurrentBranch { get; set; }
5353
GitStatus CurrentStatus { get; set; }
5454
IList<GitRemote> Remotes { get; }
55-
IList<GitBranch> LocalBranches { get; }
56-
IList<GitBranch> RemoteBranches { get; }
55+
IEnumerable<GitBranch> LocalBranches { get; }
56+
IEnumerable<GitBranch> RemoteBranches { get; }
5757
IUser User { get; set; }
5858
IList<GitLock> CurrentLocks { get; }
5959
string CurrentBranchName { get; }

src/GitHub.Api/Git/Repository.cs

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -188,15 +188,6 @@ private void OnRepositoryManager_OnRemoteBranchListUpdated(Dictionary<string, Co
188188

189189
remoteBranches = branches;
190190

191-
RemoteBranches = remoteBranches.Values
192-
.SelectMany(x => x.Values)
193-
.Select(x =>
194-
{
195-
var name = x.Remote.Value.Name + "/" + x.Name;
196-
return new GitBranch(name, "[None]", false);
197-
}).ToArray();
198-
199-
200191
Logger.Trace("OnRemoteBranchListChanged");
201192
OnRemoteBranchListChanged?.Invoke();
202193
}
@@ -205,19 +196,6 @@ private void OnRepositoryManager_OnLocalBranchListUpdated(Dictionary<string, Con
205196
{
206197
localBranches = branches;
207198

208-
LocalBranches = localBranches.Values.Select(x =>
209-
{
210-
var argName = x.Name;
211-
212-
var tracking = x.IsTracking
213-
? x.Remote.Value.Name + "/" + argName
214-
: "[None]";
215-
216-
var active = argName == CurrentBranch?.Name;
217-
218-
return new GitBranch(argName, tracking, active);
219-
}).ToArray();
220-
221199
Logger.Trace("OnLocalBranchListChanged");
222200
OnLocalBranchListChanged?.Invoke();
223201
}
@@ -315,9 +293,20 @@ private void RepositoryManager_OnRemoteBranchRemoved(string remote, string name)
315293

316294
public IList<GitRemote> Remotes { get; private set; }
317295

318-
public IList<GitBranch> LocalBranches { get; private set; }
296+
public IEnumerable<GitBranch> LocalBranches => localBranches.Values.Select(x => {
297+
var name = x.Name;
298+
var trackingName = x.IsTracking ? x.Remote.Value.Name + "/" + name : "[None]";
299+
var isActive = name == CurrentBranch?.Name;
300+
301+
return new GitBranch(name, trackingName, isActive);
302+
});
303+
304+
public IEnumerable<GitBranch> RemoteBranches => remoteBranches.Values.SelectMany(x => x.Values).Select(x => {
305+
var name = x.Remote.Value.Name + "/" + x.Name;
306+
var trackingName = "[None]";
319307

320-
public IList<GitBranch> RemoteBranches { get; private set; }
308+
return new GitBranch(name, trackingName, false);
309+
});
321310

322311
public ConfigBranch? CurrentBranch
323312
{

src/GitHub.Api/Git/RepositoryManager.cs

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,20 @@ namespace GitHub.Unity
88
{
99
public interface IRepositoryManager : IDisposable
1010
{
11-
event Action<bool> OnIsBusyChanged;
12-
event Action<GitStatus> OnStatusUpdated;
13-
event Action<IList<GitLock>> OnLocksUpdated;
14-
event Action<Dictionary<string, ConfigBranch>> OnLocalBranchListUpdated;
15-
event Action<Dictionary<string, ConfigRemote>, Dictionary<string, Dictionary<string, ConfigBranch>>> OnRemoteBranchListUpdated;
1611
event Action<ConfigBranch?> OnCurrentBranchUpdated;
1712
event Action<ConfigRemote?> OnCurrentRemoteUpdated;
18-
event Action<string> OnLocalBranchUpdated;
13+
event Action<IUser> OnGitUserLoaded;
14+
event Action<bool> OnIsBusyChanged;
1915
event Action<string> OnLocalBranchAdded;
16+
event Action<Dictionary<string, ConfigBranch>> OnLocalBranchListUpdated;
2017
event Action<string> OnLocalBranchRemoved;
18+
event Action<string> OnLocalBranchUpdated;
19+
event Action<IList<GitLock>> OnLocksUpdated;
2120
event Action<string, string> OnRemoteBranchAdded;
21+
event Action<Dictionary<string, ConfigRemote>, Dictionary<string, Dictionary<string, ConfigBranch>>> OnRemoteBranchListUpdated;
2222
event Action<string, string> OnRemoteBranchRemoved;
23-
event Action<IUser> OnGitUserLoaded;
23+
event Action<GitStatus> OnStatusUpdated;
2424

25-
IGitConfig Config { get; }
26-
IGitClient GitClient { get; }
27-
bool IsBusy { get; }
2825
void Initialize();
2926
void Start();
3027
void Stop();
@@ -46,6 +43,10 @@ public interface IRepositoryManager : IDisposable
4643
ITask LockFile(string file);
4744
ITask UnlockFile(string file, bool force);
4845
int WaitForEvents();
46+
47+
IGitConfig Config { get; }
48+
IGitClient GitClient { get; }
49+
bool IsBusy { get; }
4950
}
5051

5152
interface IRepositoryPathConfiguration
@@ -103,36 +104,20 @@ class RepositoryManager : IRepositoryManager
103104
private readonly IRepositoryWatcher watcher;
104105

105106
private bool isBusy;
106-
private Action repositoryUpdateCallback;
107-
108-
// internal busy flag signal
109-
public event Action<bool> OnIsBusyChanged;
110107

111-
public event Action<Dictionary<string, ConfigBranch>> OnLocalBranchListUpdated;
112-
public event Action<Dictionary<string, ConfigRemote>, Dictionary<string, Dictionary<string, ConfigBranch>>> OnRemoteBranchListUpdated;
113-
public event Action<IList<GitLock>> OnLocksUpdated;
114-
public event Action<GitStatus> OnStatusUpdated;
115108
public event Action<ConfigBranch?> OnCurrentBranchUpdated;
116109
public event Action<ConfigRemote?> OnCurrentRemoteUpdated;
117-
public event Action<string> OnLocalBranchUpdated;
110+
public event Action<IUser> OnGitUserLoaded;
111+
public event Action<bool> OnIsBusyChanged;
118112
public event Action<string> OnLocalBranchAdded;
113+
public event Action<Dictionary<string, ConfigBranch>> OnLocalBranchListUpdated;
119114
public event Action<string> OnLocalBranchRemoved;
115+
public event Action<string> OnLocalBranchUpdated;
116+
public event Action<IList<GitLock>> OnLocksUpdated;
120117
public event Action<string, string> OnRemoteBranchAdded;
118+
public event Action<Dictionary<string, ConfigRemote>, Dictionary<string, Dictionary<string, ConfigBranch>>> OnRemoteBranchListUpdated;
121119
public event Action<string, string> OnRemoteBranchRemoved;
122-
public event Action<IUser> OnGitUserLoaded;
123-
124-
public static RepositoryManager CreateInstance(IPlatform platform, ITaskManager taskManager, IUsageTracker usageTracker,
125-
IGitClient gitClient, NPath repositoryRoot)
126-
{
127-
var repositoryPathConfiguration = new RepositoryPathConfiguration(repositoryRoot);
128-
string filePath = repositoryPathConfiguration.DotGitConfig;
129-
var gitConfig = new GitConfig(filePath);
130-
131-
var repositoryWatcher = new RepositoryWatcher(platform, repositoryPathConfiguration, taskManager.Token);
132-
133-
return new RepositoryManager(platform, taskManager, usageTracker, gitConfig, repositoryWatcher,
134-
gitClient, repositoryPathConfiguration, taskManager.Token);
135-
}
120+
public event Action<GitStatus> OnStatusUpdated;
136121

137122
public RepositoryManager(IPlatform platform, ITaskManager taskManager, IUsageTracker usageTracker, IGitConfig gitConfig,
138123
IRepositoryWatcher repositoryWatcher, IGitClient gitClient,
@@ -150,6 +135,19 @@ public RepositoryManager(IPlatform platform, ITaskManager taskManager, IUsageTra
150135
SetupWatcher();
151136
}
152137

138+
public static RepositoryManager CreateInstance(IPlatform platform, ITaskManager taskManager, IUsageTracker usageTracker,
139+
IGitClient gitClient, NPath repositoryRoot)
140+
{
141+
var repositoryPathConfiguration = new RepositoryPathConfiguration(repositoryRoot);
142+
string filePath = repositoryPathConfiguration.DotGitConfig;
143+
var gitConfig = new GitConfig(filePath);
144+
145+
var repositoryWatcher = new RepositoryWatcher(platform, repositoryPathConfiguration, taskManager.Token);
146+
147+
return new RepositoryManager(platform, taskManager, usageTracker, gitConfig, repositoryWatcher,
148+
gitClient, repositoryPathConfiguration, taskManager.Token);
149+
}
150+
153151
public void Initialize()
154152
{
155153
Logger.Trace("Initialize");

0 commit comments

Comments
 (0)