From 564c0e0babba3e89c0f98a3d03d115011f784c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Tue, 14 Jan 2020 08:14:02 +0100 Subject: [PATCH] Fixes VSTS Bug 1027417: [FATAL] SigTerm signal in MonoDevelop.VersionControl.Git.dll!MonoDevelop.VersionControl.Git.TaskFailureExtensions::RunWaitAndCapture+0 https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1027417 Not connected to the original bug. --- ...p.VersionControl.Git.StashManagerDialog.cs | 1 - .../Commands.cs | 11 ++++- .../GitService.cs | 6 --- .../StashManagerDialog.cs | 44 +++++++++++-------- 4 files changed, 34 insertions(+), 28 deletions(-) diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Gui/MonoDevelop.VersionControl.Git.StashManagerDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Gui/MonoDevelop.VersionControl.Git.StashManagerDialog.cs index d9ae5803056..72faad268df 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Gui/MonoDevelop.VersionControl.Git.StashManagerDialog.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Gui/MonoDevelop.VersionControl.Git.StashManagerDialog.cs @@ -131,7 +131,6 @@ protected virtual void Build () } this.DefaultWidth = 575; this.DefaultHeight = 367; - this.Show (); this.buttonApplyRemove.Clicked += new global::System.EventHandler (this.OnButtonApplyRemoveClicked); this.buttonApply.Clicked += new global::System.EventHandler (this.OnButtonApplyClicked); this.buttonBranch.Clicked += new global::System.EventHandler (this.OnButtonBranchClicked); diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/Commands.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/Commands.cs index 347f442eb88..68a3c3dce17 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/Commands.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/Commands.cs @@ -225,9 +225,16 @@ protected override async Task UpdateAsync (CommandInfo info, CancellationToken c class ManageStashesHandler: GitCommandHandler { - protected override void Run () + protected override async void Run () { - GitService.ShowStashManager (Repository); + try { + var dlg = new StashManagerDialog (); + await dlg.InitializeAsync (Repository); + MessageService.ShowCustomDialog (dlg); + dlg.Dispose (); + } catch (Exception e) { + LoggingService.LogInternalError (e); + } } } } diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs index 491694ae2ef..d060a6dcea1 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs @@ -122,12 +122,6 @@ public static void ShowMergeDialog (GitRepository repo, bool rebasing) } } - public static void ShowStashManager (GitRepository repo) - { - using (var dlg = new StashManagerDialog (repo)) - MessageService.ShowCustomDialog (dlg); - } - public static async Task SwitchToBranchAsync (GitRepository repo, string branch) { var monitor = new MessageDialogProgressMonitor (true, false, false, true); diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/StashManagerDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/StashManagerDialog.cs index 58fc112a1fe..053fdef74b7 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/StashManagerDialog.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/StashManagerDialog.cs @@ -29,38 +29,44 @@ using MonoDevelop.Ide; using LibGit2Sharp; using System.Threading.Tasks; +using System.Threading; namespace MonoDevelop.VersionControl.Git { partial class StashManagerDialog : Gtk.Dialog { - readonly GitRepository repository; - readonly ListStore store; - readonly StashCollection stashes; + GitRepository repository; + ListStore store; + StashCollection stashes; - public StashManagerDialog (GitRepository repo) + public StashManagerDialog () { this.Build (); this.UseNativeContextMenus (); - repository = repo; - - stashes = repo.GetStashes (); + } - store = new ListStore (typeof(Stash), typeof(string), typeof(string)); - list.Model = store; - list.SearchColumn = -1; // disable the interactive search + public async Task InitializeAsync(GitRepository repo, CancellationToken cancellationToken = default) + { + repository = repo; + stashes = await repo.GetStashesAsync (cancellationToken); - list.AppendColumn (GettextCatalog.GetString ("Date/Time"), new CellRendererText (), "text", 1); - list.AppendColumn (GettextCatalog.GetString ("Comment"), new CellRendererText (), "text", 2); - Fill (); - TreeIter it; - if (store.GetIterFirst (out it)) - list.Selection.SelectIter (it); - UpdateButtons (); + await Runtime.RunInMainThread (delegate { + store = new ListStore (typeof (Stash), typeof (string), typeof (string)); + list.Model = store; + list.SearchColumn = -1; // disable the interactive search - list.Selection.Changed += delegate { + list.AppendColumn (GettextCatalog.GetString ("Date/Time"), new CellRendererText (), "text", 1); + list.AppendColumn (GettextCatalog.GetString ("Comment"), new CellRendererText (), "text", 2); + Fill (); + TreeIter it; + if (store.GetIterFirst (out it)) + list.Selection.SelectIter (it); UpdateButtons (); - }; + + list.Selection.Changed += delegate { + UpdateButtons (); + }; + }); } void Fill ()