private void SetStatus(MergeStatus status, bool matches) { if (matches) { _model.Status = status; } }
public ColumnMergeItem(IColumInfoModel leftColumn, IColumInfoModel rightColumn, MergeStatus mergeStatus) { LeftColumn = leftColumn; RightColumn = rightColumn; MergeStatus = mergeStatus; ColumnMerges = new ThreadSaveObservableCollection<PropertyMergeItem>(); }
public PropertyMergeItem(string name, object valueLeft, object valueRight, MergeStatus mergeStatus) { Name = name; ValueLeft = valueLeft; ValueRight = valueRight; MergeStatus = mergeStatus; }
public ColumnMergeItem(IColumInfoModel leftColumn, IColumInfoModel rightColumn, MergeStatus mergeStatus) { LeftColumn = leftColumn; RightColumn = rightColumn; MergeStatus = mergeStatus; ColumnMerges = new ThreadSaveObservableCollection <PropertyMergeItem>(); }
private void updateMergeStatus(MergeRequest mergeRequest) { MergeStatus prevStatus = _mergeStatus; if (mergeRequest.Merge_Status == null) { _mergeStatus = MergeStatus.NotAvailable; } else { if (mergeRequest.Merge_Status == "can_be_merged") { _mergeStatus = MergeStatus.CanBeMerged; } else if (mergeRequest.Merge_Status == "cannot_be_merged") { _mergeStatus = MergeStatus.CannotBeMerged; } else if (mergeRequest.Merge_Status == "unchecked") { _mergeStatus = MergeStatus.Unchecked; } else { Debug.Assert(false); // unknown Merge_Status _mergeStatus = MergeStatus.NotAvailable; } } if (prevStatus != _mergeStatus) { traceInformation(String.Format("Changed _mergeStatus to {0}", _mergeStatus.ToString())); } }
internal void clonePullBarebones() { mainForm.progressSpinner1.Value = 60; mainForm.progressSpinner1.Visible = true; if (!Directory.Exists(barebonesPath)) { mainForm.mainFormToolTip.SetToolTip(mainForm.progressSpinner1, "Cloning Barebones..."); } else { mainForm.mainFormToolTip.SetToolTip(mainForm.progressSpinner1, "Pulling Barebones..."); } var barebonesCloneWorker = new BackgroundWorker(); barebonesCloneWorker.DoWork += (s, e) => { if (!Directory.Exists(barebonesPath)) { try { string gitPath = Repository.Clone("https://github.com/bmddota/barebones", barebonesPath); Console.WriteLine("repo path:" + gitPath); } catch (Exception ex) { } return; } // pull from the repo using (var repo = new Repository(barebonesPath)) { try { //var remote = repo.Network.Remotes["origin"]; MergeResult mr = repo.Network.Pull(new Signature("myname", "*****@*****.**", new DateTimeOffset()), new PullOptions()); MergeStatus ms = mr.Status; Console.WriteLine("MergeStatus: " + ms.ToString()); } catch (Exception ex) { } } }; barebonesCloneWorker.RunWorkerCompleted += (s, e) => { //mainForm.text_notification("", MetroColorStyle.Blue, 500); mainForm.mainFormToolTip.SetToolTip(mainForm.progressSpinner1, ""); mainForm.progressSpinner1.Visible = false; if (mainForm.currAddon != null && mainForm.currAddon.barebonesLibUpdates) { mainForm.currAddon.checkForDefaultLibs(); foreach (var lib in mainForm.currAddon.libraries) { lib.Value.checkForUpdates(); } } }; barebonesCloneWorker.RunWorkerAsync(); }
public void CanMergeBranch(string branchName, FastForwardStrategy strategy, MergeStatus expectedMergeStatus) { string path = CloneMergeTestRepo(); using (var repo = new Repository(path)) { Branch branch = repo.Branches[branchName]; MergeResult result = repo.Merge(branch, Constants.Signature, new MergeOptions() { FastForwardStrategy = strategy }); Assert.Equal(expectedMergeStatus, result.Status); Assert.False(repo.Index.RetrieveStatus().Any()); } }
private void updateMergeStatus(MergeRequest mergeRequest) { MergeStatus prevStatus = _mergeStatus; if (mergeRequest.Merge_Status == null) { _mergeStatus = MergeStatus.NotAvailable; } else { _mergeStatus = mergeRequest.Merge_Status == "can_be_merged" ? MergeStatus.CanBeMerged : MergeStatus.CannotBeMerged; } if (prevStatus != _mergeStatus) { traceInformation(String.Format("Changed _mergeStatus to {0}", _mergeStatus.ToString())); } }
public void CanFastForwardCommit(bool fromDetachedHead, FastForwardStrategy fastForwardStrategy, string expectedCommitId, MergeStatus expectedMergeStatus) { string path = CloneMergeTestRepo(); using (var repo = new Repository(path)) { if(fromDetachedHead) { repo.Checkout(repo.Head.Tip.Id.Sha); } Commit commitToMerge = repo.Branches["fast_forward"].Tip; MergeResult result = repo.Merge(commitToMerge, Constants.Signature, new MergeOptions() { FastForwardStrategy = fastForwardStrategy }); Assert.Equal(expectedMergeStatus, result.Status); Assert.Equal(expectedCommitId, result.Commit.Id.Sha); Assert.False(repo.Index.RetrieveStatus().Any()); Assert.Equal(fromDetachedHead, repo.Info.IsHeadDetached); } }
public void CanNonFastForwardMergeCommit(bool fromDetachedHead, FastForwardStrategy fastForwardStrategy, MergeStatus expectedMergeStatus) { string path = CloneMergeTestRepo(); using (var repo = new Repository(path)) { if (fromDetachedHead) { repo.Checkout(repo.Head.Tip.Id.Sha); } Commit commitToMerge = repo.Branches["normal_merge"].Tip; MergeResult result = repo.Merge(commitToMerge, Constants.Signature, new MergeOptions() { FastForwardStrategy = fastForwardStrategy }); Assert.Equal(expectedMergeStatus, result.Status); Assert.False(repo.Index.RetrieveStatus().Any()); Assert.Equal(fromDetachedHead, repo.Info.IsHeadDetached); } }
public void CanMergeCommittish(string committish, FastForwardStrategy strategy, MergeStatus expectedMergeStatus) { string path = CloneMergeTestRepo(); using (var repo = new Repository(path)) { MergeResult result = repo.Merge(committish, Constants.Signature, new MergeOptions() { FastForwardStrategy = strategy }); Assert.Equal(expectedMergeStatus, result.Status); Assert.False(repo.Index.RetrieveStatus().Any()); } }
public void CanNonFastForwardMergeCommit(bool fromDetachedHead, FastForwardStrategy fastForwardStrategy, MergeStatus expectedMergeStatus) { string path = SandboxMergeTestRepo(); using (var repo = new Repository(path)) { if (fromDetachedHead) { Commands.Checkout(repo, repo.Head.Tip.Id.Sha); } Commit commitToMerge = repo.Branches["normal_merge"].Tip; MergeResult result = repo.Merge(commitToMerge, Constants.Signature, new MergeOptions() { FastForwardStrategy = fastForwardStrategy }); Assert.Equal(expectedMergeStatus, result.Status); Assert.False(repo.RetrieveStatus().Any()); Assert.Equal(fromDetachedHead, repo.Info.IsHeadDetached); } }
public MergeResult(MergeStatus s) { status = s; }
public void CanMergeCommittish(string committish, FastForwardStrategy strategy, MergeStatus expectedMergeStatus) { string path = SandboxMergeTestRepo(); using (var repo = new Repository(path)) { MergeResult result = repo.Merge(committish, Constants.Signature, new MergeOptions() { FastForwardStrategy = strategy }); Assert.Equal(expectedMergeStatus, result.Status); Assert.False(repo.RetrieveStatus().Any()); } }
public SpellLibraryForm(MainForm mainForm) { this.mainForm = mainForm; npcPath = Path.Combine(spellLibPath, "game", "scripts", "npc"); luaHeroesPath = Path.Combine(spellLibPath, "game", "scripts", "vscripts", "heroes"); luaItemsPath = Path.Combine(spellLibPath, "game", "scripts", "vscripts", "items"); InitializeComponent(); notificationLabel.Text = ""; textBox1.KeyDown += (s, e) => { if (e.Control && (e.KeyCode == Keys.A)) { textBox1.SelectAll(); } }; if (!Directory.Exists(spellLibPath)) { DialogResult dr = MetroMessageBox.Show(mainForm, strings.SpellLibWillNowBeClonedMsg + " " + spellLibPath, strings.SpellLibNotFoundCaption, MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (dr != DialogResult.OK) { return; } } // user wants to continue, clone if necessary, and pull mainForm.spellLibraryBtn.Enabled = false; mainForm.progressSpinner1.Value = 60; mainForm.progressSpinner1.Visible = true; if (!Directory.Exists(spellLibPath)) { mainForm.text_notification("Cloning SpellLibrary...", MetroColorStyle.Blue, 999999); } else { mainForm.text_notification("Pulling SpellLibrary...", MetroColorStyle.Blue, 999999); } var gitWorker = new BackgroundWorker(); gitWorker.RunWorkerCompleted += (s, e) => { mainForm.text_notification("", MetroColorStyle.Blue, 500); mainForm.progressSpinner1.Visible = false; mainForm.spellLibraryBtn.Enabled = true; initTreeView(); }; gitWorker.DoWork += (s, e) => { if (!Directory.Exists(spellLibPath)) { try { string gitPath = Repository.Clone("https://github.com/Pizzalol/SpellLibrary", spellLibPath); Console.WriteLine("repo path:" + gitPath); } catch (Exception ex) { } return; } // pull from the repo using (var repo = new Repository(spellLibPath)) { try { //var remote = repo.Network.Remotes["origin"]; MergeResult mr = repo.Network.Pull(new Signature("myname", "*****@*****.**", new DateTimeOffset()), new PullOptions()); MergeStatus ms = mr.Status; } catch (Exception ex) {} } }; gitWorker.RunWorkerAsync(); }
public void CanFastForwardCommit(bool fromDetachedHead, FastForwardStrategy fastForwardStrategy, string expectedCommitId, MergeStatus expectedMergeStatus) { string path = SandboxMergeTestRepo(); using (var repo = new Repository(path)) { if (fromDetachedHead) { Commands.Checkout(repo, repo.Head.Tip.Id.Sha); } Commit commitToMerge = repo.Branches["fast_forward"].Tip; MergeResult result = repo.Merge(commitToMerge, Constants.Signature, new MergeOptions() { FastForwardStrategy = fastForwardStrategy }); Assert.Equal(expectedMergeStatus, result.Status); Assert.Equal(expectedCommitId, result.Commit.Id.Sha); Assert.False(repo.RetrieveStatus().Any()); Assert.Equal(fromDetachedHead, repo.Info.IsHeadDetached); } }
/// <summary> /// merges a changeset for the specified environment /// </summary> /// <param name="changeset"></param> /// <param name="environment"></param> /// <returns></returns> public MergeStatus MergeChangeset(Changeset changeset, MergeEnvironment environment) { var tfs = TfsTeamDataAccess.GetTfsTeamProjectCollection(); var versionControl = tfs.GetService <VersionControlServer>(); var workspace = versionControl.GetWorkspace(Workstation.Current.Name, tfs.AuthorizedIdentity.UniqueName); var tfsChangeset = versionControl.GetChangeset(changeset.Id); var statusList = new List <MergeStatus>(); tfsChangeset.Changes.ToList().ForEach(change => { var sourcePath = change.Item.ServerItem.Substring(0, change.Item.ServerItem.LastIndexOf("/", StringComparison.Ordinal)); sourcePath = !sourcePath.EndsWith("/") ? sourcePath + "/" : sourcePath; var mergeRelationship = GetMergeRelationship(changeset, environment); if (mergeRelationship == null) { statusList.Add(new MergeStatus { NumFailures = 1, Message = string.Format("There are no merge relationships configured for {0}", changeset.Branch.Name) }); return; } var targetPath = sourcePath.ToLower().Replace(string.Format("/{0}/", changeset.Branch.Name.ToLower()), string.Format("/{0}/", mergeRelationship.Target.Name)); if (string.Compare(sourcePath, targetPath, StringComparison.OrdinalIgnoreCase) == 0) // this happens with feature branches. They will get picked up on next "changeset". { return; } // Get Latest first string[] itemsSpec = { targetPath }; workspace.Get(itemsSpec, VersionSpec.Latest, RecursionType.Full, GetOptions.Overwrite); // Get ready to Merge. MergeStatus status; var verSpec = new ChangesetVersionSpec(tfsChangeset.ChangesetId); try { status = MapMergeStatus(workspace.Merge(sourcePath, targetPath, verSpec, verSpec, LockLevel.None, RecursionType.Full, MergeOptions.None)); } catch (Exception e) { status = new MergeStatus { NumFailures = 1, Message = e.Message }; } var conflicts = workspace.QueryConflicts(new[] { targetPath }, true); conflicts.ToList().ForEach(conflict => { workspace.MergeContent(conflict, false); if (conflict.ContentMergeSummary.TotalConflicting > 0) { return; } // Conflict was resolved. Does not require a human! conflict.Resolution = Resolution.AcceptMerge; // If the conflict is successfully resolved, the IsResolved property is set to true. // If resolving this conflict caused other conflicts to be deleted besides the current conflict, the list of other deleted conflicts appears in resolvedConflicts. Conflict[] resolvedConflicts; workspace.ResolveConflict(conflict, out resolvedConflicts); if (!conflict.IsResolved) { return; } var totalResolved = resolvedConflicts.Count(); status.NumResolvedConflicts = status.NumResolvedConflicts + 1 + totalResolved; status.NumConflicts = status.NumConflicts - 1 - totalResolved; }); statusList.Add(status); }); return(new MergeStatus // create summary of all merges for this changeset { HaveResolvableWarnings = statusList.Any(s => s.HaveResolvableWarnings), NoActionNeeded = statusList.All(s => s.NoActionNeeded), NumBytes = statusList.Sum(s => s.NumBytes), NumConflicts = statusList.Sum(s => s.NumConflicts), NumFailures = statusList.Sum(s => s.NumFailures), NumFiles = statusList.Sum(s => s.NumFiles), NumOperations = statusList.Sum(s => s.NumOperations), NumResolvedConflicts = statusList.Sum(s => s.NumResolvedConflicts), NumUpdated = statusList.Sum(s => s.NumUpdated), NumWarnings = statusList.Sum(s => s.NumWarnings) }); }
internal MergeResult(MergeStatus status, Commit commit = null) { this.Status = status; this.Commit = commit; }
public void CanMergeBranch(string branchName, FastForwardStrategy strategy, MergeStatus expectedMergeStatus) { string path = SandboxMergeTestRepo(); using (var repo = new Repository(path)) { Branch branch = repo. Branches[branchName]; MergeResult result = repo.Merge(branch, Constants.Signature, new MergeOptions() { FastForwardStrategy = strategy }); Assert.Equal(expectedMergeStatus, result.Status); Assert.False(repo.RetrieveStatus().Any()); } }
public XElement MergeReplace(XElement newBody, Func <String, String> fieldValueFunc) { // Get all Mail Merge Fields IList <XElement> mailMergeFields = (from el in newBody.Descendants() where (el.Name == (XMLNS + "r") || el.Attribute(XMLNS + "instr") != null) select el).ToList(); MergeStatus status = MergeStatus.None; XElement status0 = null, status1 = null, status2 = null, status3 = null, status4 = null; string fieldName = ""; // Replace all merge fields with Data foreach (XElement field in mailMergeFields) { if ((status == MergeStatus.None) && (field.Element(XMLNS + "fldChar") != null) && (field.Element(XMLNS + "fldChar").Attribute(XMLNS + "fldCharType") != null) && (field.Element(XMLNS + "fldChar").Attribute(XMLNS + "fldCharType").Value == "begin")) { status = MergeStatus.HaveBegin; status0 = field; } else if ((status == MergeStatus.None) && (field.Attribute(XMLNS + "instr") != null)) { status = MergeStatus.HaveOld; status0 = field; fieldName = GetFieldData(field.Attribute(XMLNS + "instr").Value.Replace("MERGEFIELD", string.Empty).Trim()); } else if ((status == MergeStatus.HaveBegin) && (field.Element(XMLNS + "instrText") != null) && (field.Element(XMLNS + "instrText").Value != null) && (field.Element(XMLNS + "instrText").Value.Trim().Length > 10) && (field.Element(XMLNS + "instrText").Value.Trim().Substring(0, 10) == "MERGEFIELD")) { status = MergeStatus.HaveName; status1 = field; fieldName = GetFieldData(field.Element(XMLNS + "instrText").Value.Replace("MERGEFIELD", string.Empty).Trim()); } else if ((status == MergeStatus.HaveName) && (field.Element(XMLNS + "fldChar") != null) && (field.Element(XMLNS + "fldChar").Value != null) && (field.Element(XMLNS + "fldChar").Attribute(XMLNS + "fldCharType").Value != "") && (field.Element(XMLNS + "fldChar").Attribute(XMLNS + "fldCharType").Value.Trim() == "separate")) { status = MergeStatus.HaveSeperator; status2 = field; } else if ((status == MergeStatus.HaveSeperator) && (field.Element(XMLNS + "rPr") != null) && (field.Element(XMLNS + "rPr").NextNode != null) && (((field.Element(XMLNS + "rPr").NextNode as XElement).Value != null))) { status = MergeStatus.HaveData; status3 = field; } else if ((status == MergeStatus.HaveData) && (field.Element(XMLNS + "fldChar") == null) && (field.Element(XMLNS + "rPr") != null) && (status3 != null)) { status3.Element(XMLNS + "rPr").Add(field.Element(XMLNS + "rPr").Nodes()); field.Remove(); } else if ((status == MergeStatus.HaveData) && (field.Element(XMLNS + "fldChar") != null) && (field.Element(XMLNS + "fldChar").Attribute(XMLNS + "fldCharType") != null) && (field.Element(XMLNS + "fldChar").Attribute(XMLNS + "fldCharType").Value == "end")) { status = MergeStatus.HaveNew; status4 = field; } else { status = MergeStatus.None; status0 = null; status1 = null; status2 = null; status3 = null; status4 = null; fieldName = ""; } if (status == MergeStatus.HaveOld || status == MergeStatus.HaveNew) { var value = fieldValueFunc(fieldName); if (value != null) { XElement newElement = null, newElement2 = null; if (status == MergeStatus.HaveOld) { newElement = field.Descendants(XMLNS + "r").First(); if (value.Contains(NewLineSequence)) { var bits = value.Split(new String[] { NewLineSequence }, StringSplitOptions.None); foreach (String bit in bits) { newElement.AddBeforeSelf(new XElement(XMLNS + "t", bit)); newElement.AddBeforeSelf(new XElement(XMLNS + "br", bit)); } } else { newElement.Descendants(XMLNS + "t").First().Value = value; } } else { newElement = new XElement(XMLNS + "fldSimple"); newElement.SetAttributeValue(XMLNS + "instr", "MERGEFIELD " + fieldName); if (value.Contains(NewLineSequence)) { var bits = value.Split(new String[] { NewLineSequence }, StringSplitOptions.None); foreach (String bit in bits) { newElement.Add(new XElement(XMLNS + "t", bit)); newElement.Add(new XElement(XMLNS + "br", bit)); } } else { newElement2 = new XElement(XMLNS + "t", value); newElement.Add(newElement2); } } if (status == MergeStatus.HaveOld) { status0.ReplaceWith(newElement); } else { status3.Element(XMLNS + "rPr").NextNode.ReplaceWith(newElement); status0.Remove(); status1.Remove(); status2.Remove(); status4.Remove(); } } status = MergeStatus.None; } } return(newBody); }