protected override bool Execute(IIntegrationResult result) { string repository = result.GetSourceData("$TqGitCI_repository"); string gitDirectory = result.GetSourceData("$TqGitCI_gitDirectory"); string branch = result.GetSourceData("$TqGitCI_branch"); string startBranch = result.GetSourceData("$TqGitCI_startBranch"); string projectName = result.GetSourceData("$TqGitCI_projectName"); string gitUserId = result.GetParameters("$TqGitCI_gitUserId"); string gitUserPassword = result.GetParameters("$TqGitCI_gitUserPassword"); git = new GitUtil(projectName, gitDirectory, repository, gitUserId, gitUserPassword); // Branch git.Checkout(result, branch); var diffBranchAndStartBranch = git.GetDiffList(result, startBranch); if (diffBranchAndStartBranch.Count > 0) { var mergeResult = git.Merge(result, startBranch); result.SetSourceData("$TqGitCI_mergeResult", mergeResult.Status.ToString()); result.SetParameters("$TqGitCI_mergeResult", mergeResult.Status.ToString()); if (mergeResult.Status == MergeStatus.Conflicts) { var conflictsList = git.GetConflictsList(result); result.SetSourceData("$TqGitCI_mergeExceptionMessage", $"{projectName} Conflicts({conflictsList.Count}) {branch} <- {startBranch}"); result.SetParameters("$TqGitCI_mergeExceptionMessage", $"{projectName} Conflicts({conflictsList.Count}) {branch} <- {startBranch}"); return(false); } } return(true); }
public override Modification[] GetModifications(IIntegrationResult from, IIntegrationResult to) { Dictionary <string, string> dictionary = NameValuePair.ToDictionary(from.SourceControlData); IList <Modification> changeList = new List <Modification>(); InitProcessData(to); InitGitRepository(to); git.Reset(to, Branch); git.Reset(to, StartBranch); git.FetchOrigin(to); // StartBranch git.Checkout(to, StartBranch); var diffOriginStartBranch = git.GetDiffList(to, $"origin/{StartBranch}"); var startBranchPullResult = git.Pull(to); foreach (var item in startBranchPullResult.Item2) { changeList.Add(item); } // Branch git.Checkout(to, Branch); var diffOriginBranch = git.GetDiffList(to, $"origin/{Branch}"); var branchPullResult = git.Pull(to); foreach (var item in branchPullResult.Item2) { changeList.Add(item); } if (changeList.Count == 0 && from.LastBuildStatus != IntegrationStatus.Success) { foreach (var change in from.Modifications) { changeList.Add(change); } } if (isFirstRun || from.LastBuildStatus != IntegrationStatus.Success) { if (changeList.Count == 0) { changeList.Add(new Modification { ChangeNumber = "Initialize", Comment = "Initialize", FileName = "", FolderName = "", ModifiedTime = DateTime.MinValue, EmailAddress = "Initialize", UserName = "******", Type = "Unmodified" }); } } to.SourceControlData.Clear(); NameValuePair.Copy(dictionary, to.SourceControlData); to.SetSourceData("$TqGitCI_repository", gitUrl); to.SetSourceData("$TqGitCI_gitDirectory", gitDirectory); to.SetSourceData("$TqGitCI_branch", Branch); to.SetSourceData("$TqGitCI_startBranch", StartBranch); to.SetSourceData("$TqGitCI_projectName", projectName); to.SetSourceData("$TqGitCI_hasDiffOrigin1", (diffOriginBranch.Count > 0).ToString()); to.SetSourceData("$TqGitCI_pullResult1", branchPullResult.Item1.Status.ToString()); to.SetSourceData("$TqGitCI_lastCommitter1", branchPullResult.Item2.LastOrDefault()?.UserName ?? string.Empty); to.SetSourceData("$TqGitCI_hasDiffOrigin2", (diffOriginStartBranch.Count > 0).ToString()); to.SetSourceData("$TqGitCI_pullResult2", startBranchPullResult.Item1.Status.ToString()); to.SetSourceData("$TqGitCI_lastCommitter2", startBranchPullResult.Item2.LastOrDefault()?.UserName ?? string.Empty); to.SetParameters("$TqGitCI_gitUserId", GitUserId); to.SetParameters("$TqGitCI_gitUserPassword", GitUserPassword); return(changeList.ToArray()); }