GetCurrentRevision() public method

public GetCurrentRevision ( ) : GitRevision
return GitRevision
コード例 #1
0
ファイル: RunScript.cs プロジェクト: RodH257/gitextensions
        public RunScript(string script, RevisionGrid RevisionGrid)
        {
            string[] scriptInfo = Settings.GetScript(script);
            string command;
            string argument;

            if (scriptInfo == null)
            {
                command = "cmd";
                argument = "echo \'Cannot find script: " + script + "\'";
            }
            else
            {
                command = scriptInfo[1];
                argument = scriptInfo[2];
            }

            string[] options =
                {
                    "{sTag}",
                    "{sBranch}",
                    "{sLocalBranch}",
                    "{sRemoteBranch}",
                    "{sRemote}",
                    "{sHash}",
                    "{sMessage}",
                    "{sAuthor}",
                    "{sCommitter}",
                    "{sAuthorDate}",
                    "{sCommitDate}",
                    "{cTag}",
                    "{cBranch}",
                    "{cLocalBranch}",
                    "{cRemoteBranch}",
                    "{cHash}",
                    "{cMessage}",
                    "{cAuthor}",
                    "{cCommitter}",
                    "{cAuthorDate}",
                    "{cCommitDate}"
                };

            GitRevision selectedRevision = null;
            GitRevision currentRevision = null;

            var selectedLocalBranches = new List<GitHead>();
            var selectedRemoteBranches = new List<GitHead>();
            var selectedRemotes = new List<string>();
            var selectedBranches = new List<GitHead>();
            var selectedTags = new List<GitHead>();
            var currentLocalBranches = new List<GitHead>();
            var currentRemoteBranches = new List<GitHead>();
            var currentBranches = new List<GitHead>();
            var currentTags = new List<GitHead>();

            foreach (string option in options)
            {
                if (argument.Contains(option))
                {
                    if (option.StartsWith("{s") && selectedRevision == null)
                    {
                        selectedRevision = RevisionGrid.GetRevision(RevisionGrid.LastRow);
                        foreach (GitHead head in selectedRevision.Heads)
                        {
                            if (head.IsTag)
                                selectedTags.Add(head);

                            else if (head.IsHead || head.IsRemote)
                            {
                                selectedBranches.Add(head);
                                if (head.IsRemote)
                                {
                                    selectedRemoteBranches.Add(head);
                                    if (!selectedRemotes.Contains(head.Remote))
                                        selectedRemotes.Add(head.Remote);
                                }
                                else
                                    selectedLocalBranches.Add(head);
                            }
                        }
                    }
                    else if (option.StartsWith("{c") && currentRevision == null)
                    {
                        currentRevision = RevisionGrid.GetCurrentRevision();

                        foreach (GitHead head in currentRevision.Heads)
                        {
                            if (head.IsTag)
                                currentTags.Add(head);
                            else if (head.IsHead || head.IsRemote)
                            {
                                currentBranches.Add(head);
                                if (head.IsRemote)
                                    currentRemoteBranches.Add(head);
                                else
                                    currentLocalBranches.Add(head);
                            }
                        }
                    }

                    switch (option)
                    {
                        case "{sTag}":
                            if (selectedTags.Count == 1)
                                argument = argument.Replace(option, selectedTags[0].Name);
                            else if (selectedTags.Count != 0)
                                argument = argument.Replace(option, askToSpecify(selectedTags, "Selected Revision Tag"));
                            else
                                argument = argument.Replace(option, "");
                            break;
                        case "{sBranch}":
                            if (selectedBranches.Count == 1)
                                argument = argument.Replace(option, selectedBranches[0].Name);
                            else if (selectedBranches.Count != 0)
                                argument = argument.Replace(option,
                                                            askToSpecify(selectedBranches, "Selected Revision Branch"));
                            else
                                argument = argument.Replace(option, "");
                            break;
                        case "{sLocalBranch}":
                            if (selectedLocalBranches.Count == 1)
                                argument = argument.Replace(option, selectedLocalBranches[0].Name);
                            else if (selectedLocalBranches.Count != 0)
                                argument = argument.Replace(option,
                                                            askToSpecify(selectedLocalBranches,
                                                                         "Selected Revision Local Branch"));
                            else
                                argument = argument.Replace(option, "");
                            break;
                        case "{sRemoteBranch}":
                            if (selectedRemoteBranches.Count == 1)
                                argument = argument.Replace(option, selectedRemoteBranches[0].Name);
                            else if (selectedRemoteBranches.Count != 0)
                                argument = argument.Replace(option,
                                                            askToSpecify(selectedRemoteBranches,
                                                                         "Selected Revision Remote Branch"));
                            else
                                argument = argument.Replace(option, "");
                            break;
                        case "{sRemote}":
                            if (selectedRemotes.Count == 1)
                                argument = argument.Replace(option, selectedRemotes[0]);
                            else if (selectedRemotes.Count != 0)
                            {
                                argument = argument.Replace(option,
                                                            askToSpecify(selectedRemotes, "Selected Revision Remote"));
                            }
                            else
                                argument = argument.Replace(option, "");
                            break;
                        case "{sHash}":
                            argument = argument.Replace(option, selectedRevision.Guid);
                            break;
                        case "{sMessage}":
                            argument = argument.Replace(option, selectedRevision.Message);
                            break;
                        case "{sAuthor}":
                            argument = argument.Replace(option, selectedRevision.Author);
                            break;
                        case "{sCommitter}":
                            argument = argument.Replace(option, selectedRevision.Committer);
                            break;
                        case "{sAuthorDate}":
                            argument = argument.Replace(option, selectedRevision.AuthorDate.ToString());
                            break;
                        case "{sCommitDate}":
                            argument = argument.Replace(option, selectedRevision.CommitDate.ToString());
                            break;
                        case "{cTag}":
                            if (currentTags.Count == 1)
                                argument = argument.Replace(option, currentTags[0].Name);
                            else if (currentTags.Count != 0)
                                argument = argument.Replace(option, askToSpecify(currentTags, "Current Revision Tag"));
                            else
                                argument = argument.Replace(option, "");
                            break;
                        case "{cBranch}":
                            if (currentBranches.Count == 1)
                                argument = argument.Replace(option, currentBranches[0].Name);
                            else if (currentBranches.Count != 0)
                                argument = argument.Replace(option,
                                                            askToSpecify(currentBranches, "Current Revision Branch"));
                            else
                                argument = argument.Replace(option, "");
                            break;
                        case "{cLocalBranch}":
                            if (currentLocalBranches.Count == 1)
                                argument = argument.Replace(option, currentLocalBranches[0].Name);
                            else if (currentLocalBranches.Count != 0)
                                argument = argument.Replace(option,
                                                            askToSpecify(currentLocalBranches,
                                                                         "Current Revision Local Branch"));
                            else
                                argument = argument.Replace(option, "");
                            break;
                        case "{cRemoteBranch}":
                            if (currentRemoteBranches.Count == 1)
                                argument = argument.Replace(option, currentRemoteBranches[0].Name);
                            else if (currentRemoteBranches.Count != 0)
                                argument = argument.Replace(option,
                                                            askToSpecify(currentRemoteBranches,
                                                                         "Current Revision Remote Branch"));
                            else
                                argument = argument.Replace(option, "");
                            break;
                        case "{cHash}":
                            argument = argument.Replace(option, currentRevision.Guid);
                            break;
                        case "{cMessage}":
                            argument = argument.Replace(option, currentRevision.Message);
                            break;
                        case "{cAuthor}":
                            argument = argument.Replace(option, currentRevision.Author);
                            break;
                        case "{cCommitter}":
                            argument = argument.Replace(option, currentRevision.Committer);
                            break;
                        case "{cAuthorDate}":
                            argument = argument.Replace(option, currentRevision.AuthorDate.ToString());
                            break;
                        case "{cCommitDate}":
                            argument = argument.Replace(option, currentRevision.CommitDate.ToString());
                            break;
                        default:
                            break;
                    }
                }
            }

            new FormProcess(command, argument).ShowDialog();
        }
コード例 #2
0
ファイル: RunScript.cs プロジェクト: chafnan/gitextensions
        public RunScript(string script, RevisionGrid RevisionGrid)
        {
            string[] scriptInfo = Settings.GetScript(script);
            string   command;
            string   argument;

            if (scriptInfo == null)
            {
                command  = "cmd";
                argument = "echo \'Cannot find script: " + script + "\'";
            }
            else
            {
                command  = scriptInfo[1];
                argument = scriptInfo[2];
            }

            string[] options =
            {
                "{sTag}",
                "{sBranch}",
                "{sLocalBranch}",
                "{sRemoteBranch}",
                "{sRemote}",
                "{sHash}",
                "{sMessage}",
                "{sAuthor}",
                "{sCommitter}",
                "{sAuthorDate}",
                "{sCommitDate}",
                "{cTag}",
                "{cBranch}",
                "{cLocalBranch}",
                "{cRemoteBranch}",
                "{cHash}",
                "{cMessage}",
                "{cAuthor}",
                "{cCommitter}",
                "{cAuthorDate}",
                "{cCommitDate}"
            };

            GitRevision selectedRevision = null;
            GitRevision currentRevision  = null;

            var selectedLocalBranches  = new List <GitHead>();
            var selectedRemoteBranches = new List <GitHead>();
            var selectedRemotes        = new List <string>();
            var selectedBranches       = new List <GitHead>();
            var selectedTags           = new List <GitHead>();
            var currentLocalBranches   = new List <GitHead>();
            var currentRemoteBranches  = new List <GitHead>();
            var currentBranches        = new List <GitHead>();
            var currentTags            = new List <GitHead>();

            foreach (string option in options)
            {
                if (argument.Contains(option))
                {
                    if (option.StartsWith("{s") && selectedRevision == null)
                    {
                        selectedRevision = RevisionGrid.GetRevision(RevisionGrid.LastRow);
                        foreach (GitHead head in selectedRevision.Heads)
                        {
                            if (head.IsTag)
                            {
                                selectedTags.Add(head);
                            }

                            else if (head.IsHead || head.IsRemote)
                            {
                                selectedBranches.Add(head);
                                if (head.IsRemote)
                                {
                                    selectedRemoteBranches.Add(head);
                                    if (!selectedRemotes.Contains(head.Remote))
                                    {
                                        selectedRemotes.Add(head.Remote);
                                    }
                                }
                                else
                                {
                                    selectedLocalBranches.Add(head);
                                }
                            }
                        }
                    }
                    else if (option.StartsWith("{c") && currentRevision == null)
                    {
                        currentRevision = RevisionGrid.GetCurrentRevision();

                        foreach (GitHead head in currentRevision.Heads)
                        {
                            if (head.IsTag)
                            {
                                currentTags.Add(head);
                            }
                            else if (head.IsHead || head.IsRemote)
                            {
                                currentBranches.Add(head);
                                if (head.IsRemote)
                                {
                                    currentRemoteBranches.Add(head);
                                }
                                else
                                {
                                    currentLocalBranches.Add(head);
                                }
                            }
                        }
                    }

                    switch (option)
                    {
                    case "{sTag}":
                        if (selectedTags.Count == 1)
                        {
                            argument = argument.Replace(option, selectedTags[0].Name);
                        }
                        else if (selectedTags.Count != 0)
                        {
                            argument = argument.Replace(option, askToSpecify(selectedTags, "Selected Revision Tag"));
                        }
                        else
                        {
                            argument = argument.Replace(option, "");
                        }
                        break;

                    case "{sBranch}":
                        if (selectedBranches.Count == 1)
                        {
                            argument = argument.Replace(option, selectedBranches[0].Name);
                        }
                        else if (selectedBranches.Count != 0)
                        {
                            argument = argument.Replace(option,
                                                        askToSpecify(selectedBranches, "Selected Revision Branch"));
                        }
                        else
                        {
                            argument = argument.Replace(option, "");
                        }
                        break;

                    case "{sLocalBranch}":
                        if (selectedLocalBranches.Count == 1)
                        {
                            argument = argument.Replace(option, selectedLocalBranches[0].Name);
                        }
                        else if (selectedLocalBranches.Count != 0)
                        {
                            argument = argument.Replace(option,
                                                        askToSpecify(selectedLocalBranches,
                                                                     "Selected Revision Local Branch"));
                        }
                        else
                        {
                            argument = argument.Replace(option, "");
                        }
                        break;

                    case "{sRemoteBranch}":
                        if (selectedRemoteBranches.Count == 1)
                        {
                            argument = argument.Replace(option, selectedRemoteBranches[0].Name);
                        }
                        else if (selectedRemoteBranches.Count != 0)
                        {
                            argument = argument.Replace(option,
                                                        askToSpecify(selectedRemoteBranches,
                                                                     "Selected Revision Remote Branch"));
                        }
                        else
                        {
                            argument = argument.Replace(option, "");
                        }
                        break;

                    case "{sRemote}":
                        if (selectedRemotes.Count == 1)
                        {
                            argument = argument.Replace(option, selectedRemotes[0]);
                        }
                        else if (selectedRemotes.Count != 0)
                        {
                            argument = argument.Replace(option,
                                                        askToSpecify(selectedRemotes, "Selected Revision Remote"));
                        }
                        else
                        {
                            argument = argument.Replace(option, "");
                        }
                        break;

                    case "{sHash}":
                        argument = argument.Replace(option, selectedRevision.Guid);
                        break;

                    case "{sMessage}":
                        argument = argument.Replace(option, selectedRevision.Message);
                        break;

                    case "{sAuthor}":
                        argument = argument.Replace(option, selectedRevision.Author);
                        break;

                    case "{sCommitter}":
                        argument = argument.Replace(option, selectedRevision.Committer);
                        break;

                    case "{sAuthorDate}":
                        argument = argument.Replace(option, selectedRevision.AuthorDate.ToString());
                        break;

                    case "{sCommitDate}":
                        argument = argument.Replace(option, selectedRevision.CommitDate.ToString());
                        break;

                    case "{cTag}":
                        if (currentTags.Count == 1)
                        {
                            argument = argument.Replace(option, currentTags[0].Name);
                        }
                        else if (currentTags.Count != 0)
                        {
                            argument = argument.Replace(option, askToSpecify(currentTags, "Current Revision Tag"));
                        }
                        else
                        {
                            argument = argument.Replace(option, "");
                        }
                        break;

                    case "{cBranch}":
                        if (currentBranches.Count == 1)
                        {
                            argument = argument.Replace(option, currentBranches[0].Name);
                        }
                        else if (currentBranches.Count != 0)
                        {
                            argument = argument.Replace(option,
                                                        askToSpecify(currentBranches, "Current Revision Branch"));
                        }
                        else
                        {
                            argument = argument.Replace(option, "");
                        }
                        break;

                    case "{cLocalBranch}":
                        if (currentLocalBranches.Count == 1)
                        {
                            argument = argument.Replace(option, currentLocalBranches[0].Name);
                        }
                        else if (currentLocalBranches.Count != 0)
                        {
                            argument = argument.Replace(option,
                                                        askToSpecify(currentLocalBranches,
                                                                     "Current Revision Local Branch"));
                        }
                        else
                        {
                            argument = argument.Replace(option, "");
                        }
                        break;

                    case "{cRemoteBranch}":
                        if (currentRemoteBranches.Count == 1)
                        {
                            argument = argument.Replace(option, currentRemoteBranches[0].Name);
                        }
                        else if (currentRemoteBranches.Count != 0)
                        {
                            argument = argument.Replace(option,
                                                        askToSpecify(currentRemoteBranches,
                                                                     "Current Revision Remote Branch"));
                        }
                        else
                        {
                            argument = argument.Replace(option, "");
                        }
                        break;

                    case "{cHash}":
                        argument = argument.Replace(option, currentRevision.Guid);
                        break;

                    case "{cMessage}":
                        argument = argument.Replace(option, currentRevision.Message);
                        break;

                    case "{cAuthor}":
                        argument = argument.Replace(option, currentRevision.Author);
                        break;

                    case "{cCommitter}":
                        argument = argument.Replace(option, currentRevision.Committer);
                        break;

                    case "{cAuthorDate}":
                        argument = argument.Replace(option, currentRevision.AuthorDate.ToString());
                        break;

                    case "{cCommitDate}":
                        argument = argument.Replace(option, currentRevision.CommitDate.ToString());
                        break;

                    default:
                        break;
                    }
                }
            }

            new FormProcess(command, argument).ShowDialog();
        }