private System.Drawing.Rectangle _headerResize; // Cache desired size for commit header private void ReloadCommitInfo() { _RevisionHeader.BackColor = ColorHelper.MakeColorDarker(this.BackColor); showContainedInBranchesToolStripMenuItem.Checked = AppSettings.CommitInfoShowContainedInBranchesLocal; showContainedInBranchesRemoteToolStripMenuItem.Checked = AppSettings.CommitInfoShowContainedInBranchesRemote; showContainedInBranchesRemoteIfNoLocalToolStripMenuItem.Checked = AppSettings.CommitInfoShowContainedInBranchesRemoteIfNoLocal; showContainedInTagsToolStripMenuItem.Checked = AppSettings.CommitInfoShowContainedInTags; showMessagesOfAnnotatedTagsToolStripMenuItem.Checked = AppSettings.ShowAnnotatedTagsMessages; ResetTextAndImage(); if (string.IsNullOrEmpty(_revision.Guid)) { return; //is it regular case or should throw an exception } _RevisionHeader.SelectionTabs = GetRevisionHeaderTabStops(); _RevisionHeader.Text = string.Empty; _RevisionHeader.Refresh(); string error = ""; CommitData data = CommitData.CreateFromRevision(_revision); if (_revision.Body == null) { CommitData.UpdateCommitMessage(data, Module, _revision.Guid, ref error); _revision.Body = data.Body; } ThreadPool.QueueUserWorkItem(_ => loadLinksForRevision(_revision)); if (_sortedRefs == null) { ThreadPool.QueueUserWorkItem(_ => loadSortedRefs()); } data.ChildrenGuids = _children; CommitInformation commitInformation = CommitInformation.GetCommitInfo(data, _linkFactory, CommandClick != null, Module); _RevisionHeader.SetXHTMLText(commitInformation.Header); _RevisionHeader.Height = GetRevisionHeaderHeight(); _revisionInfo = commitInformation.Body; updateText(); LoadAuthorImage(data.Author ?? data.Committer); if (AppSettings.CommitInfoShowContainedInBranches) { ThreadPool.QueueUserWorkItem(_ => loadBranchInfo(_revision.Guid)); } if (AppSettings.ShowAnnotatedTagsMessages) { ThreadPool.QueueUserWorkItem(_ => loadAnnotatedTagInfo(_revision)); } if (AppSettings.CommitInfoShowContainedInTags) { ThreadPool.QueueUserWorkItem(_ => loadTagInfo(_revision.Guid)); } }
private void ReloadCommitInfo() { showContainedInBranchesToolStripMenuItem.Checked = Settings.CommitInfoShowContainedInBranchesLocal; showContainedInBranchesRemoteToolStripMenuItem.Checked = Settings.CommitInfoShowContainedInBranchesRemote; showContainedInBranchesRemoteIfNoLocalToolStripMenuItem.Checked = Settings.CommitInfoShowContainedInBranchesRemoteIfNoLocal; showContainedInTagsToolStripMenuItem.Checked = Settings.CommitInfoShowContainedInTags; ResetTextAndImage(); if (string.IsNullOrEmpty(_revision)) { return; } _RevisionHeader.Text = string.Empty; _RevisionHeader.Refresh(); CommitInformation commitInformation = CommitInformation.GetCommitInfo(_revision); _RevisionHeader.SetXHTMLText(commitInformation.Header); splitContainer1.SplitterDistance = _RevisionHeader.GetPreferredSize(new System.Drawing.Size(0, 0)).Height; _revisionInfo = commitInformation.Body; updateText(); LoadAuthorImage(); if (Settings.CommitInfoShowContainedInBranches) { ThreadPool.QueueUserWorkItem(_ => loadBranchInfo(_revision)); } if (Settings.CommitInfoShowContainedInTags) { ThreadPool.QueueUserWorkItem(_ => loadTagInfo(_revision)); } }
public void GetAllBranchesWhichContainGivenCommitTestReturnsEmptyList() { var actualResult = CommitInformation.GetAllBranchesWhichContainGivenCommit(new GitModule(""), "fakesha1", false, false); Assert.IsNotNull(actualResult); Assert.IsTrue(!actualResult.Any()); }
private string GetBranchesWhichContainsThisCommit(string revision, bool showBranchesAsLinks) { const string remotesPrefix = "remotes/"; // Include local branches if explicitly requested or when needed to decide whether to show remotes bool getLocal = Settings.CommitInfoShowContainedInBranchesLocal || Settings.CommitInfoShowContainedInBranchesRemoteIfNoLocal; // Include remote branches if requested bool getRemote = Settings.CommitInfoShowContainedInBranchesRemote || Settings.CommitInfoShowContainedInBranchesRemoteIfNoLocal; var branches = CommitInformation.GetAllBranchesWhichContainGivenCommit(Module, revision, getLocal, getRemote); var links = new List <string>(); bool allowLocal = Settings.CommitInfoShowContainedInBranchesLocal; bool allowRemote = getRemote; foreach (var branch in branches) { string noPrefixBranch = branch; bool branchIsLocal; if (getLocal && getRemote) { // "git branch -a" prefixes remote branches with "remotes/" // It is possible to create a local branch named "remotes/origin/something" // so this check is not 100% reliable. // This shouldn't be a big problem if we're only displaying information. branchIsLocal = !branch.StartsWith(remotesPrefix); if (!branchIsLocal) { noPrefixBranch = branch.Substring(remotesPrefix.Length); } } else { branchIsLocal = !getRemote; } if ((branchIsLocal && allowLocal) || (!branchIsLocal && allowRemote)) { string branchText; if (showBranchesAsLinks) { branchText = LinkFactory.CreateBranchLink(noPrefixBranch); } else { branchText = WebUtility.HtmlEncode(noPrefixBranch); } links.Add(branchText); } if (branchIsLocal && Settings.CommitInfoShowContainedInBranchesRemoteIfNoLocal) { allowRemote = false; } } if (links.Any()) { return(Environment.NewLine + WebUtility.HtmlEncode(containedInBranches.Text) + " " + links.Join(", ")); } return(Environment.NewLine + WebUtility.HtmlEncode(containedInNoBranch.Text)); }
private string GetBranchesWhichContainsThisCommit(string revision) { const string remotesPrefix = "remotes/"; // Include local branches if explicitly requested or when needed to decide whether to show remotes bool getLocal = Settings.CommitInfoShowContainedInBranchesLocal || Settings.CommitInfoShowContainedInBranchesRemoteIfNoLocal; // Include remote branches if requested bool getRemote = Settings.CommitInfoShowContainedInBranchesRemote || Settings.CommitInfoShowContainedInBranchesRemoteIfNoLocal; var branches = CommitInformation.GetAllBranchesWhichContainGivenCommit(revision, getLocal, getRemote); var branchString = ""; bool allowLocal = Settings.CommitInfoShowContainedInBranchesLocal; bool allowRemote = getRemote; foreach (var branch in branches) { string noPrefixBranch = branch; bool branchIsLocal; if (getLocal && getRemote) { // "git branch -a" prefixes remote branches with "remotes/" // It is possible to create a local branch named "remotes/origin/something" // so this check is not 100% reliable. // This shouldn't be a big problem if we're only displaying information. branchIsLocal = !branch.StartsWith(remotesPrefix); if (!branchIsLocal) { noPrefixBranch = branch.Substring(remotesPrefix.Length); } } else { branchIsLocal = !getRemote; } if ((branchIsLocal && allowLocal) || (!branchIsLocal && allowRemote)) { if (branchString != string.Empty) { branchString += ", "; } branchString += noPrefixBranch; } if (branchIsLocal && Settings.CommitInfoShowContainedInBranchesRemoteIfNoLocal) { allowRemote = false; } } if (branchString != string.Empty) { return(Environment.NewLine + HttpUtility.HtmlEncode(containedInBranches.Text + " " + branchString)); } return(Environment.NewLine + HttpUtility.HtmlEncode(containedInNoBranch.Text)); }
public void CanCreateCommitInformationFromFormatedData() { var commitGuid = Guid.NewGuid(); var treeGuid = Guid.NewGuid(); var parentGuid1 = Guid.NewGuid().ToString(); var parentGuid2 = Guid.NewGuid().ToString(); var authorTime = DateTime.UtcNow.AddDays(-3); var commitTime = DateTime.UtcNow.AddDays(-2); var authorUnixTime = (int)(authorTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds; var commitUnixTime = (int)(commitTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds; var revisionProvider = Substitute.For <IGitRevisionProvider>(); var parent1Rev = new GitRevision(aModule: null, guid: parentGuid1) { Subject = "Parent1" }; var parent2Rev = new GitRevision(aModule: null, guid: parentGuid2) { Subject = "Parent2" }; revisionProvider.GetRevision(parentGuid1, shortFormat: true).Returns(parent1Rev); revisionProvider.GetRevision(parentGuid2, shortFormat: true).Returns(parent2Rev); var rawData = commitGuid + "\n" + treeGuid + "\n" + parentGuid1 + " " + parentGuid2 + "\n" + "John Doe (Acme Inc) <*****@*****.**>\n" + authorUnixTime + "\n" + "Jane Doe (Acme Inc) <*****@*****.**>\n" + commitUnixTime + "\n" + "\n" + "\tI made a really neato change.\n\n" + "Notes (p4notes):\n" + "\tP4@547123"; var expectedHeader = "Author:\t\t<a href='mailto:[email protected]'>John Doe (Acme Inc) <[email protected]></a>" + Environment.NewLine + "Author date:\t3 days ago (" + LocalizationHelpers.GetFullDateString(authorTime) + ")" + Environment.NewLine + "Committer:\t<a href='mailto:[email protected]'>Jane Doe (Acme Inc) <[email protected]></a>" + Environment.NewLine + "Commit date:\t2 days ago (" + LocalizationHelpers.GetFullDateString(commitTime) + ")" + Environment.NewLine + "Commit hash:\t" + commitGuid + Environment.NewLine + "Parent(s):\t<a href='gitext://gotocommit/" + parentGuid1 + "'>" + parentGuid1.Substring(0, 10) + "</a> " + parent1Rev.Subject + Environment.NewLine + " \t\t<a href='gitext://gotocommit/" + parentGuid2 + "'>" + parentGuid2.Substring(0, 10) + "</a> " + parent2Rev.Subject; var expectedBody = "\nI made a really neato change." + Environment.NewLine + Environment.NewLine + "Notes (p4notes):" + Environment.NewLine + "\tP4@547123"; var commitData = CommitData.CreateFromFormatedData(rawData, new GitModule("")); var commitInformation = CommitInformation.GetCommitInfo(revisionProvider, commitData, true); Assert.AreEqual(expectedHeader, commitInformation.Header); Assert.AreEqual(expectedBody, commitInformation.Body); }
private IList <string> getContainsRevisionBranches() { if (_containsRevisionBranches == null) { _containsRevisionBranches = CommitInformation .GetAllBranchesWhichContainGivenCommit(Module, _containRevison, LocalBranch.Checked, !LocalBranch.Checked) .Where(a => !a.Equals("(no branch)", StringComparison.OrdinalIgnoreCase)).ToList(); } return(_containsRevisionBranches); }
private string GetTagsWhichContainsThisCommit(string revision, bool showBranchesAsLinks) { var tagString = CommitInformation .GetAllTagsWhichContainGivenCommit(Module, revision) .Select(s => showBranchesAsLinks ? LinkFactory.CreateTagLink(s) : WebUtility.HtmlEncode(s)).Join(", "); if (!String.IsNullOrEmpty(tagString)) { return(Environment.NewLine + WebUtility.HtmlEncode(containedInTags.Text) + " " + tagString); } return(Environment.NewLine + WebUtility.HtmlEncode(containedInNoTag.Text)); }
private void ReloadCommitInfo() { showContainedInBranchesToolStripMenuItem.Checked = Settings.CommitInfoShowContainedInBranchesLocal; showContainedInBranchesRemoteToolStripMenuItem.Checked = Settings.CommitInfoShowContainedInBranchesRemote; showContainedInBranchesRemoteIfNoLocalToolStripMenuItem.Checked = Settings.CommitInfoShowContainedInBranchesRemoteIfNoLocal; showContainedInTagsToolStripMenuItem.Checked = Settings.CommitInfoShowContainedInTags; ResetTextAndImage(); if (string.IsNullOrEmpty(_revisionGuid)) { return; //is it regular case or should throw an exception } _RevisionHeader.SelectionTabs = GetRevisionHeaderTabStops(); _RevisionHeader.Text = string.Empty; _RevisionHeader.Refresh(); string error = ""; CommitData data = null; if (_revision != null) { data = CommitData.CreateFromRevision(_revision); CommitData.UpdateCommitMessage(data, Module, _revisionGuid, ref error); } else { data = CommitData.GetCommitData(Module, _revisionGuid, ref error); } data.ChildrenGuids = _children; CommitInformation commitInformation = CommitInformation.GetCommitInfo(data); _RevisionHeader.SetXHTMLText(commitInformation.Header); _RevisionHeader.Height = _RevisionHeader.GetPreferredSize(new System.Drawing.Size(0, 0)).Height; _revisionInfo = commitInformation.Body; updateText(); LoadAuthorImage(data.Author ?? data.Committer); if (Settings.CommitInfoShowContainedInBranches) { ThreadPool.QueueUserWorkItem(_ => loadBranchInfo(_revisionGuid)); } if (Settings.CommitInfoShowContainedInTags) { ThreadPool.QueueUserWorkItem(_ => loadTagInfo(_revisionGuid)); } }
private string GetTagsWhichContainsThisCommit(string revision) { var tagString = ""; foreach (var tag in CommitInformation.GetAllTagsWhichContainGivenCommit(revision)) { if (tagString != string.Empty) { tagString += ", "; } tagString += tag; } if (tagString != string.Empty) { return(Environment.NewLine + HttpUtility.HtmlEncode(containedInTags.Text + " " + tagString)); } return(Environment.NewLine + HttpUtility.HtmlEncode(containedInNoTag.Text)); }
public void CanCreateCommitInformationFromFormatedData() { LinkFactory linkFactory = new LinkFactory(); var commitGuid = Guid.NewGuid(); var treeGuid = Guid.NewGuid(); var parentGuid1 = Guid.NewGuid().ToString(); var parentGuid2 = Guid.NewGuid().ToString(); var authorTime = DateTime.UtcNow.AddDays(-3); var commitTime = DateTime.UtcNow.AddDays(-2); var authorUnixTime = (int)(authorTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds; var commitUnixTime = (int)(commitTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds; var rawData = commitGuid + "\n" + treeGuid + "\n" + parentGuid1 + " " + parentGuid2 + "\n" + "John Doe (Acme Inc) <*****@*****.**>\n" + authorUnixTime + "\n" + "Jane Doe (Acme Inc) <*****@*****.**>\n" + commitUnixTime + "\n" + "\n" + "\tI made a really neato change.\n\n" + "Notes (p4notes):\n" + "\tP4@547123"; var expectedHeader = "Author: <a href='mailto:[email protected]'>John Doe (Acme Inc) <[email protected]></a>" + Environment.NewLine + "Author date: 3 days ago (" + LocalizationHelpers.GetFullDateString(authorTime) + ")" + Environment.NewLine + "Committer: <a href='mailto:[email protected]'>Jane Doe (Acme Inc) <[email protected]></a>" + Environment.NewLine + "Commit date: 2 days ago (" + LocalizationHelpers.GetFullDateString(commitTime) + ")" + Environment.NewLine + "Commit hash: " + commitGuid + Environment.NewLine + "Parent(s): <a href='gitext://gotocommit/" + parentGuid1 + "'>" + parentGuid1.Substring(0, 10) + "</a> <a href='gitext://gotocommit/" + parentGuid2 + "'>" + parentGuid2.Substring(0, 10) + "</a>"; var expectedBody = "\nI made a really neato change." + Environment.NewLine + Environment.NewLine + "Notes (p4notes):" + Environment.NewLine + "\tP4@547123"; // TEMP, will be refactored in the follow up refactor var commitData = new CommitDataManager(() => new GitModule("")).CreateFromFormatedData(rawData); var commitInformation = CommitInformation.GetCommitInfo(commitData, linkFactory, true); Assert.AreEqual(expectedHeader, commitInformation.Header); Assert.AreEqual(expectedBody, commitInformation.Body); }
public void CanCreateCommitInformationFromFormatedData() { var commitGuid = Guid.NewGuid(); var treeGuid = Guid.NewGuid(); var parentGuid1 = Guid.NewGuid().ToString(); var parentGuid2 = Guid.NewGuid().ToString(); var authorTime = DateTime.UtcNow.AddDays(-3); var commitTime = DateTime.UtcNow.AddDays(-2); var authorUnixTime = (int)(authorTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds; var commitUnixTime = (int)(commitTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds; var rawData = commitGuid + "\n" + treeGuid + "\n" + parentGuid1 + " " + parentGuid2 + "\n" + "John Doe (Acme Inc) <*****@*****.**>\n" + authorUnixTime + "\n" + "Jane Doe (Acme Inc) <*****@*****.**>\n" + commitUnixTime + "\n" + "\n" + "\tI made a really neato change.\n\n" + "Notes (p4notes):\n" + "\tP4@547123"; var expectedHeader = "Author:\t\t<a href='mailto:[email protected]'>John Doe (Acme Inc) <[email protected]></a>" + Environment.NewLine + "Author date:\t3 days ago (" + authorTime.ToLocalTime().ToString("ddd MMM dd HH':'mm':'ss yyyy") + ")" + Environment.NewLine + "Committer:\t<a href='mailto:[email protected]'>Jane Doe (Acme Inc) <[email protected]></a>" + Environment.NewLine + "Commit date:\t2 days ago (" + commitTime.ToLocalTime().ToString("ddd MMM dd HH':'mm':'ss yyyy") + ")" + Environment.NewLine + "Commit hash:\t" + commitGuid + Environment.NewLine + "Parent(s):\t<a href='gitex://gotocommit/" + parentGuid1 + "'>" + parentGuid1.Substring(0, 10) + "</a> <a href='gitex://gotocommit/" + parentGuid2 + "'>" + parentGuid2.Substring(0, 10) + "</a>"; var expectedBody = "\n\nI made a really neato change." + Environment.NewLine + Environment.NewLine + "Notes (p4notes):" + Environment.NewLine + "\tP4@547123\n\n"; var commitData = CommitData.CreateFromFormatedData(rawData, new GitModule("")); var commitInformation = CommitInformation.GetCommitInfo(commitData); Assert.AreEqual(expectedHeader, commitInformation.Header); Assert.AreEqual(expectedBody, commitInformation.Body); }
private void Initialize() { Branches.DisplayMember = "Name"; if (_containRevison == null) { if (LocalBranch.Checked) { Branches.DataSource = GitModule.Current.GetHeads(false).Select(a => a.Name).ToList(); } else { var heads = GitModule.Current.GetHeads(true, true); var remoteHeads = new List <GitHead>(); foreach (var head in heads) { if (head.IsRemote && !head.IsTag) { remoteHeads.Add(head); } } Branches.DataSource = remoteHeads.Select(a => a.Name).ToList(); } } else { var branches = CommitInformation .GetAllBranchesWhichContainGivenCommit(_containRevison, LocalBranch.Checked, !LocalBranch.Checked) .Where(a => !a.Equals("(no branch)", StringComparison.OrdinalIgnoreCase)); Branches.DataSource = branches.ToList(); } Branches.Text = null; remoteOptionsPanel.Visible = Remotebranch.Checked; rbCreateBranch.Checked = Settings.CreateLocalBranchForRemote; }
public void CanCreateCommitInformationFromRawData() { var commitGuid = Guid.NewGuid(); var treeGuid = Guid.NewGuid(); var parentGuid1 = Guid.NewGuid(); var parentGuid2 = Guid.NewGuid(); var authorTime = DateTime.UtcNow.AddDays(-3); var commitTime = DateTime.UtcNow.AddDays(-2); var authorUnixTime = (int)(authorTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds; var commitUnixTime = (int)(commitTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds; var rawData = "commit " + commitGuid + "\n" + "tree " + treeGuid + "\n" + "parent " + parentGuid1 + "\n" + "parent " + parentGuid2 + "\n" + "author John Doe (Acme Inc) <*****@*****.**> " + authorUnixTime + " +0100\n" + "committer Jane Doe (Acme Inc) <*****@*****.**> " + commitUnixTime + " +0200\n\n" + "\tI made a really neato change.\n\n" + "Notes (p4notes):\n" + "\tP4@547123"; var expectedHeader = "Author:\tJohn Doe (Acme Inc) <*****@*****.**>\n" + "Author date:\t3 days ago (" + authorTime.ToLocalTime().ToString("ddd MMM dd HH':'mm':'ss yyyy") + ")\n" + "Committer:\tJane Doe (Acme Inc) <*****@*****.**>\n" + "Commit date:\t2 days ago (" + commitTime.ToLocalTime().ToString("ddd MMM dd HH':'mm':'ss yyyy") + ")\n" + "Commit hash:\t" + commitGuid; var expectedBody = "\n\nI made a really neato change.\n\n" + "Notes (p4notes):\n" + "\tP4@547123\n\n"; var commitInformation = CommitInformation.CreateFromRawData(rawData); Assert.AreEqual(expectedHeader, commitInformation.Header); Assert.AreEqual(expectedBody, commitInformation.Body); }
public void should_to_string_valid_format() { CommitInformation commitInformation = new CommitInformation { Hash = "HelloWorld", AddTime = DateTime.UtcNow, CommitTime = DateTime.UtcNow, Comment = "Fix Jt", StoryNumber = "8888", Devs = new List <string> { "zhangsan", "lisi" }, TestFileList = new HashSet <string> { "/Test/Tiger-Core-Test/ResourceTests/MyMobilitySpec/ImmigrationMissingInfo/when_get_immigration_missing_info.cs", "/Test/Tiger-Contract-Test-By-Consumer/myMobilityApps/ImmigrationMissingInformationFacts.cs" } }; string result = "Hash:" + commitInformation.Hash + "\nAddTime:" + commitInformation.AddTime + "\nCommitTime:" + commitInformation.CommitTime + "\n" + "Devs:" + string.Join(",", commitInformation.Devs.ToArray()) + "\nStoryNumber:" + commitInformation.StoryNumber + "\nComment:" + commitInformation.Comment + "\n" + "TestFileList:\n\t" + string.Join("\n\t", commitInformation.TestFileList.ToArray()); Assert.Equal(result, commitInformation.ToString()); }
public void CanCreateCommitInformationFromFormatedDataThrowsException() { CommitInformation.GetCommitInfo(null, new LinkFactory(), true); }
public void CanCreateCommitInformationFromFormatedDataThrowsException() { Assert.Throws <ArgumentNullException>(() => CommitInformation.GetCommitInfo(null, new LinkFactory(), true)); }
public void CanCreateCommitInformationFromFormatedDataThrowsException() { CommitInformation.GetCommitInfo(data: null); }
public void CanCreateCommitInformationFromFormatedDataThrowsException() { CommitInformation.GetCommitInfo(new GitModule(""), null, true); }
public void GetCommitInfoTestWhenDataIsNull() { var actualResult = CommitInformation.GetCommitInfo(new GitModule(""), "fakesha1"); Assert.AreEqual("Cannot find commit fakesha1", actualResult.Header); }