private void ConflictedFiles_DoubleClick(object sender, EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
if (ConflictedFiles.SelectedRows.Count != 1)
return;
string filename = GetFileName();
string[] filenames = GitCommands.GitCommands.GetConflictedFiles(filename);
if (Directory.Exists(Settings.WorkingDir + filename) && !File.Exists(Settings.WorkingDir + filename))
{
/* BEGIN REPLACED WITH FASTER, BUT DIRTIER SUBMODULE CHECK
IList<IGitSubmodule> submodules = (new GitCommands.GitCommands()).GetSubmodules();
foreach (IGitSubmodule submodule in submodules)
{
if (submodule.LocalPath.Equals(filename))
{
if (MessageBox.Show(mergeConflictIsSubmodule.Text, mergeConflictIsSubmoduleCaption.Text, MessageBoxButtons.YesNo) == DialogResult.Yes)
{
stageFile(filename);
Initialize();
}
return;
}
}*/
ConfigFile submoduleConfig = new ConfigFile(Settings.WorkingDir + ".gitmodules");
foreach (ConfigSection configSection in submoduleConfig.GetConfigSections())
{
if (configSection.GetValue("path").Trim().Equals(filename.Trim()))
{
if (MessageBox.Show(mergeConflictIsSubmodule.Text, mergeConflictIsSubmoduleCaption.Text, MessageBoxButtons.YesNo) == DialogResult.Yes)
{
stageFile(filename);
Initialize();
}
return;
}
}
//END: REPLACED WITH FASTER, BUT DIRTIER SUBMODULE CHECK
}
bool file1 = File.Exists(filenames[0]);
bool file2 = File.Exists(filenames[1]);
bool file3 = File.Exists(filenames[2]);
string arguments = mergetoolCmd;
if (file1 && file2 && file3)
{
if (FileHelper.IsBinaryFile(filename))
{
if (MessageBox.Show(string.Format(fileIsBinary.Text, mergetool)) == DialogResult.No)
return;
}
arguments = arguments.Replace("$BASE", filenames[0]);
arguments = arguments.Replace("$LOCAL", filenames[1]);
arguments = arguments.Replace("$REMOTE", filenames[2]);
arguments = arguments.Replace("$MERGED", filename + "");
GitCommands.GitCommands.RunCmd(mergetoolPath, "" + arguments + "");
if (MessageBox.Show(askMergeConflictSolved.Text, askMergeConflictSolvedCaption.Text, MessageBoxButtons.YesNo) == DialogResult.Yes)
{
stageFile(filename);
Initialize();
}
}
else
{
FormModifiedDeletedCreated frm = new FormModifiedDeletedCreated();
if ((file1 && file2 && !file3) || (file1 && !file2 && file3))
{
frm.Label.Text = useModifiedOrDeletedFile.Text;
frm.Created.Text = modifiedButton.Text;
}
else
if (!file1)
{
frm.Label.Text = useCreatedOrDeletedFile.Text;
}
else
{
if (File.Exists(filenames[0]))
File.Delete(filenames[0]);
if (File.Exists(filenames[1]))
File.Delete(filenames[1]);
if (File.Exists(filenames[2]))
File.Delete(filenames[2]);
Directory.SetCurrentDirectory(GitCommands.Settings.WorkingDir);
GitCommands.GitCommands.RunRealCmd(GitCommands.Settings.GitCommand, "mergetool \"" + filename + "\"");
Initialize();
return;
}
frm.ShowDialog();
if (frm.Aborted)
{
if (File.Exists(filenames[0]))
File.Delete(filenames[0]);
if (File.Exists(filenames[1]))
File.Delete(filenames[1]);
if (File.Exists(filenames[2]))
File.Delete(filenames[2]);
return;
}
else
if (frm.Delete)
GitCommands.GitCommands.RunCmd(Settings.GitCommand, "rm -- \"" + filename + "\"");
else
if (!frm.Delete)
stageFile(filename);
Initialize();
}
if (File.Exists(filenames[0]))
File.Delete(filenames[0]);
if (File.Exists(filenames[1]))
File.Delete(filenames[1]);
if (File.Exists(filenames[2]))
File.Delete(filenames[2]);
Cursor.Current = Cursors.Default;
}