8000 Prevent Repository objects from being prematurely GCed by jcansdale · Pull Request #1337 · github/VisualStudio · GitHub
[go: up one dir, main page]

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

Prevent Repository objects from being prematurely GCed #1337

Merged
merged 11 commits into from
Nov 28, 2017
Merged
Prev Previous commit
Next Next commit
Don't dispose of Repository before it's used
  • Loading branch information
jcansdale committed Nov 24, 2017
commit 4db51b21487bc478039b2466675a0c72097fb8e7
13 changes: 8 additions & 5 deletions src/GitHub.App/Services/PullRequestService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,13 @@ public IObservable<IReadOnlyList<CommitMessage>> GetMessagesForUniqueCommits(
string compareBranch,
int maxCommits)
{
return Observable.Defer(() =>
return Observable.Defer(async () =>
{
// CommitMessage doesn't keep a reference to Repository
using (var repo = gitService.GetRepository(repository.LocalPath))
{
return gitClient.GetMessagesForUniqueCommits(repo, baseBranch, compareBranch, maxCommits).ToObservable();
var messages = await gitClient.GetMessagesForUniqueCommits(repo, baseBranch, compareBranch, maxCommits);
return Observable.Return(messages);
}
});
}
Expand Down Expand Up @@ -130,11 +131,12 @@ static bool IsFilthy(RepositoryStatus status)

public IObservable<Unit> Pull(ILocalRepositoryModel repository)
{
return Observable.Defer(() =>
return Observable.Defer(async () =>
{
using (var repo = gitService.GetRepository(repository.LocalPath))
{
return gitClient.Pull(repo).ToObservable();
await gitClient.Pull(repo);
return Observable.Return(Unit.Default);
}
});
}
Expand All @@ -147,7 +149,8 @@ public IObservable<Unit> Push(ILocalRepositoryModel repository)
{
var remoteName = repo.Head.RemoteName;
var remote = await gitClient.GetHttpRemote(repo, remoteName);
return gitClient.Push(repo, repo.Head.TrackedBranch.UpstreamBranchCanonicalName, remote.Name).ToObservable();
await gitClient.Push(repo, repo.Head.TrackedBranch.UpstreamBranchCanonicalName, remote.Name);
return Observable.Return(Unit.Default);
}
});
}
Expand Down
0