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

Commit a529043

Browse files
committed
Run all of discard on a thread
1 parent 3c1e833 commit a529043

File tree

1 file changed

+29
-39
lines changed

1 file changed

+29
-39
lines changed

src/GitHub.Api/Git/RepositoryManager.cs

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -301,51 +301,41 @@ public ITask DiscardChanges(GitStatusEntry[] gitStatusEntries)
301301
{
302302
Guard.ArgumentNotNullOrEmpty(gitStatusEntries, "gitStatusEntries");
303303

304-
var itemsToDelete = new List<string>();
305-
var itemsToRevert = new List<string>();
306-
307-
foreach (var gitStatusEntry in gitStatusEntries)
308-
{
309-
if (gitStatusEntry.status == GitFileStatus.Added || gitStatusEntry.status == GitFileStatus.Untracked)
310-
{
311-
itemsToDelete.Add(gitStatusEntry.path);
312-
}
313-
else
304+
ActionTask<GitStatusEntry[]> task = null;
305+
task = new ActionTask<GitStatusEntry[]>(token, (_, entries) =>
314306
{
315-
itemsToRevert.Add(gitStatusEntry.path);
316-
}
317-
}
307+
var itemsToDelete = new List<string>();
308+
var itemsToRevert = new List<string>();
318309

319-
ActionTask deleteItemsTask = null;
320-
if (itemsToDelete.Any())
321-
{
322-
deleteItemsTask = new ActionTask(CancellationToken.None, () => {
323-
foreach (var itemToDelete in itemsToDelete)
310+
foreach (var gitStatusEntry in gitStatusEntries)
324311
{
325-
fileSystem.FileDelete(itemToDelete);
312+
if (gitStatusEntry.status == GitFileStatus.Added || gitStatusEntry.status == GitFileStatus.Untracked)
313+
{
314+
itemsToDelete.Add(gitStatusEntry.path);
315+
}
316+
else
317+
{
318+
itemsToRevert.Add(gitStatusEntry.path);
319+
}
326320
}
327-
});
328-
}
329321

330-
ITask<string> gitDiscardTask = null;
331-
if (itemsToRevert.Any())
332-
{
333-
gitDiscardTask = GitClient.Discard(itemsToRevert);
334-
}
322+
if (itemsToDelete.Any())
323+
{
324+
foreach (var itemToDelete in itemsToDelete)
325+
{
326+
fileSystem.FileDelete(itemToDelete);
327+
}
328+
}
329+
330+
ITask<string> gitDiscardTask = null;
331+
if (itemsToRevert.Any())
332+
{
333+
gitDiscardTask = GitClient.Discard(itemsToRevert);
334+
task.Then(gitDiscardTask);
335+
}
336+
}
337+
, () => gitStatusEntries);
335338

336-
ITask task;
337-
if (deleteItemsTask != null && gitDiscardTask != null)
338-
{
339-
task = deleteItemsTask.Then(gitDiscardTask);
340-
}
341-
else if (deleteItemsTask != null)
342-
{
343-
task = deleteItemsTask;
344-
}
345-
else //if (gitDiscardTask != null)
346-
{
347-
task = gitDiscardTask;
348-
}
349339

350340
return HookupHandlers(task, true, true);
351341
}

0 commit comments

Comments
 (0)