Exemplo n.º 1
0
        /// <summary>
        /// Passes the open request to the current issue repository if available,
        /// otherwise tries to open web browser base on project settings
        /// </summary>
        /// <param name="issueId">Issue Id</param>
        public void OpenIssue(string issueId)
        {
            if (string.IsNullOrEmpty(issueId))
            {
                throw new ArgumentNullException("issueId");
            }

            IssueRepository repository = CurrentIssueRepository;

            if (repository != null)
            {
                try
                {
                    repository.NavigateTo(issueId);
                    return;
                }
                catch { } // connector code
            }

            IAnkhWebBrowser web = GetService <IAnkhWebBrowser>();

            if (web != null)
            {
                Uri uri = CommitSettings.GetIssueTrackerUri(issueId);

                if (uri != null && !uri.IsFile && !uri.IsUnc)
                {
                    web.Navigate(uri);
                }
            }
        }
Exemplo n.º 2
0
        public void OpenRevision(string revisionText)
        {
            if (string.IsNullOrEmpty(revisionText))
            {
                throw new ArgumentNullException("revisionText");
            }

            long rev;

            IssueRepository repository = CurrentIssueRepository;

            if (repository != null &&
                repository.CanNavigateToRevision &&
                long.TryParse(revisionText, out rev))
            {
                try
                {
                    repository.NavigateToRevision(rev);
                    return;
                }
                catch { } // connector code
            }

            IAnkhWebBrowser web = GetService <IAnkhWebBrowser>();

            if (web != null)
            {
                Uri uri = CommitSettings.GetRevisionUri(revisionText);
                if (uri != null && !uri.IsFile && !uri.IsUnc)
                {
                    web.Navigate(uri);
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Gets issue ids from project commit settings
        /// </summary>
        private IEnumerable <TextMarker> GetRevisionsFromCommitSettings(string text)
        {
            if (CommitSettings == null)
            {
                yield break;
            }

            foreach (TextMarker rev in CommitSettings.GetRevisions(text))
            {
                yield return(rev);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Gets issue ids from project commit settings
        /// </summary>
        private IEnumerable <TextMarker> GetIssuesFromCommitSettings(string text)
        {
            if (CommitSettings == null)
            {
                yield break;
            }

            foreach (TextMarker issue in CommitSettings.GetIssues(text))
            {
                yield return(issue);
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Verifies if the log message is valid for the current policy
        /// </summary>
        /// <param name="state">The state.</param>
        /// <returns></returns>
        private bool PreCommit_VerifyLogMessage(PendingCommitState state)
        {
            if (state.LogMessage == null)
            {
                return(true); // Skip checks
            }
            // And after checking whether the message is valid: Normalize the message the way the CLI would
            // * No whitespace at the end of lines
            // * Always a newline at the end

            StringBuilder sb = new StringBuilder();

            foreach (string line in state.LogMessage.Replace("\r", "").Split('\n'))
            {
                sb.AppendLine(line.TrimEnd());
            }

            string msg = sb.ToString();

            // no need to check for issue id if issue tracker integration already did it.
            if (CommitSettings.WarnIfNoIssue && !state.SkipIssueVerify)
            {
                bool haveIssue = false;
                // Use the project commit settings class to add an issue number (if available)

                if (CommitSettings.ShowIssueBox && !string.IsNullOrEmpty(state.IssueText))
                {
                    haveIssue = true;
                }

                IEnumerable <TextMarker> markers;
                if (!haveIssue &&
                    !string.IsNullOrEmpty(state.LogMessage) &&
                    IssueService.TryGetIssues(state.LogMessage, out markers) &&
                    !EnumTools.IsEmpty(markers))
                {
                    haveIssue = true;
                }

                if (!haveIssue &&
                    state.MessageBox.Show(PccStrings.NoIssueNumber, "",
                                          MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
                {
                    return(false);
                }
            }
            msg = CommitSettings.BuildLogMessage(msg, state.IssueText);

            // And make sure the log message ends with a single newline
            state.LogMessage = msg.TrimEnd() + Environment.NewLine;

            return(true); // Logmessage always ok for now
        }