コード例 #1
0
        private void FormatPatch_Click(object sender, EventArgs e)
        {
            if (SaveToDir.Checked && string.IsNullOrEmpty(OutputPath.Text))
            {
                MessageBox.Show("You need to enter an output path.");
                return;
            }

            if (!SaveToDir.Checked && string.IsNullOrEmpty(MailAddress.Text))
            {
                MessageBox.Show("You need to enter an email address.");
                return;
            }

            if (!SaveToDir.Checked && string.IsNullOrEmpty(MailSubject.Text))
            {
                MessageBox.Show("You need to enter a mail subject.");
                return;
            }

            if (!SaveToDir.Checked && string.IsNullOrEmpty(Settings.Smtp))
            {
                MessageBox.Show("You need to enter a valid smtp in the settings dialog.");
                return;
            }

            string savePatchesToDir = OutputPath.Text;

            if (!SaveToDir.Checked)
            {
                savePatchesToDir = Settings.WorkingDirGitDir() + "\\PatchesToMail";
                if (Directory.Exists(savePatchesToDir))
                {
                    foreach (string file in Directory.GetFiles(savePatchesToDir, "*.patch"))
                    {
                        File.Delete(file);
                    }
                }
                else
                {
                    Directory.CreateDirectory(savePatchesToDir);
                }
            }

            string rev1   = "";
            string rev2   = "";
            string result = "";

            if (RevisionGrid.GetRevisions().Count > 0)
            {
                if (RevisionGrid.GetRevisions().Count == 1)
                {
                    rev1   = RevisionGrid.GetRevisions()[0].ParentGuids[0];
                    rev2   = RevisionGrid.GetRevisions()[0].Guid;
                    result = GitCommandHelpers.FormatPatch(rev1, rev2, savePatchesToDir);
                }

                if (RevisionGrid.GetRevisions().Count == 2)
                {
                    rev1   = RevisionGrid.GetRevisions()[0].ParentGuids[0];
                    rev2   = RevisionGrid.GetRevisions()[1].Guid;
                    result = GitCommandHelpers.FormatPatch(rev1, rev2, savePatchesToDir);
                }

                if (RevisionGrid.GetRevisions().Count > 2)
                {
                    int n = 0;
                    foreach (GitRevision revision in RevisionGrid.GetRevisions())
                    {
                        n++;
                        rev1    = revision.ParentGuids[0];
                        rev2    = revision.Guid;
                        result += GitCommandHelpers.FormatPatch(rev1, rev2, savePatchesToDir, n);
                    }
                }
            }
            else
            if (string.IsNullOrEmpty(rev1) || string.IsNullOrEmpty(rev2))
            {
                MessageBox.Show("You need to select 2 revisions", "Patch error");
                return;
            }

            if (!SaveToDir.Checked)
            {
                if (SendMail(savePatchesToDir))
                {
                    result += "\n\nSend to: " + MailAddress.Text;
                }
                else
                {
                    result += "\n\nFailed to send mail.";
                }


                //Clean up
                if (Directory.Exists(savePatchesToDir))
                {
                    foreach (string file in Directory.GetFiles(savePatchesToDir, "*.patch"))
                    {
                        File.Delete(file);
                    }
                }
            }

            MessageBox.Show(result, "Patch result");
            Close();
        }