private void SetStatus(MergeStatus status, bool matches)
 {
     if (matches)
     {
         _model.Status = status;
     }
 }
示例#2
0
		public ColumnMergeItem(IColumInfoModel leftColumn, IColumInfoModel rightColumn, MergeStatus mergeStatus)
		{
			LeftColumn = leftColumn;
			RightColumn = rightColumn;
			MergeStatus = mergeStatus;
			ColumnMerges = new ThreadSaveObservableCollection<PropertyMergeItem>();
		}
示例#3
0
 public PropertyMergeItem(string name, object valueLeft, object valueRight, MergeStatus mergeStatus)
 {
     Name        = name;
     ValueLeft   = valueLeft;
     ValueRight  = valueRight;
     MergeStatus = mergeStatus;
 }
示例#4
0
 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()));
            }
        }
示例#6
0
		public PropertyMergeItem(string name, object valueLeft, object valueRight, MergeStatus mergeStatus)
		{
			Name = name;
			ValueLeft = valueLeft;
			ValueRight = valueRight;
			MergeStatus = mergeStatus;
		}
示例#7
0
        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();
        }
示例#8
0
        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());
            }
        }
示例#9
0
        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()));
            }
        }
示例#10
0
        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);
            }
        }
示例#11
0
        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);
            }
        }
示例#12
0
        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());
            }
        }
示例#13
0
        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);
            }
        }
示例#14
0
 public MergeResult(MergeStatus s)
 {
     status = s;
 }
示例#15
0
        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());
            }
        }
示例#16
0
        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();
        }
示例#17
0
        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);
            }
        }
示例#18
0
        /// <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)
            });
        }
示例#19
0
 internal MergeResult(MergeStatus status, Commit commit = null)
 {
     this.Status = status;
     this.Commit = commit;
 }
示例#20
0
        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());
            }
        }
示例#21
0
        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);
        }
示例#22
0
 public MergeResult(MergeStatus s)
 {
     status = s;
 }
示例#23
0
 internal MergeResult(MergeStatus status, Commit commit = null)
 {
     this.Status = status;
     this.Commit = commit;
 }