From 96ad0afdc5406a7d0a388e5ad38fa43b1f6adcc6 Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Thu, 30 Nov 2017 10:45:31 -0500 Subject: [PATCH] Various PR merging improvements --- TGS.ControlPanel/ControlPanel/ServerPage.cs | 11 ++++++++--- TGS.ControlPanel/TestMergeManager.cs | 8 ++++++-- TGS.Server/Instance/Repository.cs | 19 +++++++++++-------- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/TGS.ControlPanel/ControlPanel/ServerPage.cs b/TGS.ControlPanel/ControlPanel/ServerPage.cs index 55ae416434..04c8821fc4 100644 --- a/TGS.ControlPanel/ControlPanel/ServerPage.cs +++ b/TGS.ControlPanel/ControlPanel/ServerPage.cs @@ -2,6 +2,7 @@ using Octokit; using System; using System.Collections.Generic; using System.ComponentModel; +using System.Linq; using System.Reflection; using System.Threading.Tasks; using System.Windows.Forms; @@ -365,9 +366,13 @@ namespace TGS.ControlPanel var mergeResults = await Task.Factory.StartNew(() => repo.MergePullRequests(pulls, true)); var compileStartResult = await Task.Factory.StartNew(() => Interface.GetComponent().Compile(true)); - foreach (var I in mergeResults) - if (I != null) - MessageBox.Show(res, "Error Re-merging Pull Request"); + //Show any errors + for (var I = 0; I < mergeResults.Count(); ++I) + { + var err = mergeResults.ElementAt(I); + if (err != null) + MessageBox.Show(err, String.Format("Error re-merging PR #{0}", pulls[I].Number)); + } if (!compileStartResult) MessageBox.Show(res, "Error starting compile!"); diff --git a/TGS.ControlPanel/TestMergeManager.cs b/TGS.ControlPanel/TestMergeManager.cs index ea497fa5af..2a8814523a 100644 --- a/TGS.ControlPanel/TestMergeManager.cs +++ b/TGS.ControlPanel/TestMergeManager.cs @@ -283,8 +283,12 @@ namespace TGS.ControlPanel var errors = await Task.Factory.StartNew(() => repo.MergePullRequests(pulls, false)); //Show any errors - foreach (var I in errors) - MessageBox.Show(I); + for (var I = 0; I < errors.Count(); ++I) + { + var err = errors.ElementAt(I); + if (err != null) + MessageBox.Show(err, String.Format("Error merging PR #{0}", pulls[I].Number)); + } if (errors.Count() != 0) return; diff --git a/TGS.Server/Instance/Repository.cs b/TGS.Server/Instance/Repository.cs index 1903386e5c..2f68fa31eb 100644 --- a/TGS.Server/Instance/Repository.cs +++ b/TGS.Server/Instance/Repository.cs @@ -585,7 +585,7 @@ namespace TGS.Server { case MergeStatus.Conflicts: ResetNoLock(null); - SendMessage("REPO: Merge conflicted, aborted.", MessageType.DeveloperInfo); + SendMessage(String.Format("REPO: Merge of {0} conflicted, aborted.", committish), MessageType.DeveloperInfo); return "Merge conflict occurred."; case MergeStatus.UpToDate: return RepoErrorUpToDate; @@ -945,23 +945,26 @@ namespace TGS.Server var LocalBranchName = String.Format("pull/{0}/headrefs/heads/{1}", PRNumber, PRBranchName); Refspec.Add(String.Format("pull/{0}/head:{1}", PRNumber, PRBranchName)); var logMessage = ""; - - var branch = Repo.Branches[LocalBranchName]; - if (branch != null) - //Need to delete the branch first in case of rebase - Repo.Branches.Remove(branch); + + //Need to delete the branch first in case of rebase + Repo.Branches.Remove(LocalBranchName); + Repo.Branches.Remove(PRBranchName); Commands.Fetch(Repo, "origin", Refspec, GenerateFetchOptions(), logMessage); //shitty api has no failure state for this currentProgress = -1; - branch = Repo.Branches[LocalBranchName]; + var branch = Repo.Branches[LocalBranchName]; if (branch == null) { SendMessage(String.Format("REPO: PR {0}could not be fetched. Does it exist?", silent ? String.Format("#{0} ", PRNumber) : ""), MessageType.DeveloperInfo); return String.Format("PR #{0} could not be fetched. Does it exist?", PRNumber); } + //give it a better name + branch = Repo.CreateBranch(PRBranchName, branch.Tip); + Repo.Branches.Remove(LocalBranchName); + if (atSHA != null) { //find the commit @@ -983,7 +986,7 @@ namespace TGS.Server } //so we'll know if this fails - var Result = MergeBranch(atSHA ?? LocalBranchName, String.Format("[ci skip] Test merge commit for pull request #{0}{1}Server Instance: {2}", PRNumber, Environment.NewLine, Config.Name)); + var Result = MergeBranch(atSHA ?? branch.CanonicalName, String.Format("[ci skip] Test merge commit for pull request #{0}{1}Server Instance: {2}", PRNumber, Environment.NewLine, Config.Name)); if (Result == null) try