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

Commit fb8f80f

Browse files
committed
Merge fixes/shutting-down-processes into master
2 parents 43e1e78 + 0b655ef commit fb8f80f

39 files changed

+364
-254
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ _NCrunch_GitHub.Unity
88
build/
99
TestResult.xml
1010
submodules/
11-
*.stackdump
11+
*.stackdump
12+
*.lastcodeanalysissucceeded

src/GitHub.Api/Application/ApplicationConfiguration.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ namespace GitHub.Unity
55
public static class ApplicationConfiguration
66
{
77
public const int DefaultWebTimeout = 3000;
8+
public const int DefaultGitTimeout = 5000;
89
public static int WebTimeout { get; set; } = DefaultWebTimeout;
10+
public static int GitTimeout { get; set; } = DefaultGitTimeout;
911
}
1012
}

src/GitHub.Api/Application/ApplicationManagerBase.cs

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
namespace GitHub.Unity
99
{
10-
abstract class ApplicationManagerBase : IApplicationManager
10+
class ApplicationManagerBase : IApplicationManager
1111
{
1212
protected static ILogging Logger { get; } = LogHelper.GetLogger<IApplicationManager>();
1313

@@ -45,9 +45,10 @@ protected void Initialize()
4545
{
4646
LogHelper.TracingEnabled = UserSettings.Get(Constants.TraceLoggingKey, false);
4747
ApplicationConfiguration.WebTimeout = UserSettings.Get(Constants.WebTimeoutKey, ApplicationConfiguration.WebTimeout);
48+
ApplicationConfiguration.GitTimeout = UserSettings.Get(Constants.GitTimeoutKey, ApplicationConfiguration.GitTimeout);
4849
Platform.Initialize(ProcessManager, TaskManager);
4950
progress.OnProgress += progressReporter.UpdateProgress;
50-
UsageTracker = new UsageTracker(TaskManager, UserSettings, Environment, InstanceId.ToString());
51+
UsageTracker = new UsageTracker(TaskManager, GitClient, ProcessManager, UserSettings, Environment, InstanceId.ToString());
5152

5253
#if ENABLE_METRICS
5354
var metricsService = new MetricsService(ProcessManager,
@@ -191,7 +192,6 @@ public void SetupGit(GitInstaller.GitInstallationState state)
191192
if (Environment.RepositoryPath.IsInitialized)
192193
{
193194
ConfigureMergeSettings();
194-
CaptureRepoSize();
195195

196196
GitClient.LfsInstall()
197197
.Catch(e =>
@@ -300,37 +300,6 @@ private void ConfigureMergeSettings()
300300
}).RunSynchronously();
301301
}
302302

303-
private void CaptureRepoSize()
304-
{
305-
GitClient.CountObjects()
306-
.Finally((success, gitObjects) =>
307-
{
308-
if (success)
309-
{
310-
UsageTracker.UpdateRepoSize(gitObjects.kilobytes);
311-
}
312-
})
313-
.Start();
314-
315-
var gitLfsDataPath = Environment.RepositoryPath.Combine(".git", "lfs");
316-
if (gitLfsDataPath.Exists())
317-
{
318-
var diskUsageTask = Environment.IsWindows
319-
? (IProcessTask<int>)new WindowsDiskUsageTask(gitLfsDataPath, TaskManager.Token)
320-
: new LinuxDiskUsageTask(gitLfsDataPath, TaskManager.Token);
321-
322-
diskUsageTask
323-
.Configure(ProcessManager)
324-
.Finally((success, kilobytes) =>
325-
{
326-
if (success)
327-
{
328-
UsageTracker.UpdateLfsDiskUsage(kilobytes);
329-
}
330-
}).Start();
331-
}
332-
}
333-
334303
public void RestartRepository()
335304
{
336305
if (!Environment.RepositoryPath.IsInitialized)
@@ -346,8 +315,8 @@ public void RestartRepository()
346315
Logger.Trace($"Got a repository? {(Environment.Repository != null ? Environment.Repository.LocalPath : "null")}");
347316
}
348317

349-
protected abstract void InitializeUI();
350-
protected abstract void InitializationComplete();
318+
protected virtual void InitializeUI() {}
319+
protected virtual void InitializationComplete() {}
351320

352321
private bool disposed = false;
353322
protected virtual void Dispose(bool disposing)
@@ -356,6 +325,10 @@ protected virtual void Dispose(bool disposing)
356325
{
357326
if (disposed) return;
358327
disposed = true;
328+
if (ProcessManager != null)
329+
{
330+
ProcessManager.Stop();
331+
}
359332
if (TaskManager != null)
360333
{
361334
TaskManager.Dispose();

src/GitHub.Api/Git/GitClient.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public interface IGitClient
3838
ITask<List<GitLogEntry>> Log(BaseOutputListProcessor<GitLogEntry> processor = null);
3939
ITask<TheVersion> Version(IOutputProcessor<TheVersion> processor = null);
4040
ITask<TheVersion> LfsVersion(IOutputProcessor<TheVersion> processor = null);
41-
ITask<GitCountObjects> CountObjects(IOutputProcessor<GitCountObjects> processor = null);
41+
ITask<int> CountObjects(IOutputProcessor<int> processor = null);
4242
ITask<GitUser> SetConfigNameAndEmail(string username, string email);
4343
ITask<string> GetHead(IOutputProcessor<string> processor = null);
4444
}
@@ -100,7 +100,7 @@ public ITask<TheVersion> LfsVersion(IOutputProcessor<TheVersion> processor = nul
100100
.Configure(processManager);
101101
}
102102

103-
public ITask<GitCountObjects> CountObjects(IOutputProcessor<GitCountObjects> processor = null)
103+
public ITask<int> CountObjects(IOutputProcessor<int> processor = null)
104104
{
105105
return new GitCountObjectsTask(cancellationToken, processor)
106106
.Configure(processManager);
@@ -151,7 +151,7 @@ public ITask<GitUser> SetConfigNameAndEmail(string username, string email)
151151
public ITask<List<GitLock>> ListLocks(bool local, BaseOutputListProcessor<GitLock> processor = null)
152152
{
153153
return new GitListLocksTask(local, cancellationToken, processor)
154-
.Configure(processManager);
154+
.Configure(processManager, environment.GitLfsExecutablePath);
155155
}
156156

157157
public ITask<string> Pull(string remote, string branch, IOutputProcessor<string> processor = null)
@@ -301,14 +301,14 @@ public ITask<string> Lock(NPath file,
301301
IOutputProcessor<string> processor = null)
302302
{
303303
return new GitLockTask(file, cancellationToken, processor)
304-
.Configure(processManager);
304+
.Configure(processManager, environment.GitLfsExecutablePath);
305305
}
306306

307307
public ITask<string> Unlock(NPath file, bool force,
308308
IOutputProcessor<string> processor = null)
309309
{
310310
return new GitUnlockTask(file, force, cancellationToken, processor)
311-
.Configure(processManager);
311+
.Configure(processManager, environment.GitLfsExecutablePath);
312312
}
313313

314314
public ITask<string> GetHead(IOutputProcessor<string> processor = null)

src/GitHub.Api/Git/GitCountObjects.cs

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/GitHub.Api/Git/Repository.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,6 @@ public void Refresh(CacheType cacheType)
188188
{
189189
var cache = cacheContainer.GetCache(cacheType);
190190
cache.InvalidateData();
191-
192-
// Ensuring that the GitLock cache is kept up to date
193-
cacheContainer.GetCache(CacheType.GitLocks).ValidateData();
194191
}
195192

196193
private void CacheHasBeenInvalidated(CacheType cacheType)
@@ -309,7 +306,6 @@ private static GitBranch GetLocalGitBranch(string currentBranchName, ConfigBranc
309306
{
310307
var branchName = x.Name;
311308
var trackingName = x.IsTracking ? x.Remote.Value.Name + "/" + branchName : "[None]";
312-
var isActive = branchName == currentBranchName;
313309
return new GitBranch(branchName, trackingName);
314310
}
315311

@@ -504,4 +500,4 @@ public string Email
504500

505501
protected static ILogging Logger { get; } = LogHelper.GetLogger<User>();
506502
}
507-
}
503+
}

src/GitHub.Api/Git/RepositoryManager.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,11 @@ public ITask CommitFiles(List<string> files, string message, string body)
195195
public ITask Fetch(string remote)
196196
{
197197
var task = GitClient.Fetch(remote);
198+
task.OnEnd += (_, __, success, ___) =>
199+
{
200+
if (success)
201+
UpdateGitAheadBehindStatus().Start();
202+
};
198203
return HookupHandlers(task, false);
199204
}
200205

@@ -207,6 +212,11 @@ public ITask Pull(string remote, string branch)
207212
public ITask Push(string remote, string branch)
208213
{
209214
var task = GitClient.Push(remote, branch);
215+
task.OnEnd += (_, __, success, ___) =>
216+
{
217+
if (success)
218+
UpdateGitAheadBehindStatus().Start();
219+
};
210220
return HookupHandlers(task, false);
211221
}
212222

src/GitHub.Api/Git/Tasks/GitCountObjectsTask.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
namespace GitHub.Unity
44
{
5-
class GitCountObjectsTask : ProcessTask<GitCountObjects>
5+
class GitCountObjectsTask : ProcessTask<int>
66
{
77
private const string TaskName = "git count-objects";
88

9-
public GitCountObjectsTask(CancellationToken token, IOutputProcessor<GitCountObjects> processor = null)
9+
public GitCountObjectsTask(CancellationToken token, IOutputProcessor<int> processor = null)
1010
: base(token, processor ?? new GitCountObjectsProcessor())
1111
{
1212
Name = TaskName;
@@ -19,4 +19,4 @@ public override string ProcessArguments
1919
public override TaskAffinity Affinity { get { return TaskAffinity.Exclusive; } }
2020
public override string Message { get; set; } = "Counting git objects...";
2121
}
22-
}
22+
}

src/GitHub.Api/Git/Tasks/GitListLocksTask.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@ namespace GitHub.Unity
44
{
55
class GitListLocksTask : ProcessTaskWithListOutput<GitLock>
66
{
7+
private const string TaskName = "git lfs locks";
78
private readonly string args;
89

910
public GitListLocksTask(bool local,
1011
CancellationToken token, BaseOutputListProcessor<GitLock> processor = null)
1112
: base(token, processor ?? new LocksOutputProcessor())
1213
{
13-
args = "lfs locks --json";
14+
Name = TaskName;
15+
args = "locks --json";
1416
if (local)
1517
{
1618
args += " --local";
1719
}
18-
Name = args;
1920
}
2021

2122
public override string ProcessArguments => args;

src/GitHub.Api/Git/Tasks/GitLockTask.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public GitLockTask(string path,
1414
{
1515
Name = TaskName;
1616
Guard.ArgumentNotNullOrWhiteSpace(path, "path");
17-
arguments = String.Format("lfs lock \"{0}\"", path);
17+
arguments = String.Format("lock \"{0}\"", path);
1818
}
1919

2020
public override string ProcessArguments => arguments;

0 commit comments

Comments
 (0)